<!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>