templates/layout.html.twig line 1

Open in your IDE?
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <title>{% block title %}{% endblock %} | Espace Pro Outback Import</title>
  5.         {% include 'head.html.twig' %}
  6.         <script src="{{ asset('js_ep/jquery.min.js') }}"></script>
  7.         <link href="/bootstrap/bower_components/datatables-responsive/css/dataTables.responsive.css" rel="stylesheet">
  8.         <link href="/bootstrap/bower_components/datatables-responsive/css/dataTables.responsive.css" rel="stylesheet">
  9.         <script src="/js/datatable/jquery.dataTables.min.js"></script>
  10.         <script src="/js/datatable/dataTables.bootstrap.min.js"></script>
  11.         <script src="/js/datatable/dataTables.buttons.min.js"></script>
  12.         <script src="/js/datatable/buttons.flash.min.js"></script>
  13.         <script src="/js/datatable/jszip.min.js"></script>
  14.         <script src="/js/datatable/pdfmake.min.js"></script>
  15.         <script src="/js/datatable/vfs_fonts.js"></script>
  16.         <script src="/js/datatable/buttons.html5.min.js"></script>
  17.         <script src="/js/datatable/buttons.print.min.js"></script>
  18.         <script src="{{ asset('js_ep/bootstrap.bundle.min.js') }}"></script>
  19.         <!-- FastClick -->
  20.         <script src="{{ asset('js_ep/fastclick.js') }}"></script>
  21.         <!-- NProgress -->
  22.         <script src="{{ asset('js_ep/nprogress.js') }}"></script>
  23.         <!-- Chart.js -->
  24.         <script src="{{ asset('js_ep/Chart.min.js') }}"></script>
  25.         <!-- gauge.js -->
  26.         <script src="{{ asset('js_ep/gauge.min.js') }}"></script>
  27.         <!-- bootstrap-progressbar -->
  28.         <script src="{{ asset('js_ep/bootstrap-progressbar.min.js') }}"></script>
  29.         <!-- iCheck -->
  30.         <script src="{{ asset('js_ep/icheck.min.js') }}"></script>
  31.         <!-- Skycons -->
  32.         <script src="{{ asset('js_ep/skycons.js') }}"></script>
  33.         <!-- Flot -->
  34.         <script src="{{ asset('js_ep/jquery.flot.js') }}"></script>
  35.         <script src="{{ asset('js_ep/jquery.flot.pie.js') }}"></script>
  36.         <script src="{{ asset('js_ep/jquery.flot.time.js') }}"></script>
  37.         <script src="{{ asset('js_ep/jquery.flot.stack.js') }}"></script>
  38.         <script src="{{ asset('js_ep/jquery.flot.resize.js') }}"></script>
  39.         <!-- Flot plugins -->
  40.         <script src="{{ asset('js_ep/jquery.flot.orderBars.js') }}"></script>
  41.         <script src="{{ asset('js_ep/jquery.flot.spline.min.js') }}"></script>
  42.         <script src="{{ asset('js_ep/curvedLines.js') }}"></script>
  43.         <!-- DateJS -->
  44.         <script src="{{ asset('js_ep/date.js') }}"></script>
  45.         <!-- JQVMap -->
  46.         <script src="{{ asset('js_ep/jquery.vmap.js') }}"></script>
  47.         <script src="{{ asset('js_ep/jquery.vmap.world.js') }}"></script>
  48.         <script src="{{ asset('js_ep/jquery.vmap.sampledata.js') }}"></script>
  49.         <!-- bootstrap-daterangepicker -->
  50.         <script src="{{ asset('js_ep/moment.min.js') }}"></script>
  51.         <script src="{{ asset('js_ep/daterangepicker.js') }}"></script>
  52.         <!-- Switchery -->
  53.         <script src="{{ asset('js_ep/switchery.min.js') }}"></script>
  54.         <script src="{{ asset('js_ep/swiper-bundle.min.js') }}"></script>
  55.         <script src="{{ asset('bundles/fosjsrouting/js/router.min.js') }}"></script>
  56.         <script type="text/javascript">
  57.             const routes = {{ source('@var_directory/fosjsrouter/fos_js_routes.json') }};
  58.             Routing.setRoutingData(routes);
  59.         </script>
  60.         <script src="{{ asset('js_ep/select2.min.js') }}"></script>
  61.         {# <link href="/dev.css" rel="stylesheet">#}
  62.     </head>
  63.     <body class="nav-md page-index _invisible-scrollbar ">
  64.         {% set current_path = app.request.attributes.get('_route') %}
  65.         <div class="container body">
  66.             <div class="main_container">
  67.             {% if current_path != "login" and current_path != "reset_password" or 1==1 %}
  68.                 {% include 'FO/FO/menu.html.twig' %}
  69.             {% endif %}
  70.             {% block body %}
  71.             {% endblock %}
  72.             </div>
  73.         </div>
  74.         {% if current_path != "login" and current_path != "reset_password"  %}
  75.             <!-- footer content -->
  76.             <footer>
  77.                 <div class="pull-right">
  78.                     Outback Import - <i class="fa fa-copyright"></i> {{ "now"|date("Y") }} - Tous droits réservés
  79.                 </div>
  80.                 <div class="clearfix"></div>
  81.             </footer>
  82.             <!-- /footer content -->
  83.         {% endif %}
  84.         {% block fos_user_content %}
  85.         {% endblock fos_user_content %}
  86.         <!-- Modal -->
  87.         <div class="modal _fade" id="searchModal"  role="dialog" aria-labelledby="searchModal" aria-hidden="true" data-backdrop="static" data-keyboard="false">
  88.             <div class="modal-dialog">
  89.                 <div class="modal-content _table-responsive">
  90.                     <div class="modal-header" style="background-color: whitesmoke;">
  91.                         <h5 id="modal-titre-search" class="modal-title">Recherche</h5>
  92.                         <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  93.                             <span aria-hidden="true">×</span>
  94.                         </button>
  95.                     </div>
  96.                     <div id="conteneur-modal-search">
  97.                         <div class="modal-body">
  98.                             <div id="searchAccordion">
  99.                                 <!-- Recherche simple -->
  100.                                 <div>
  101.                                     <button class="dark btn btn-link btn-block text-left d-flex justify-content-between align-items-center p-0"
  102.                                             data-toggle="collapse" data-target="#collapseSimple" aria-expanded="false" aria-controls="collapseSimple">
  103.                                         <span><i class="fa fa-search mr-2"></i>Recherche rapide</span>
  104.                                         <i class="fa fa-chevron-right"></i>
  105.                                     </button>
  106.                                     <div id="collapseSimple" class="collapse" data-parent="#searchAccordion">
  107.                                         <div class="mt-2">
  108.                                             <div id="dtc_article_recherche_top_mobile_select2_conteneur" style="padding-top:5px;">
  109.                                                 <select style="width:100%;" id="dtc_article_recherche_top_mobile_select2"></select>
  110.                                             </div>
  111.                                         </div>
  112.                                     </div>
  113.                                 </div>
  114.                                 <script>
  115.                                     $(document).ready(function(){
  116.                                         $('#collapseSimple').on('shown.bs.collapse', function () {
  117.                                             $selectMobileArticleRechercheTop.select2('open');
  118.                                         });
  119.                                         $selectMobileArticleRechercheTop = $("#dtc_article_recherche_top_mobile_select2").select2({
  120.                                             ajax: {
  121.                                                 url: Routing.generate('dtc_article_recherche'),
  122.                                                 dataType: 'json',
  123.                                                 delay: 250,
  124.                                                 data: function (params) { return {  q: params.term,page: params.page}; },
  125.                                                 processResults: function (data, params) {
  126.                                                     params.page = params.page || 1;
  127.                                                     return {  results: data.items,  pagination: { more: (params.page * 10) < data.total_count }};},
  128.                                                 cache: true
  129.                                             },
  130.                                             escapeMarkup: function (markup) { return markup; },minimumInputLength: 0,
  131.                                             templateResult:formatRepoSelect2RechercheTop,
  132.                                             templateSelection: formatRepoSelect2RechercheTopSelection,
  133.                                             minimumInputLength: 3,
  134.                                             placeholder: 'Rechercher un produit, une référence.',
  135.                                             language: {
  136.                                                 inputTooShort: function(args) {
  137.                                                     var remainingChars = args.minimum - args.input.length;
  138.                                                     return 'Merci de saisir au moins ' + args.minimum + ' caractères';
  139.                                                 },
  140.                                                 searching: function() {
  141.                                                     return "Recherche en cours…"; // ton texte personnalisé
  142.                                                 },
  143.                                                 noResults: function() {
  144.                                                     return "Aucun résultat trouvé";
  145.                                                 },
  146.                                                 errorLoading: function () {
  147.                                                     return "Les résultats n'ont pas pu être chargés.";
  148.                                                 }
  149.                                             },
  150.                                         });
  151.                                         var isEnterKey = false;
  152.                                         var url_fiche_produit_select2 = "";
  153.                                         $('#dtc_article_recherche_top_mobile_select2').on('select2:open', function(e) {
  154.                                             // On récupère l'input de recherche interne du dropdown
  155.                                             let searchField = $('.select2-container--open .select2-search__field');
  156.                                             // On retire tout ancien handler keydown pour éviter les doublons
  157.                                             searchField.off('keydown').on('keydown', function(e) {
  158.                                                 if (e.key === "Enter" || e.keyCode === 13) {
  159.                                                     e.preventDefault(); // empêche la sélection par défaut
  160.                                                     isEnterKey = true;
  161.                                                     let userInput = $(this).val();
  162.                                                     if (url_fiche_produit_select2 === "") {
  163.                                                         var url = Routing.generate('dtc_article_liste', {mc: userInput});
  164.                                                         window.location.href = url;
  165.                                                         e.stopImmediatePropagation();
  166.                                                     }
  167.                                                     return false;
  168.                                                 }
  169.                                             });
  170.                                         });
  171.                                         $("#dtc_article_recherche_top_mobile_select2").on('change', function(e) {
  172.                                             if (isEnterKey) {
  173.                                             } else {
  174.                                                 var valeur = $(this).val();
  175.                                                 var url = Routing.generate('dtc_article_afficher', {id: valeur});
  176.                                                 url_fiche_produit_select2 = url;
  177.                                                 window.location.href = url;
  178.                                                 e.stopImmediatePropagation();
  179.                                                 return false;
  180.                                             }
  181.                                             isEnterKey = false;
  182.                                         });
  183.                                     });
  184.                                 </script>
  185.                                 <script src="{{ asset('js_ep/moteur_recherche_article_mobile.js') }}"></script>
  186.                                 <script>
  187.                                     $(document).ready(function(){
  188.                                         {% if parametres.mv is defined and parametres.mv != "" and parametres.mv != "0"  %}
  189.                                         var initialData = { id: {{parametres.mv}}, text: "{{parametres.mv_l}}", libelle: "{{parametres.mv_l}}" };
  190.                                         {% else %}
  191.                                         var initialData = { id: 0, text: "Marque", text: "Marque" };
  192.                                         {% endif %}
  193.                                         var option = new Option(initialData.text, initialData.id, true, true);
  194.                                         $selectMobileMarqueVehicule.append(option).trigger('change');
  195.                                         {% if parametres.mov is defined and parametres.mov != "" and parametres.mov != "0"  %}
  196.                                         var initialData = { id: {{parametres.mov}}, text: "{{parametres.mov_l}}" };
  197.                                         {% else %}
  198.                                         var initialData = { id: 0, text: "Modèle"};
  199.                                         {% endif %}
  200.                                         var option = new Option(initialData.text, initialData.id, true, true);
  201.                                         $selectMobileModeleVehicule.append(option).trigger('change');
  202.                                         {% if parametres.tv is defined and parametres.tv != "" and parametres.tv != "0" %}
  203.                                         var initialData = { id: {{parametres.tv}}, text: "{{parametres.tv_l}}" };
  204.                                         {% else %}
  205.                                         var initialData = { id: 0, text: "Type"};
  206.                                         {% endif %}
  207.                                         var option = new Option(initialData.text, initialData.id, true, true);
  208.                                         $selectMobileTypeVehicule.append(option).trigger('change');
  209.                                         {% if parametres.m is defined and parametres.m != "" and parametres.m != "0" %}
  210.                                         var initialData = { id: {{parametres.m}}, text: "{{parametres.m_l}}" };
  211.                                         {% else %}
  212.                                         var initialData = { id: 0, text: "Marque" };
  213.                                         {% endif %}
  214.                                         var option = new Option(initialData.text, initialData.id, true, true);
  215.                                         $selectMobileMarqueArticle.append(option).trigger('change');
  216.                                         {% if parametres.c is defined and parametres.c != "" and parametres.c != "0" %}
  217.                                         var initialData = { id: {{parametres.c}},  text: "{{parametres.c_l}}" };
  218.                                         {% else %}
  219.                                         var initialData = { id: 0, text: "Catégorie" };
  220.                                         {% endif %}
  221.                                         var option = new Option(initialData.text, initialData.id, true, true);
  222.                                         $selectMobileCategorieArticle.append(option).trigger('change');
  223.                                         {% if parametres.cn2 is defined and parametres.cn2 != "" and parametres.cn2 != "0" %}
  224.                                         var initialData = { id: {{parametres.cn2}}, text: "{{parametres.cn2_l}}" };
  225.                                         {% else %}
  226.                                         var initialData = { id: 0, text: "Catégorie N2" };
  227.                                         {% endif %}
  228.                                         var option = new Option(initialData.text, initialData.id, true, true);
  229.                                         $selectMobileCategorieArticleN2.append(option).trigger('change');
  230.                                         {% if parametres.cn3 is defined and parametres.cn3 != "" and parametres.cn3 != "0" %}
  231.                                         var initialData = { id: {{parametres.cn3}}, text: "{{parametres.cn3_l}}" };
  232.                                         {% else %}
  233.                                         var initialData = { id: 0, text: "Catégorie N3" };
  234.                                         {% endif %}
  235.                                         var option = new Option(initialData.text, initialData.id, true, true);
  236.                                         $selectMobileCategorieArticleN3.append(option).trigger('change');
  237.                                     });
  238.                                 </script>
  239.                                 <!-- Recherche avancée -->
  240.                                 <div class="mt-3">
  241.                                     <button class="dark btn btn-link btn-block text-left d-flex justify-content-between align-items-center p-0"
  242.                                             data-toggle="collapse" data-target="#collapseAdvanced" aria-expanded="false" aria-controls="collapseAdvanced">
  243.                                         <span><i class="fa fa-search-plus mr-2"></i>Recherche avancée</span>
  244.                                         <i class="fa fa-chevron-right"></i>
  245.                                     </button>
  246.                                     <div id="collapseAdvanced" class="collapse" data-parent="#searchAccordion">
  247.                                         <div class="recherche_catalogue _mt-2">
  248.                                             <form id="searchForm" method="GET" action="/catalogue" style="padding-bottom:20px;">
  249.                                                 <div class="form-container">
  250.                                                     <!-- Colonne gauche -->
  251.                                                     <div class="form-column">
  252.                                                         <div class="_off column-title"><i class="fa fa-car"></i> Véhicule</div>
  253.                                                         <div class="form-group">
  254.                                                             {# <label for="marque">Marque</label> #}
  255.                                                             <input type="hidden" id="mv_l" name="mv_l" value="{% if parametres.mv_l is defined and parametres.mv_l != ""  %}{{ parametres.mv_l }}{% endif %}">
  256.                                                             <select id="dtc_marque_vehicule_select2_mobile" class="form-control" name="mv"></select>
  257.                                                         </div>
  258.                                                         <div class="form-group">
  259.                                                             {# <label for="modele">Modèle</label> #}
  260.                                                             <input type="hidden" id="mov_l" name="mov_l" value="{% if parametres.mv_l is defined and parametres.mv_l != ""  %}{{ parametres.mv_l }}{% endif %}">
  261.                                                             <select class="form-control" id="dtc_modele_vehicule_select2_mobile" name="mov"></select>
  262.                                                         </div>
  263.                                                         <div class="form-group">
  264.                                                             {#  <label for="type">Type</label> #}
  265.                                                             <input type="hidden" id="tv_l" name="tv_l" value="{% if parametres.tv_l is defined and parametres.tv_l != ""  %}{{ parametres.tv_l }}{% endif %}">
  266.                                                             <select class="form-control" id="dtc_type_vehicule_select2_mobile" name="tv"></select>
  267.                                                         </div>
  268.                                                         <!-- Boutons centrés sous la barre -->
  269.                                                         <div class="btn-recherche-catalogue-default btn-container">
  270.                                                             <button style="width:100%;" type="submit" class="btn btn-success"><i class="fa fa-search"></i> Lancer la recherche </button>
  271.                                                         </div>
  272.                                                     </div>
  273.                                                     <!-- Colonne droite -->
  274.                                                     <div class="form-column">
  275.                                                         <div class="_off column-title"><i class="fa fa-bars"></i> Catégories</div>
  276.                                                         <div class="form-group">
  277.                                                             <input type="hidden" id="c_l" name="c_l" value="{% if parametres.c_l is defined and parametres.c_l != ""  %}{{ parametres.c_l }}{% endif %}">
  278.                                                             <select class="form-control" id="dtc_categorie_article_n1_select2_mobile" name="c"></select>
  279.                                                         </div>
  280.                                                         <div class="form-group">
  281.                                                             <input type="hidden" id="cn2_l" name="cn2_l" value="{% if parametres.cn2_l is defined and parametres.cn2_l != ""  %}{{ parametres.cn2_l }}{% endif %}">
  282.                                                             <select class="form-control" id="dtc_categorie_article_n2_select2_mobile" name="cn2"></select>
  283.                                                         </div>
  284.                                                         <div class="form-group">
  285.                                                             <input type="hidden" id="cn3_l" name="cn3_l" value="{% if parametres.cn3_l is defined and parametres.cn3_l != ""  %}{{ parametres.cn3_l }}{% endif %}">
  286.                                                             <select class="form-control" id="dtc_categorie_article_n3_select2_mobile" name="cn3"></select>
  287.                                                         </div>
  288.                                                         <div class="form-group">
  289.                                                             <div class="_off column-title"><i class="fa fa-star"></i> Marque</div>
  290.                                                             <input type="hidden" id="m_l" name="m_l" value="{% if parametres.m_l is defined and parametres.m_l != ""  %}{{ parametres.m_l }}{% endif %}">
  291.                                                             <select class="form-control" id="dtc_marque_article_select2_mobile" name="m"></select>
  292.                                                         </div>
  293.                                                         <div class="form-group">
  294.                                                             <div class="_off column-title"><i class="fa fa-search"></i> Recherche</div>
  295.                                                             <input type="text" class="form-control" name="mc" placeholder="Entrez un mot clé">
  296.                                                         </div>
  297.                                                         <div class="form-group " style="margin-bottom:5px;">
  298.                                                             <div class="_off column-title"><i class="fa fa-cubes"></i> Stock</div>
  299.                                                             <div class="pl-0 col-md-12 col-sm-12">
  300.                                                                 <label>
  301.                                                                     <input type="checkbox" name="st" value="1" class="js-switch" /> En stock uniquement
  302.                                                                 </label>
  303.                                                             </div>
  304.                                                         </div>
  305.                                                         <div class="btn-recherche-catalogue-reponsive btn-container">
  306.                                                             <button style="width:100%;" type="submit" class="btn btn-success"><i class="fa fa-search"></i> Lancer la recherche </button>
  307.                                                         </div>
  308.                                                     </div>
  309.                                                 </div>
  310.                                             </form>
  311.                                         </div>
  312.                                     </div>
  313.                                 </div>
  314.                             </div>
  315.                         </div>
  316.                         <style>
  317.                             #searchAccordion button.btn-link {
  318.                                 text-decoration: none;
  319.                                 color: inherit; /* couleur par défaut */
  320.                             }
  321.                             #searchAccordion button.btn-link:hover {
  322.                                 text-decoration: none; /* pas de soulignure */
  323.                                 color: #34495E;        /* couleur au survol */
  324.                             }
  325.                         </style>
  326.                         <script>
  327.                             // Animation icône flèche
  328.                             $('#searchAccordion .collapse').on('show.bs.collapse', function () {
  329.                                 $(this).siblings('button').find('i.fa-chevron-right').removeClass('fa-chevron-right').addClass('fa-chevron-down');
  330.                             }).on('hide.bs.collapse', function () {
  331.                                 $(this).siblings('button').find('i.fa-chevron-down').removeClass('fa-chevron-down').addClass('fa-chevron-right');
  332.                             });
  333.                         </script>
  334.                         <div class="modal-footer">
  335.                             <button type="button" class="btn btn-light" data-dismiss="modal">Fermer</button>
  336.                         </div>
  337.                     </div>
  338.                 </div>
  339.                 <!-- /.modal-content -->
  340.             </div>
  341.             <!-- /.modal-dialog -->
  342.         </div>
  343.         <!-- /.modal -->
  344.         <!-- Modal -->
  345.         <div class="modal _fade" id="blocModal"  role="dialog" aria-labelledby="ModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false">
  346.             <div class="modal-dialog" {% block modalWidth %}{% endblock %}>
  347.                 <div class="modal-content _table-responsive">
  348.                     <form novalidate data-async method="POST" data-target="#conteneur-modal" action="" class="formModal" id="formulaire-modal">
  349.                         <div class="modal-header">
  350.                             <h5 id="modal-titre" class="modal-title" id="ModalLabel">{% trans %}En attente{% endtrans %}</h5>
  351.                             <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  352.                                 <span aria-hidden="true">&times;</span>
  353.                             </button>
  354.                         </div>
  355.                         <div id="conteneur-modal"></div>
  356.                     </form>
  357.                 </div>
  358.                 <!-- /.modal-content -->
  359.             </div>
  360.             <!-- /.modal-dialog -->
  361.         </div>
  362.         <!-- /.modal -->
  363.     <!-- /#wrapper -->
  364.     {% block javascripts %}{% endblock %}
  365.     <script src="{{ asset('js_ep/custom.js') }}"></script>
  366.     <script>
  367.         $(function() {
  368.             $('body').on('click', '.open-modal-form', function (event) {
  369.                 $('#modal-titre').html("Chargement <img style='width:20px;' src='/images/balle.gif'><img style='width:20px;' src='/images/balle.gif'><img style='width:20px;' src='/images/balle.gif'>");
  370.                 event.preventDefault();
  371.                 var $a = $(this);
  372.                 var link = $a.attr('data-link');
  373.                 var idFormulaire = $a.attr('data-idFormulaire');
  374.                 var $a = $(this);
  375.                 var $target = $($a.attr('data-target'));
  376.                 var $width = $a.attr('data-width');
  377.                 var $tailleModal = $a.attr('data-taille');
  378.                 //console.log($width);
  379.                 if ($(window).width() < $width) $width = $(window).width() - 25;
  380.                 if ($.isNumeric($width)) {
  381.                     $('.modal-dialog').css('width', $width + 'px');
  382.                     $('.modal-dialog').css('max-width', $width + 'px');
  383.                     $('.modal-dialog').width($width);
  384.                 } else {
  385.                    // $('.modal-dialog').css('width', '600px');
  386.                    // $('.modal-dialog').css('max-width', '600px');
  387.                 }
  388.                 $.ajax({
  389.                     type: 'GET',
  390.                     url: link,
  391.                     dataType: "json",
  392.                     success: function (data, status) {
  393.                         if (typeof (data.width) != 'undefined') $('.modal-dialog').width(data.width);
  394.                         $('.modal-dialog').removeClass("modal-sm");
  395.                         $('.modal-dialog').removeClass("modal-lg");
  396.                         $('.modal-dialog').removeClass("modal-xl");
  397.                         if($tailleModal != "") {
  398.                             $('.modal-dialog').addClass($tailleModal);
  399.                         }
  400.                         $('#modal-titre').html(data.titre);
  401.                         $('#modal-titre').parent(".modal-header").css("backgroundColor", "whitesmoke");
  402.                         $('#conteneur-modal').html(data.rendu);
  403.                         var form = $('#conteneur-modal').parent('form');
  404.                         form.attr("action", link);
  405.                         form.attr("id", idFormulaire);
  406.                         $('#modal-titre').html(data.titre);
  407.                         $('#blocModal').modal('show');
  408.                         if (data.link !== undefined) {
  409.                             form.attr("action", data.link);
  410.                         }
  411.                         for (var i = 0, l = document.getElementsByTagName('input').length; i < l; i++) {
  412.                             if (document.getElementsByTagName('input').item(i).type == 'text' || document.getElementsByTagName('input').item(i).type == 'email' || document.getElementsByTagName('input').item(i).type == 'number') {
  413.                                 document.getElementsByTagName('input').item(i).setAttribute('autocomplete', 'off');
  414.                             }
  415.                         }
  416.                         var isMobile = false;
  417.                         if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)
  418.                             || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0, 4))) {
  419.                             isMobile = true;
  420.                         }
  421.                         if (isMobile) {
  422.                         } else {
  423.                             $('#conteneur-modal :input:first').focus();
  424.                         }
  425.                     }
  426.                 });
  427.                 if (!$(this).hasClass("divers")) {
  428.                     event.stopImmediatePropagation();
  429.                 }
  430.             });
  431.             function callBackEditAdresse(data) {
  432.                 $('#blocModal').modal('hide');
  433.                 $('#dta-adresses').DataTable().ajax.reload(function () { }, false);
  434.             }
  435.             $('form[data-async]').on('submit', function(e) {
  436.                 if($(this).hasClass('submit')){
  437.                     return true;
  438.                 }
  439.                 var $form = $(this);
  440.                 $form.addClass("flou");
  441.                 var $target = $($form.attr('data-target'));
  442.                 try {
  443.                     tinyMCE.triggerSave(true, true);
  444.                 }
  445.                 catch (e) {
  446.                 }
  447.                 var datas = $form.serialize();
  448.                 $.ajax({
  449.                     type: $form.attr('method'),
  450.                     url: $form.attr('action'),
  451.                     data: datas,
  452.                     dataType: "json",
  453.                     success: function(data, status) {
  454.                         setTimeout(function(){ $form.removeClass("flou"); }, 500);
  455.                         if(data.type=="adresse_livraison" || data.type=="adresse_facturation")
  456.                         {
  457.                             //callbackNouvelleAdresseClient(data);
  458.                             return false;
  459.                         }
  460.                         else if(data.type=="callBackEditAdresse") {
  461.                             callBackEditAdresse(data);
  462.                             return false;
  463.                         }
  464.                         else if(data.type=="callbackChangeClient") {
  465.                             $('#blocModal').modal('hide');
  466.                             const client_rattache = document.getElementById("client_rattache");
  467.                             client_rattache.innerHTML = 'CLIENT RATTACHÉ : <b id="">'+data.referenceClient+' - '+data.nomClient+'</b>.';
  468.                             const msg = document.getElementById("contenu_bandeau_admin");
  469.                             msg.classList.remove("pulse"); // reset si animation déjà jouée
  470.                             void msg.offsetWidth;          // hack pour relancer l'animation
  471.                             msg.classList.add("pulse");
  472.                             location.reload();
  473.                         }
  474.                         else if(data.type=="callBackAddAdresse") {
  475.                             //alert("Add adresse");
  476.                         }
  477.                         else if(data.type=="callBackContactProduit") {
  478.                             $("#conteneur-modal").html('<ul style="border-radius:0px;" class="alert  alert-success alert-dismissable"><li>Message envoyé avec succès !</li></ul><div class="text-center"><button style="margin-top:0px;margin-bottom:15px;" type="button" class="btn btn-light" data-dismiss="modal">Fermer</button></div>');
  479.                             return false;
  480.                         }
  481.                         else if(data.valide==1) {
  482.                             var url = window.location.href;
  483.                             var arr = url.split("/");
  484.                             var result = arr[0] + "//" + arr[2]
  485.                             if(window.location.href == result+data.url) {
  486.                                 location.reload();
  487.                             }
  488.                             else {
  489.                                 window.location.href = data.url;
  490.                             }
  491.                         }
  492.                         else {
  493.                             $target.html(data.rendu);
  494.                         }
  495.                     }
  496.                 });
  497.                 e.preventDefault();
  498.                 return false;
  499.             });
  500.         });
  501.     </script>
  502.     {#
  503.     <link rel="stylesheet" href="/css_ep/cookieconsent.css">
  504.     <script type="module" src="/js_ep/cookieconsent-config.js"></script>
  505.     #}
  506.     </body>
  507. </html>