templates/front/theme1/base.html.twig line 1

Open in your IDE?
  1. <!doctype html>
    <html lang="{{ app.request.locale }}">
        <head>
            <meta charset="utf-8" />
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            {# <link rel="apple-touch-icon" sizes="60x60" href="{{asset('public/favicon/apple-touch-icon.png')}}">
            <link rel="icon" type="image/png" sizes="32x32" href="{{asset('public/favicon/favicon-32x32.png')}}">
            <link rel="icon" type="image/png" sizes="16x16" href="{{asset('public/favicon/favicon-16x16.png')}}"> #}
            <link rel="icon" type="image/x-icon" href="{{ asset('public/favicon/favicon.ico') }}" />
            {# <link rel="manifest" href="{{asset('public/favicon/site.webmanifest')}}"> #}
            {{ leogout_seo() }} 
    
            <link rel="preconnect" href="https://code.jquery.com" crossorigin>
            <link rel="preconnect" href="https://apps.elfsight.com" crossorigin>
    
            {% include 'front/_fonts.html.twig' %}
            <link rel="preload" as="font" href="{{asset('build/fonts/fontawesome-webfont.20fd1704.woff2')}}" type="font/woff2" crossorigin="anonymous">
            {# <link rel="preconnect" href="https://matomo.hrz.fr/" crossorigin> #}
            
            {# {% include 'front/preload_fonts.html.twig' %} #}
            {# <link href="https://cdn.jsdelivr.net/npm/vanillajs-datepicker@1.1.4/dist/css/datepicker.min.css" rel="stylesheet"> #}
    
            {% block metaTag %}
                    {% if meta_robots is defined and meta_robots is not empty %}
                            <meta name="robots" content="{{meta_robots}}">
                        {% else %}
                            <meta name="robots" content= "{% if ParametreSite().metaindex == 1 %}INDEX{% else %}NOINDEX{% endif %} , {% if ParametreSite().metafollow == 1 %}FOLLOW{% else %}NOFOLLOW{% endif %}"> 
                    {% endif %}
    
                    {% set currentPath = '/' %}
    
                    {% if app.request.attributes.get('_route_params')['slug'] is defined and app.request.attributes.get('_route_params')['slug'] == 'home' %}
                        <link href="{{app.request.schemeAndHttpHost}}" rel="canonical"/>
                    {% else %}
                        {% if canonical is defined and canonical != null  %}
                            <link href="{{app.request.schemeAndHttpHost ~ canonical}}" rel="canonical"/>
                        {% else %}
                            <link href="{{app.request.uri}}" rel="canonical" />
                        {% endif %} 
                    {% endif %}
                 
                    {% if alternate_links is defined and alternate_links is not empty  %}
                         {% for item in alternate_links %}
                            <link rel="alternate" hreflang="{{item.url}}" href="{{item.hreflang}}" />  
                         {% endfor %}
                    {% endif %}
    
                    {% if custom_schemaOrg is defined and custom_schemaOrg != null  %}
                        {{custom_schemaOrg|raw}}
                    {% endif %}
                    
    
                    {% if schemaOrg is defined %}
                         {{schemaOrg|replace({"\\": "/"})|replace({"//": "/"})|raw}}
                    {% endif %}
    
                    {% if schema_breadcrumb is defined %}
                        {{schema_breadcrumb|replace({"\\": "/"})|replace({"//": "/"})|raw}}
                    {% endif %}
            {% endblock %}
    
            {% if ParametreSite().googleverification and ParametreSite().googleverification is not empty %}
                    <meta name="google-site-verification" content="{{ParametreSite().googleverification|raw}}" />
            {% endif %}
    
            {% if ParametreSite().codehead and ParametreSite().codehead is not empty %}
                {{ParametreSite().codehead|raw}}
            {% endif %}
    
           
    
            {% block preload %}{% endblock %}
    
    
            {% block stylesheets %}
            {#  {{ encore_entry_link_tags('app-theme') }} #}
                <style>
                    {# {{ source ('front/'~ app.request.server.get('APP_THEME') ~'/assets/css/_fonts.css')}} #}
                    {{ source ('front/'~ app.request.server.get('APP_THEME') ~'/assets/css/_variables.min.css')}}
                    {# {% include 'front/config_theme.html.twig' %} #}
                    {% for file in encore_entry_css_files('app-theme') %}
                        {{ source('@PUBLIC' ~ file) }}
                    {% endfor %}
    
                    {{ source ('front/'~ app.request.server.get('APP_THEME') ~'/assets/css/style.min.css')}}
                </style>
    
                {% if ParametreSite().actifwhatsapp and ParametreSite().telwhatsapp is not empty %}
                    <style>
                        {{ source ('front/'~ app.request.server.get('APP_THEME') ~'/assets/plugins/floating-whatsapp-master/floating-wpp.min.css')}}
                    </style>
                {% endif %}
               
            {% endblock %}
            
        </head>
        {% apply spaceless %}
        <body {% if app.request.attributes.get('_route') is null %}class="page-404"{% endif %}>
            {% if ParametreSite().codebody and ParametreSite().codebody is not empty %}
                {{ParametreSite().codebody|raw}}
            {% endif %}
    
            {% block navbar %}
                {% if ParametreSite().generationstaticheaderfooter  == true %}
                    {% include 'front/'~ app.request.server.get('APP_THEME') ~'/partials/header.html' %}
                {% else %}
                    {% set className = app.request.attributes.get('_route') == 'index_page_home'?'home_page':'' %}
                    {{ render(controller('App\\Controller\\Front\\FunctionController::renderMenu',{'className': className })) }} 
                {% endif %}
            {% endblock %}
    
    
            <main class="{{app.request.attributes.get('_route') == 'index_page_home'?'home_page':''}} {{custom_class_page()!= null?custom_class_page():''}}">
              {% block body %}{% endblock %} 
            </main>
    
            {# <a href="javascript:void(0);" class="scroll-to-top" title="{{ 'label.haut'|trans({} , 'textes' ) }}" style="display: none;"><span>{{ 'label.haut'|trans({} , 'textes' ) }}</span></a> #}
    
            <div id="myOverlay" class="overlay">
                <span class="closebtn" onclick="closeSearch()" title="Close Overlay">×</span>
                <div class="overlay-content">
                    <form action="{{path('page_search')}}" method="GET">
                        <div class="position-relative w-100">
                            <input type="text" placeholder="Rechercher..." name="search" class="resRecord" required>
                            <div id="recButton" class="w-md waves-effect waves-light"><i class="fa fa-microphone"></i></div>
                        </div>
                       <button type="submit"><i class="fa fa-search"></i></button>
                    </form>
                </div>
            </div>
    
      
            {{ render(controller('App\\Controller\\Front\\FunctionController::renderDefaultBloc')) }}
    
            {% block footer %}
                {% if ParametreSite().generationstaticheaderfooter  == true %}
                     {% include 'front/'~ app.request.server.get('APP_THEME') ~'/partials/footer.html' %}
                {% else %}
                     {{ render(controller('App\\Controller\\Front\\FunctionController::renderFooter',{ 'TypeMenu': 'Footer' })) }}
                {% endif %}
                {% if ParametreSite().actifwhatsapp and ParametreSite().telwhatsapp is not empty %}
                    <div id="btnWhatsApp"></div>
                {% endif %}
            {% endblock %}
    
            {% block javascripts %}
    
                <script src="{{asset('templates/front/theme1/assets/js/jquery-3.6.0.min.js')}}" ></script>
                <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/js/bootstrap.bundle.min.js" async></script>
                {# <script src="{{asset('templates/front/theme1/assets/plugins/wow-animate/js/wow.min.js')}}"></script> #}
                {# <script src="{{asset('templates/front/theme1/assets/plugins/galerie-isotope-wow/js/isotope.pkgd.min.js')}}"></script> #}
                <script src="{{asset('templates/front/theme1/assets/plugins/galerie-isotope-wow/js/plugins.js')}}"></script>
    
                {# <script src="https://cdn.jsdelivr.net/npm/vanillajs-datepicker@1.1.4/dist/js/datepicker-full.min.js"></script>
                <script src="https://cdn.jsdelivr.net/npm/vanillajs-datepicker@1.2.0/dist/js/locales/fr.js"></script> #}
                {{ encore_entry_script_tags('app-theme') }} 
    
        
                <script>
                        function openSearch() {
                            document.getElementById("myOverlay").style.display = "block";
                            setTimeout(function() {
                                document.getElementById("myOverlay").style.opacity = "1";
                            }, 2); 
                        
                        }
    
                        function closeSearch() {
                            document.getElementById("myOverlay").style.display = "none";
                            setTimeout(function() {
                                document.getElementById("myOverlay").style.opacity = "0";
                            }, 2); 
                        }
    
                </script>
    
                {% if ParametreSite().typerecaptcha == 2 %}
                    <script>
                        (function () {
                        'use strict';
    
                        // Fetch all the forms we want to apply custom Bootstrap validation styles to
                        var forms = document.querySelectorAll('.needs-validation');
                        // Loop over them and prevent submission
                        Array.prototype.slice.call(forms).forEach(function (form) {
                            form.addEventListener('submit', function (event) {
                                form.classList.add('was-validated');
    
                                if (!form.checkValidity()) {
                                    event.preventDefault();
                                    event.stopPropagation();
                                    return false;
                                }
    
                                var recaptchaContainers = document.querySelectorAll('.g-recaptcha');
                                if(recaptchaContainers.length == 1){
                                    // Ajouter la validation reCAPTCHA ici
                                    var recaptchaResponse = grecaptcha.getResponse();
                                    
                                    if (recaptchaResponse.length === 0) {
                                        // Si la réponse reCAPTCHA est vide, ne pas soumettre le formulaire
                                        alert('Veuillez valider reCAPTCHA.');
                                        event.preventDefault();
                                        event.stopPropagation();
                                    } else {
                                        // Si tout est valide, désactivez le bouton et laissez le formulaire se soumettre
                                        $(form).find('button[type="submit"]').attr('disabled', 'true');
                                    }
                                }
                            }, false);
                        });
                    })();
                    </script>
                {% endif %}
    
                {% if ParametreSite().typerecaptcha == 1 %}
                    <script>
                      // new WOW().init();
                       (function () {
                            'use strict'
                            // Fetch all the forms we want to apply custom Bootstrap validation styles to
                            var forms = document.querySelectorAll('.needs-validation')
    
                            // Loop over them and prevent submission
                            Array.prototype.slice.call(forms)
                                .forEach(function (form) {
                                form.addEventListener('submit', function (event) {
                                    form.classList.add('was-validated')
                                    if (!form.checkValidity()) {
                                        event.preventDefault()
                                        event.stopPropagation()
                                        return false;
                                    }
    
                                    event.preventDefault();
                                    $(form).find('button[type="submit"]').attr('disabled','true');
                                    grecaptcha.execute('{{ParametreSite().clekey}}', {action: 'create_comment'}).then(token => {
                                        $(form).find('[name=g-recaptcha-response]').val(token);
                                        form.submit();
                                    });
                                }, false)
                                })
                        })()  
    
                        function reCaptchaOnFocus() {
                            var head = document.getElementsByTagName('head')[0]
                            var script = document.createElement('script')
                            script.type = 'text/javascript';
                            script.src = 'https://www.google.com/recaptcha/api.js?render={{ParametreSite().clekey}}'
                            head.appendChild(script);
                        };  
    
                        if(document.getElementsByClassName('form-recap')){
                            for (let i = 0; i < document.getElementsByClassName('form-recap').length; i++) {
                                document.getElementsByClassName('form-recap')[i].addEventListener('focus', (event) => {
                                    reCaptchaOnFocus()
                                }, true);
                            }
                        }
                    </script>
                {% endif %}
    
                <script>
    
                    $(document).ready(function(){
    
                        /* const elems = document.querySelectorAll('.datepicker_input');
                        for (const elem of elems) {
                            const datepicker = new Datepicker(elem, {
                                'format': 'dd/mm/yyyy',
                                'language' : 'fr',
                               // title: getDatePickerTitle(elem)
                            });
    
                        } */
                 
    
                        $(window).on("scroll", function () {
                            if ($(this).scrollTop() > $(window).height() / 2) {
                                $(".scroll-to-top").fadeIn();
                            } else {
                                 $(".scroll-to-top").fadeOut();
                            }
                        });
    
                        $('.header-savoir-plus').on("click", function () {
                            $("html, body").animate({ scrollTop: $('#bloc-content').offset().top - 100 }, "slow" );
                            return false;
                        });
    
                        $(".scroll-to-top").on("click", function () {
                            $("html, body").animate({ scrollTop: 0 }, 500);
                            return false;
                        });
    
                        $('input[name="prestation[]"]').change(function(){
                            if(this.hasAttribute('checked')){
                                $(this).attr('checked',false);
                            }else{
                                $(this).attr('checked',true);
                            }
    
                            $.each($("input[name='prestation[]']"), function () {
                                if (this.value == 'Autre' && this.hasAttribute('checked')) {
                                    $('.autre_prestation').removeClass('d-none');
                                    $('input[name="autre_prestation"]').attr('required',true);
                                }else{
                                    $('.autre_prestation').addClass('d-none');
                                    $('input[name="autre_prestation"]').attr('required',false);
                                }
                            });
    
                        
                        });
    
                        $('input[name="vous_etes"]').change(function(){
                            if (this.value == 'Autre') {
                                $('.autre_coordonne').removeClass('d-none');
                                $('input[name="autre_coordonne"]').attr('required',true);
                            }else{
                                $('.autre_coordonne').addClass('d-none');
                                $('input[name="autre_coordonne"]').attr('required',false);
                            }
                        });
                    });
                </script>
                
                {% if parametreProduits() and parametreProduits().actifpanier %}
                    <script>
                        // Fonction pour mettre à jour le panier côté client
                        function updatePanier(panier) {
                            $.ajax({
                                url: '{{ path('cart_content') }}',
                                type: 'GET',
                                success: function(response) {
                                    var panier = response.panier;
                                    var commandeDiv = $('.commande_div');
                                    commandeDiv.empty();
    
                                    var commandeTable = $('.table-panier tbody');
                                    if(commandeTable.length){
                                        commandeTable.empty();
                                    }
    
                                    var total = 0;
    
                                    $('#nb_span').text(Object.keys(panier).length);
    
                                    for (var key in panier) {
                                        if (panier.hasOwnProperty(key)) {
                                            var item = panier[key];
                                            var id = item['product'].id;
                                            var name = item['product'].title;
                                            var prix = item['product'].prix_produit;
                                            var qte = item.qte;
                                            var nameDiv = $('<div>', { class: 'name_div', 'data-id': id });
                                            var nameSpan = $('<span>', { class: 'name_span' }).text(name);
                                            var content_prix = prix ? ' - '+prix+' €' : ''
                                            var condSpan = $('<span>', { class: 'cond_span' }).text(content_prix);
                                            var qteSpan = $('<span>', { class: 'qte_span' }).text(' - ' + qte);
    
                                            total +=  prix * qte;
    
                                            var viderLink = $('<button>', { class: 'vider_selection_prod cart-remove', 'data-qte': qte, 'data-id-produit': id }).html('<i class="fa fa-trash-o"></i>');
    
                                            var clearDiv = $('<div>', { class: 'clear' });
    
                                            nameSpan.append(condSpan);
                                            nameDiv.append(nameSpan, qteSpan, viderLink, clearDiv);
                                            commandeDiv.append(nameDiv);
    
                                            if(commandeTable.length){
                                                
                                                var inputQte = $('<input>', { class: 'form-control input-qte', 'type': 'number', 'value': qte,'name': 'qte','id': 'qte','min': '0','max': '1000', 'data-id-produit': id });
                                                var btnQteUpdate = $('<button>', { class: 'btn-update-qte disabled', 'disabled' : '' }).html('Modifier');
    
                                                var nameTr = $('<tr>', { class: 'name_div', 'data-id': id });
                                                var nameTd = $('<td>', { class: 'name_span' }).text(name);
                                                var qteTd = $('<td>', { class: 'qte_span' }).append(inputQte,btnQteUpdate);
                                                var prixTd = $('<td>', { class: 'cond_span' }).text(prix);
                                                var viderLinkTd = $('<button>', { class: 'vider_selection_prod cart-remove float-none', 'data-qte': qte, 'data-id-produit': id }).html('<i class="fa fa-trash-o"></i>');
                                                var actionsTd = $('<td>', { class: 'actions' }).append(viderLinkTd);
    
                                                nameTr.append(nameTd, qteTd,prixTd, actionsTd);
                                                commandeTable.append(nameTr);
                                            }
                                        }
                                    }
    
                                    var totalTr = $('<tr>', { class: 'total' });
                                    var totalTd1 = $('<td>', { class: 'text-right' , 'colspan' : '2' }).html('<strong>Total(€) :</strong>');
                                    var totalTd2 = $('<td>', { class: 'total-prix' }).html('<strong>'+ total +'</strong>');
    
                                    totalTr.append(totalTd1,totalTd2);
    
                                    if(commandeTable.length){
                                        commandeTable.append(totalTr);
                                    }
    
                                },
                                error: function(xhr, status, error) {
                                    console.log(error);
                                }
                            });
                        }
    
                        function removeFromCart(id_produit){
                                    $.ajax({
                                        url: '/panier/remove/'+escape(id_produit),
                                        type: 'POST',
                                        dataType: 'JSON',
                                        success: function(response) {
                                            var panier = response;
                                            updatePanier(panier);
                                        },
                                        error: function(xhr, status, error) {
                                            console.log(error); // Affichez l'erreur pour le débogage
                                        }
                                    });
                                
                        }
    
                        function updateQtePanier(id_produit,qte){
                            
                            $.ajax({
                                url: '/panier/update/'+escape(id_produit)+'/'+escape(qte),
                                type: 'POST',
                                dataType: 'JSON',
                                success: function(response) {
                                    var panier = response.panier;
                                    updatePanier(panier);
                                },
                                error: function(xhr, status, error) {
                                    console.log(error); // Affichez l'erreur pour le débogage
                                }
                            });
                        }
                        
                        $(document).ready(function() {
                            
                            $(document).on('click', '.cart-remove', function() {
                                var id_produit = $(this).data('id-produit');
                                removeFromCart(id_produit);
                            });
    
                            $(document).on('change', '.input-qte', function() {
                                $(this).closest('tr.name_div').find('.btn-update-qte').removeClass('disabled');
                                $(this).closest('tr.name_div').find('.btn-update-qte').removeAttr('disabled');
                            });
    
                            $(document).on('click', '.btn-update-qte', function() {
                                var productId = $(this).closest('tr.name_div').data('id');
                                var qte = $(this).closest('tr.name_div').find('input.input-qte').val();
                                updateQtePanier(productId,qte);
                            });
    
                        });
                    </script>
    
                {% endif %}
    
                {% if Cookies() != null %}
                      {{ include ('front/'~ app.request.server.get('APP_THEME') ~'/cookies/cookie.html.twig',{}, with_context = false)}}
                {% endif %}
    
                {% if ParametreSite().actifwhatsapp and ParametreSite().telwhatsapp is not empty %}
                    <script>
                        {{ source ('front/'~ app.request.server.get('APP_THEME') ~'/assets/plugins/floating-whatsapp-master/floating-wpp.min.js')}}
                    </script>
                    {% set messagepopup = "<span class='titre_sender'>" ~ ParametreSite().titre|raw ~ "</span><span class='message_send'>" ~ ParametreSite().messagewhatsapp|default("Bonjour 👋 <br />Comment puis-je t'aider ?") ~ "</span><span class='date_send'>" ~ 'now'|date('H:i') ~ "</span>" %}
                    {% set headerTitle = ParametreSite().titrewhatsapp|default(" ")|raw %}
                    {% set boutonTitle = ParametreSite().titreboutonwhatsapp|default("Commencer le chat")|raw %}
                    <script type="text/javascript">
                        $(function () {
                            $('#btnWhatsApp').floatingWhatsApp({
                                phone: '{{ParametreSite().telwhatsapp}}',
                                popupMessage: "{{messagepopup|raw}}",
                                message: "",
                                showPopup: true,
                                showOnIE: true,
                                headerTitle: '<span class="icone-profil"><img class="img-logo" src="{{asset('/uploads/images/'~ ParametreSite().image)}}" alt="{{ParametreSite().titre}}" width="50" height="50"></span><span class="titre-header-whatsapp"><span class="titre-site-whatsapp">{{ParametreSite().titre|raw}}</span>{{headerTitle}}</span>',
                                headerColor: '{{ParametreSite().headercolorwhatsapp}}',
                                backgroundColor: '#25d366',
                                zIndex:'999999',
                                position:'right',
                                autoOpenTimeout:'0',
                                boutonTitle : '{{boutonTitle}}',
                                buttonImage: '<img src="/templates/front/theme1/assets/plugins/floating-whatsapp-master/whatsapp.svg" />'
                            });
                        });
                    </script>
                {% endif %}
    
                <script>
                    {{ source ('front/'~ app.request.server.get('APP_THEME') ~'/assets/js/script.js')}}
                </script>
                
    
            {% endblock %} 
    
        </body>
        {% endapply %}
    </html>