335 lines
21 KiB
PHP
335 lines
21 KiB
PHP
@extends('fo.layout')
|
|
|
|
@section('title', __($staticPageModel->seo_title))
|
|
@section('description', __($staticPageModel->seo_description))
|
|
@section('breadcrumb', request()->route()->getName())
|
|
|
|
@section('main-bg-class', 'has-banner')
|
|
|
|
{{-- No Flash messages on top --}}
|
|
@section('no-flash', 'true')
|
|
|
|
@section('banner')
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<div class="col g-0">
|
|
<img class="img-fluid banner-picture object-fit-cover w-100"
|
|
src="{{ Vite::asset('resources/assets/images/contact/contact-bg.jpg') }}" alt="{{ __('Bannière de la page de contact') }}">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endsection
|
|
|
|
@section('content')
|
|
<div class="bg-light-top-tear container-fluid mt-0 pb-1">
|
|
<div class="row">
|
|
<div class="col g-0">
|
|
<div class="container">
|
|
<div class="row justify-content-center">
|
|
<div class="col col-md-10 px-4 text-center">
|
|
<div class="contact-header d-flex">
|
|
<img class="img-fluid suzette d-none d-lg-inline"
|
|
src="{{ Vite::asset('resources/assets/images/contact/suzette-contact.png') }}"
|
|
title="{{ __('Personnage Suzette disant: "Envie de papoter ?"') }}" alt="{{ __('Envie de papoter ?') }}">
|
|
<div class="d-lg-flex align-items-end me-lg-5 pe-lg-5 mt-5 pb-5">
|
|
<span class="align-middle">
|
|
{{ __('Suzette est à votre écoute. N\'hésitez pas à lui envoyer vos questions, remarques ou suggestions.') }}
|
|
</span>
|
|
</div>
|
|
<img class="mouettes d-none d-lg-inline" src="{{ Vite::asset('resources/assets/images/global/mouettes.svg') }}"
|
|
alt="{{ __('Ombre de mouettes') }}">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="container pb-5">
|
|
<div class="row justify-content-center mb-5">
|
|
<div class="col col-lg-8 rounded-4 text-bg-primary contact-form p-4 pt-5">
|
|
<div class="text-center">
|
|
<h1 class="fs-1 text-center">{{ __('Nous') }} <span class="text-tertiary">{{ __('contacter') }} !</span></h1>
|
|
<img class="img-fluid flex-shrink-1 mb-3 flex-grow-0"
|
|
src="{{ Vite::asset('resources/assets/images/global/underline-yellow.svg') }}" alt="{{ __('Trait souligné') }}">
|
|
<span class="d-block text-primary">{{ __('Inscrivez vous au Klub Tre Galette') }}</span>
|
|
</div>
|
|
|
|
@if ($message = Session::get('success', Session::get('bo.success')))
|
|
<div class="alert alert-success alert-dismissible fade show m-0 mb-3" role="alert">
|
|
<i class="fa-solid fa-circle-check"></i>
|
|
<strong>{!! nl2br(e($message)) !!}</strong>
|
|
<button class="btn-close" data-bs-dismiss="alert" type="button" aria-label="{{ __('Fermer') }}"></button>
|
|
</div>
|
|
@endif
|
|
|
|
@if ($errors->get('g-recaptcha-response'))
|
|
<div class="alert alert-danger alert-dismissible fade show m-0 mb-3" role="alert">
|
|
<p class="fw-bold m-0"><i class="fa-solid fa-circle-exclamation"></i> Liste des erreurs :</p>
|
|
@if ($errors->any())
|
|
<ul class="list-unstyled m-0">
|
|
@foreach ($errors->get('g-recaptcha-response') as $message)
|
|
<li>{{ $message }}</li>
|
|
@endforeach
|
|
</ul>
|
|
@endif
|
|
<button class="btn-close" data-bs-dismiss="alert" type="button" aria-label="{{ __('Fermer') }}"></button>
|
|
</div>
|
|
@endif
|
|
|
|
<x-fo.contact.need-recaptcha-banner :shouldBeDark="false" />
|
|
|
|
<form class="recaptcha-form" id="contact-page-form" data-recaptcha-key="{{ config('services.google.recaptcha.public') }}" inert
|
|
method="POST" action="{{ route('fo.contact-submit') }}" enctype="multipart/form-data">
|
|
@csrf
|
|
|
|
<fieldset class="container-fluid p-md-5 pt-md-1 pb-md-0">
|
|
|
|
<div class="row">
|
|
{{-- TYPE --}}
|
|
<div class="col-12 py-2">
|
|
<label class="form-label" for="first_name">{{ __('À quel sujet souhaitez-vous nous contacter ?') }}</label>
|
|
<select class="form-select" id="contact-type" name="type"
|
|
data-reclaim="{{ App\Enums\Contact\ObjectEnum::reclaim->value() }}" autocomplete="disabled">
|
|
@foreach (\App\Enums\Contact\ObjectEnum::all() as $type)
|
|
<option value="{{ $type->value() }}" @if (old('type') == $type->value()) selected @endif>
|
|
{{ $type->label() }}</option>
|
|
@endforeach
|
|
</select>
|
|
@foreach ($errors->get('first_name') as $message)
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
{{-- FIRST_NAME --}}
|
|
<div class="col-12 col-md-6 py-2">
|
|
<label class="form-label" for="first_name">{{ Str::ucfirst(__('validation.attributes.first_name')) }}</label>
|
|
<input class="form-control @if ($errors->has('first_name')) is-invalid @endif mx-auto" id="first_name"
|
|
name="first_name" type="text" value="{{ old('first_name') }}"
|
|
placeholder="{{ __('Votre :attribute', [
|
|
'attribute' => __('validation.attributes.first_name'),
|
|
]) }}"
|
|
autocomplete="given-name" />
|
|
@foreach ($errors->get('first_name') as $message)
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@endforeach
|
|
</div>
|
|
|
|
{{-- LAST_NAME --}}
|
|
<div class="col col-md-6 py-2">
|
|
<label class="form-label" for="last_name">{{ Str::ucfirst(__('validation.attributes.last_name')) }} *</label>
|
|
<input class="form-control @if ($errors->has('last_name')) is-invalid @endif mx-auto" id="last_name"
|
|
name="last_name" type="text" value="{{ old('last_name') }}"
|
|
placeholder="{{ __('Votre :attribute', [
|
|
'attribute' => __('validation.attributes.last_name'),
|
|
]) }}"
|
|
autocomplete="family-name" required />
|
|
@foreach ($errors->get('last_name') as $message)
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
{{-- PHONE --}}
|
|
<div class="col-12 col-md-6 py-2">
|
|
<label class="form-label" for="phone">{{ Str::ucfirst(__('validation.attributes.phone')) }}</label>
|
|
<input class="form-control @if ($errors->has('phone')) is-invalid @endif mx-auto" id="phone"
|
|
name="phone" type="tel" value="{{ old('phone') }}"
|
|
placeholder="{{ __('Votre n° de :attribute', [
|
|
'attribute' => __('validation.attributes.phone'),
|
|
]) }}"
|
|
autocomplete="tel" />
|
|
@foreach ($errors->get('phone') as $message)
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@endforeach
|
|
</div>
|
|
|
|
{{-- EMAIL --}}
|
|
<div class="col-12 col-md-6 py-2">
|
|
<label class="form-label" for="email">{{ Str::ucfirst(__('validation.attributes.email')) }} *</label>
|
|
<input class="form-control @if ($errors->has('email')) is-invalid @endif mx-auto" id="email"
|
|
name="email" type="email" value="{{ old('email') }}"
|
|
placeholder="{{ __('Votre :attribute', [
|
|
'attribute' => __('validation.attributes.email'),
|
|
]) }}"
|
|
autocomplete="email" required />
|
|
@foreach ($errors->get('email') as $message)
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
{{-- ADDRESS --}}
|
|
<div class="col-12 col-md-6 py-2">
|
|
<label class="form-label" for="address">{{ Str::ucfirst(__('validation.attributes.address')) }}</label>
|
|
<input class="form-control @if ($errors->has('address')) is-invalid @endif mx-auto" id="address"
|
|
name="address" type="text" value="{{ old('address') }}"
|
|
placeholder="{{ __('Votre :attribute', [
|
|
'attribute' => __('validation.attributes.address'),
|
|
]) }}"
|
|
autocomplete="street-address" />
|
|
@foreach ($errors->get('address') as $message)
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@endforeach
|
|
</div>
|
|
|
|
{{-- CITY --}}
|
|
<div class="col-12 col-md-6 py-2">
|
|
<label class="form-label" for="city">{{ Str::ucfirst(__('validation.attributes.city')) }}</label>
|
|
<input class="form-control @if ($errors->has('city')) is-invalid @endif mx-auto" id="city"
|
|
name="city" type="text" value="{{ old('city') }}"
|
|
placeholder="{{ __('Votre :attribute', [
|
|
'attribute' => __('validation.attributes.city'),
|
|
]) }}"
|
|
autocomplete="address-level2" />
|
|
@foreach ($errors->get('city') as $message)
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
{{-- POSTAL_CODE --}}
|
|
<div class="col-12 col-md-6 py-2">
|
|
<label class="form-label"
|
|
for="postal_code">{{ Str::ucfirst(__('validation.attributes.postal_code')) }}</label>
|
|
<input class="form-control @if ($errors->has('postal_code')) is-invalid @endif mx-auto" id="postal_code"
|
|
name="postal_code" type="text" value="{{ old('postal_code') }}"
|
|
placeholder="{{ __('Votre :attribute', [
|
|
'attribute' => __('validation.attributes.postal_code'),
|
|
]) }}"
|
|
autocomplete="postal-code" />
|
|
@foreach ($errors->get('postal_code') as $message)
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row reclaim-fields d-none">
|
|
{{-- PRODUCT --}}
|
|
<div class="col-12 col-md-6 py-2">
|
|
<label class="form-label"
|
|
for="product">{{ __(':model concerné', ['model' => Str::ucfirst(__('models.classes.product'))]) }}
|
|
*</label>
|
|
<select class="form-select @if ($errors->has('product')) is-invalid @endif mx-auto" id="product"
|
|
name="product" type="text" value="{{ old('product') }}"
|
|
placeholder="{{ __('Votre :attribute', [
|
|
'attribute' => __('models.classes.product'),
|
|
]) }}"
|
|
autocomplete="postal-code" required>
|
|
<option value="" @if (is_null(old('product'))) selected @endif>
|
|
{{ __('Sélectionnez un produit') }}</option>
|
|
@foreach ($products as $product)
|
|
<option value="{{ $product->id }}" @if (old('product') == $product->id) selected @endif>
|
|
{{ $product->label }}</option>
|
|
@endforeach
|
|
</select>
|
|
@foreach ($errors->get('product') as $message)
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row reclaim-fields d-none">
|
|
{{-- BATCH_NUMBER --}}
|
|
<div class="col-12 col-md-6 py-2">
|
|
<label class="form-label" for="batch_number">{{ Str::ucfirst(__('validation.custom.batch_number')) }}</label>
|
|
<input class="form-control @if ($errors->has('batch_number')) is-invalid @endif mx-auto" id="batch_number"
|
|
name="batch_number" type="number" value="{{ old('batch_number') }}" placeholder="{{ __('N°') }}"
|
|
autocomplete="disabled" min="100" max="9999" step="1" />
|
|
@foreach ($errors->get('batch_number') as $message)
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@endforeach
|
|
</div>
|
|
|
|
{{-- EXPIRATION_DATE --}}
|
|
<div class="col-12 col-md-6 py-2">
|
|
<label class="form-label" for="expiration_date">{{ Str::ucfirst(__('validation.custom.expiration_date')) }}
|
|
({{ __('DLC') }})</label>
|
|
<input class="form-control @if ($errors->has('expiration_date')) is-invalid @endif mx-auto" id="expiration_date"
|
|
name="expiration_date" type="date" value="{{ old('expiration_date') }}" autocomplete="disabled" />
|
|
@foreach ($errors->get('expiration_date') as $message)
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
{{-- MESSAGE --}}
|
|
<div class="col-12 py-2">
|
|
<label class="form-label" for="message">{{ Str::ucfirst(__('validation.attributes.message')) }} *</label>
|
|
<textarea class="form-control @if ($errors->has('message')) is-invalid @endif mx-auto" id="message" name="message"
|
|
placeholder="{{ __('Décrivez-nous votre demande') }}" autocomplete="disabled" min="100" max="9999" step="1"
|
|
required>{{ old('message') }}</textarea>
|
|
@foreach ($errors->get('message') as $message)
|
|
<div class="invalid-feedback">{{ $message }}</div>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<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="text-white" href="{{ route('fo.policies.show') }}"
|
|
title="{{ __('Accéder à la Charte de confidentialité') }}">{{ __('Charte de confidentialité') }}</a>
|
|
</p>
|
|
|
|
{{-- FILE --}}
|
|
<div class="col-12 col-md-4 mx-auto py-2">
|
|
<div class="mb-3">
|
|
<label class="btn btn-lg btn-tertiary f-intro-head-b-base px-3 py-2" id="fileAddon" for="file"
|
|
role="button" tabindex="0">
|
|
{{ __('Ajouter une pièce jointe') }}
|
|
<input class="d-none mx-auto" id="file" name="file" type="file"
|
|
aria-label="{{ __('validation.custom.attachment') }}" accept=".jpg,.jpeg,.png,.pdf" />
|
|
</label>
|
|
<div class="mb-3">
|
|
<input class="form-control text-bg-primary text-truncate my-2 border-0" id="fileDescription"
|
|
type="text" aria-describedby="file" aria-label="Upload"
|
|
@if ($errors->has('file')) is-invalid @endif disabled>
|
|
</div>
|
|
</div>
|
|
@foreach ($errors->get('file') as $message)
|
|
<div class="invalid-feedback d-block">{{ $message }}</div>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row justify-content-center mb-3">
|
|
<div class="col col-md-8 text-primary lh-sm px-0 py-2 text-center">
|
|
<div class="text-secondary py-2 text-center">* {{ __('champs obligatoires') }}</div>
|
|
</div>
|
|
</div>
|
|
|
|
{{-- RECAPTCHA --}}
|
|
<div class="col-12 text-center">
|
|
<div class="d-flex flex-column justify-content-center align-items-center my-3">
|
|
<div class="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>
|
|
|
|
<div class="row" id="submit-btn-row">
|
|
<div class="col text-center">
|
|
<button class="btn btn-tertiary btn-lg rounded-0 fs-4 px-5 py-3" type="submit" render="explicit">
|
|
{{ __('Envoyer') }}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</form>
|
|
|
|
<img class="form-ship d-none d-lg-inline" src="{{ Vite::asset('resources/assets/images/contact/ship.svg') }}"
|
|
title="{{ __('Une ombre de bateau avec deux mâts') }}" alt="{{ __('Un bateau 2 mâts') }}">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endsection
|