ldc-le-gaulois-pro/resources/views/fo/pages/contact.blade.php
2026-07-02 11:31:23 +02:00

215 lines
13 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@php
$draft = Session::get('contact_draft', []);
$val = fn(string $key) => old($key, $draft[$key] ?? '');
@endphp
@extends('fo.layout', ['page' => 'contact'])
@section('title', $staticPageModel->seo_title)
@section('description', $staticPageModel->seo_description)
@section('bannerHeader')
@include('fo.partials.banner-header', [
'page' => 'contact',
'title' => $staticPageModel->title,
'description' => $staticPageModel->content,
])
@endsection
@section('content')
<div class="container-fluid d-flex flex-column align-items-center px-0">
<div class="text-bg-dark fw-bold fs-5 cn-cookie-activate d-flex flex-column flex-md-row align-items-center mx-3 mt-4 rounded p-3"
data-cookie-name="recaptcha">
<span class="d-flex flex-column w-md-75 w-100">
<strong class="text-underline text-bold text-danger">
{{ __('cookie-notice.custom.recaptcha.warning') }}
</strong>
<br>
<small class="text-white">
{{ __('Acceptez ce cookie pour utiliser les formulaires') }}
</small>
</span>
<button class="btn text-bg-light w-50 h-50 fs-5 rounded-4 mt-md-0 mt-3"
id="recaptcha-accept">{{ __('AUTORISER') }}</button>
</div>
<div class="contact-wrapper position-relative bg-ardoise-radial pt-sm-4 pt-4">
<form class="form-contact" id="contact-form" action="{{ route('fo.contact.submit') }}" method="post"
inert="true" data-save-draft-url="{{ route('fo.contact.save-draft') }}">
@csrf
<div class="row wrapper-sm justify-content-center">
<div class="col-12 col-sm-6 d-flex justify-content-center justify-content-sm-end flex-wrap">
<input class="form-control black-square mb-3 p-3" id="firstname" name="firstname" type="text"
value="{{ $val('firstname') }}" placeholder="{{ __('Prénom') }}">
@include('fo.modules.input-error', ['inputName' => 'firstname'])
</div>
<div class="col-12 col-sm-6 d-flex justify-content-center justify-content-sm-start flex-wrap">
<input class="form-control black-square mb-3 p-3" id="lastname" name="lastname" type="text"
value="{{ $val('lastname') }}" placeholder="{{ __('Nom *') }}" required>
@include('fo.modules.input-error', ['inputName' => 'lastname'])
</div>
<div class="col-12 col-sm-6 d-flex justify-content-center justify-content-sm-start flex-wrap">
<input class="form-control black-square mb-3 p-3" id="email" name="email" type="email"
value="{{ $val('email') }}" placeholder="{{ __('Adresse e-mail *') }}" required>
@include('fo.modules.input-error', ['inputName' => 'email'])
</div>
<div class="col-12 col-sm-6 d-flex justify-content-center justify-content-sm-start flex-wrap">
<input class="form-control black-square mb-3 p-3" id="phone" name="phone" type="text"
value="{{ $val('phone') }}" placeholder="{{ __('N° de téléphone *') }}" required>
@include('fo.modules.input-error', ['inputName' => 'phone'])
</div>
<div class="col-12 col-sm-6 d-flex justify-content-center justify-content-sm-start flex-wrap">
<select class="contact-activity-container black-square position-relative w-100 mb-3 p-3"
name="activity" role="button">
{{ __('Votre activité') }} *
<option class="option-activity-item disabled p-3 px-3"
@if (!old('activity') && empty($draft['activity'])) selected @endif disabled>
{{ __('Votre activité') }} *</option>
@foreach (\App\Enums\Contact\ContactActivityEnum::toArray() as $key => $activity)
<option class="option-activity-item px-3" value="{{ $activity->value }}"
@if (old('activity',$draft['activity'] ?? '') == $activity->value) selected @endif>{{ $activity->label }}</option>
@endforeach
</select>
@include('fo.modules.input-error', ['inputName' => 'activity'])
</div>
<div class="col-12 col-sm-6 d-flex justify-content-center justify-content-sm-start flex-wrap">
<input class="form-control black-square mb-3 p-3" id="society" name="society" type="text"
value="{{ $val('society') }}" placeholder="{{ __('Société') }}">
@include('fo.modules.input-error', ['inputName' => 'society'])
</div>
<div class="col-12 col-sm-6 d-flex justify-content-center justify-content-sm-start flex-wrap">
<input class="form-control black-square mb-3 p-3" id="postcode" name="postcode" type="text"
value="{{ $val('postcode') }}" placeholder="{{ __('Code postal *') }}" required>
@include('fo.modules.input-error', ['inputName' => 'postcode'])
</div>
<div class="col-12 col-sm-6 d-flex justify-content-center justify-content-sm-start flex-wrap">
<input class="form-control black-square mb-3 p-3" id="city" name="city" type="text"
value="{{ $val('city') }}" placeholder="{{ __('Ville') }}">
@include('fo.modules.input-error', ['inputName' => 'city'])
</div>
</div>
<div class="row wrapper-sm mb-3">
<div class="col">
@include('fo.modules.input-error', ['inputName' => 'message'])
<textarea class="form-control black-square mb-3 p-3" id="message" name="message" cols="30" rows="6"
placeholder="{{ __('Votre message') }} ({{ __('min. 20 caractères.') }}) *" required>{{ $val('message') }}</textarea>
</div>
</div>
<div class="row wrapper-sm mb-3">
<p>{{ __('Vous êtes intéressé par :') }}</p>
<div class="col-10 col-sm-11 px-0">
@php
$data = [
'basket' => Session::get('saveProductInBasket'),
'imageCross' => Vite::asset('resources/assets/images/croix-blanche.png'),
];
@endphp
<div class="contact-list-products" data-json='@json($data)'></div>
</div>
<div class="col-2 col-sm-1 pt-0">
<a class="btn-plus-wrapper d-flex justify-content-center align-items-center bg-second rounded-circle fs-xl color-body m-0"
href="{{ route('fo.products.index') }}">+</a>
</div>
</div>
<div class="row wrapper-sm mb-0">
<p>{{ __('Quand souhaitez-vous être rappelé ?') }} *</p>
@include('fo.modules.input-error', ['inputName' => 'callTime'])
</div>
<div class="row wrapper-sm mb-3">
@foreach (App\Enums\Contact\ContactTimeEnum::toArray() as $key => $contactTime)
<div class="col">
<input class="input-radio-contact d-none" id="call-time-{{ Str::slug($contactTime->value) }}"
name="callTime" type="radio" value="{{ $contactTime->value }}"
@if (old('callTime', $draft['callTime'] ?? '') == $contactTime->value) checked @endif>
<label class="label-time-contact butn-cinq position-relative w-100 m-0"
for="call-time-{{ Str::slug($contactTime->value) }}">
{{ $contactTime->label }}
</label>
</div>
@endforeach
</div>
<div class="row wrapper-sm p-3">
<div class="col col-md-8 lh-sm px-0 py-2">
<div class="form-check text-start">
<input class="form-check-input @if ($errors->has('opt_in')) is-invalid @endif me-1" id="check-optin"
name="opt_in" type="checkbox" @checked(old('opt_in', $draft['opt_in'] ?? false))>
<label class="form-check-label w-fit" for="check-optin" role="button">
{{ __('Je souhaite m’inscrire à la newsletter') }} {{ Config::get('theme.site_name') }}
</label>
</div>
@foreach ($errors->get('opt_in') as $message)
<div class="invalid-feedback d-block">{{ $message }}</div>
@endforeach
</div>
</div>
<div class="row wrapper-sm mb-3">
<div class="rgpg-wrapper d-flex align-items-center ff-poppins-regular fs-xxsm px-3 py-1">
<p>
{{ __('Les informations recueillies à partir de ce formulaire sont traitées par le Responsable de Traitement pour donner suite à votre demande de contact. Pour connaître vos droits, vous pouvez consulter la') }}
<a class="fw-bold text-decoration-underline" href="{{ route('fo.policies') }}"
title="{{ __('Consulter la charte de confidentialité') }}">
{{ __('Charte de confidentialité') }}
</a>
</p>
</div>
</div>
<div class="d-flex flex-column justify-content-center align-items-center w-100 mb-4">
<div id="r_captcha"></div>
@if ($errors->has('g-recaptcha-response'))
<div class="mb-6">
<span class="text-danger">{{ $errors->first('g-recaptcha-response') }}</span>
</div>
@endif
</div>
<div class="row wrapper-sm mb-3">
<div class="butn-wrap w-100">
<button class="g-recaptcha butn-prim bckg-body w-100"
data-sitekey="{{ config('services.google.recaptcha.public') }}" data-callback='onSubmit'
data-action='submit' type="submit">{{ __('Envoyer') }}
</button>
</div>
</div>
</form>
<div class="row wrapper-sm mb-3">
<p>{{ __('*obligatoire') }}</p>
</div>
</div>
</div>
@endsection
@push('scripts')
<script nonce="{{ $nonce ?? '' }}">
document.addEventListener('DOMContentLoaded', function() {
const initFormCaptcha = () => {
const newDiv = document.createElement("div");
newDiv.classList.add('g-recaptcha');
document.getElementById('r_captcha').appendChild(newDiv);
document.getElementById('contact-form').inert = true;
};
window.__CN_Recaptcha = function() {
initFormCaptcha();
(function(d, t) {
let g = d.createElement(t),
s = d.getElementsByTagName(t)[0];
g.src =
'https://www.google.com/recaptcha/api.js?render=explicit&onload=__CN_Recaptcha_Loaded';
s.parentNode.insertBefore(g, s)
}(document, 'script'));
};
window.__CN_Recaptcha_Reset = function() {
document.querySelector('#r_captcha > div')?.remove();
};
window.__CN_Recaptcha_Loaded = function() {
document.getElementById('contact-form').inert = false;
grecaptcha.render(document.querySelector('#r_captcha > div'), {
'sitekey': '{{ config('services.google.recaptcha.public') }}'
});
};
document.getElementById("recaptcha-accept").addEventListener('click', function(e) {
e.preventDefault();
window.WebCookieNotice.acceptCookie('recaptcha');
});
});
</script>
@endpush