clean part 3

This commit is contained in:
Alexis Gousseau 2024-03-22 11:25:48 +01:00
parent 5f30d81ff2
commit 1819fdb285
18 changed files with 394 additions and 408 deletions

View file

@ -59,20 +59,22 @@ enum StaticPageType: int
* Does the static page need to fill its 'content' column ?
*
* @return boolean
* @phpcs:disable Generic.Metrics.CyclomaticComplexity.TooHigh
*/
public function containsContent(): bool
{
// @phpcs:enable
return match ($this) {
self::contact,
self::legals,
self::contact => false,
self::legals => false,
self::confidentiality => true,
self::home,
self::unveil,
self::we_hire,
self::we_commit,
self::we_move,
self::we_produce,
self::we_listen => false,
self::home => false,
self::unveil => false,
self::we_hire => false,
self::we_commit => false,
self::we_move => false,
self::we_produce => false,
self::we_listen => true,
};
}
}

View file

@ -26,7 +26,9 @@ class UpdateStaticPageRequest extends FormRequest
public function prepareForValidation(): void
{
$this->merge([
'content' => Str::of($this->input('content'))->value()
'content' => (empty(Str::of($this->input('content'))->value())) ?
null :
Str::of($this->input('content'))->value()
]);
}
@ -37,12 +39,16 @@ class UpdateStaticPageRequest extends FormRequest
*/
public function rules(): array
{
return [
$rules = [
'seo_title' => 'required|min:45|max:70',
'seo_description' => 'required|min:50|max:160',
'title' => 'required|min:3|max:255',
'content' => 'present',
'content' => 'sometimes|nullable',
];
if (request()->route()->parameters()['static_page']->type->containsContent()) {
$rules = array_merge($rules, ['content' => 'required|string|min:15']);
}
return $rules;
}
/**

View file

@ -18,7 +18,7 @@ class SendConfirmationMail extends Mailable
use SerializesModels;
/**
* @var \App\Mail\Contact
* @var \stdClass
*/
private \stdClass $data;
@ -89,24 +89,3 @@ class SendConfirmationMail extends Mailable
);
}
}
/**
* @property \App\Enums\Contact\ObjectEnum $type
* @property string|null $first_name
* @property string $last_name
* @property string|null $phone
* @property string $email
* @property string|null $address
* @property string|null $city
* @property string|null $postal_code
* @property string $message
* @property boolean $terms
* @property \Illuminate\Http\UploadedFile|null $file
* @property \App\Models\Product|null $product
* @property \Carbon\Carbon|null $expiration_date
* @property integer|null $batch_number
* @phpcs:disable PSR1.Classes.ClassDeclaration.MultipleClasses
*/
class ContactConfirmation extends \stdClass
{
}

View file

@ -20,7 +20,7 @@ class SendContactMail extends Mailable
use SerializesModels;
/**
* @var \App\Mail\Contact
* @var \stdClass
*/
private \stdClass $data;
@ -49,7 +49,6 @@ class SendContactMail extends Mailable
*/
private function sanitizeStringInputs(): void
{
// @phpstan-ignore-next-line
$this->data = (object)Arr::map((array)$this->data, function ($el) {
if (is_string($el)) {
$el = \htmlspecialchars(\strip_tags(Blade::render(
@ -109,24 +108,3 @@ class SendContactMail extends Mailable
return $attachments;
}
}
/**
* @property \App\Enums\Contact\ObjectEnum $type
* @property string|null $first_name
* @property string $last_name
* @property string|null $phone
* @property string $email
* @property string|null $address
* @property string|null $city
* @property string|null $postal_code
* @property string $message
* @property boolean $terms
* @property \Illuminate\Http\UploadedFile|null $file
* @property \App\Models\Product|null $product
* @property \Carbon\Carbon|null $expiration_date
* @property integer|null $batch_number
* @phpcs:disable PSR1.Classes.ClassDeclaration.MultipleClasses
*/
class Contact extends \stdClass
{
}

View file

@ -13,7 +13,7 @@ use Illuminate\Support\Str;
* @property string $model_id Id of the target model.
* @property \App\Enums\ActivityLogs\ActivityLogsEventEnum $event Event of this activity (ActivityLogsEventEnum).
* @property array $data Changes.
* @property-read \Illuminate\Support\Carbon $created_at Created date.
* @property \Illuminate\Support\Carbon $created_at Created date.
*
* @property-read \App\Models\User $user User BelongsTo relation.
*/

View file

@ -15,12 +15,12 @@ return new class extends Migration
{
Schema::create('static_pages', function (Blueprint $table) {
$table->id();
$table->unsignedTinyInteger('type')->unique()->comment('Page type (StaticPageEnum)');
$table->string('seo_title')->comment('Seo title about 70 chars as recommended');
$table->string('seo_description')->comment('Seo description about 160 chars as recommended');
$table->string('title')->comment('Title for the page');
$table->string('slug')->unique()->comment('Unique title slug');
$table->text('content')->comment('WYSIWYG text content using ckeditor');
$table->unsignedTinyInteger('type')->unique()->comment('Type of the static page (StaticPageEnum).');
$table->string('seo_title')->comment('Seo title of the static page.');
$table->string('seo_description')->comment('Seo description of the static page.');
$table->string('title')->comment('Title of the static page.');
$table->string('slug')->unique()->comment('Title slug of the static page.');
$table->text('content')->nullable()->comment('Content of the static page (WYSIWYG).');
$table->timestamps();
});
}

View file

@ -104,7 +104,7 @@
transform: rotate(-15deg);
@include media-breakpoint-up(lg) {
left: 0;
left: 2rem;
}
}

View file

@ -67,7 +67,7 @@ document.addEventListener("DOMContentLoaded", function () {
"swiper-news": {
modules: [Navigation, Keyboard],
grabCursor: true,
slidesPerView: 2.3,
slidesPerView: 1.1,
centeredSlides: true,
spaceBetween: 10,
navigation: {
@ -76,7 +76,15 @@ document.addEventListener("DOMContentLoaded", function () {
},
keyboard: {
enabled: true,
}
},
breakpoints: {
576: {
slidesPerView: 1.3,
},
768: {
slidesPerView: 2.3,
},
},
},
"swiper-we-move": {
modules: [Navigation, Keyboard],
@ -311,6 +319,16 @@ document.addEventListener("DOMContentLoaded", function () {
element: htmlElt,
swiper: swiper,
});
if (swiper.el.id === "swiper-teams") {
const btnPlayPause = document.querySelector(".swiper-pagination-playpause");
btnPlayPause?.addEventListener("click", function () {
const svgs = btnPlayPause.querySelectorAll("svg");
svgs?.forEach(svg => {
svg.classList.toggle("d-none");
});
(swiper.autoplay.paused) ? swiper.autoplay.start() : swiper.autoplay.pause();
});
}
}
// GoToTop Button

View file

@ -10,7 +10,9 @@ import {
faLocationDot,
faMagnifyingGlass,
faMinus,
faPause,
faPaw,
faPlay,
faPlus,
faQuestionCircle,
faUserGroup
@ -31,5 +33,7 @@ library.add(faUserGroup);
library.add(faPaw);
library.add(faMinus);
library.add(faPlus);
library.add(faPlay);
library.add(faPause);
dom.watch();

View file

@ -115,28 +115,30 @@
</div>
</fieldset>
</div>
{{-- CONTENT --}}
<div class="col-12 mb-3">
<fieldset class="border p-3">
<legend>{{ Str::ucfirst(__('validation.attributes.content')) }}</legend>
<div class="row mb-3">
<div class="col-12">
@include('bo.partials.inputs.text-html', [
'id' => 'articleContent',
'label' => __(':field :inter:model', [
'field' => Str::ucfirst(__('validation.attributes.content')),
'inter' => __('validation.custom.of_the.female'),
'model' => trans_choice('models.classes.static_page', 1),
]),
'name' => 'content',
'model' => $staticPageModel ?? null,
'required' => true,
'helper' => __('crud.minicrud.text_warning'),
])
@if ($staticPageModel->type->containsContent())
{{-- CONTENT --}}
<div class="col-12 mb-3">
<fieldset class="border p-3">
<legend>{{ Str::ucfirst(__('validation.attributes.content')) }}</legend>
<div class="row mb-3">
<div class="col-12">
@include('bo.partials.inputs.text-html', [
'id' => 'articleContent',
'label' => __(':field :inter:model', [
'field' => Str::ucfirst(__('validation.attributes.content')),
'inter' => __('validation.custom.of_the.female'),
'model' => trans_choice('models.classes.static_page', 1),
]),
'name' => 'content',
'model' => $staticPageModel ?? null,
'required' => true,
'helper' => __('crud.minicrud.text_warning'),
])
</div>
</div>
</div>
</fieldset>
</div>
</fieldset>
</div>
@endif
<div class="col-12 text-center">
<p><b>{{ __('* Champs obligatoires') }}</b></p>
</div>

View file

@ -18,21 +18,20 @@
@section('content')
<section class="commit">
{{-- AMBITION --}}
<section class="ambition anchor-padding my-4" id="introduction">
<div class="container">
<div class="row">
<div class="col-12">
<h2 class="h2 fw-bold text-primary text-center">{{ $ambitionSection->h2_title }}</h2>
@if ($ambitionSection->text)
<div class="ck-content text-primary text-center">
{!! clean($ambitionSection->text) !!}
</div>
@endif
</div>
<section class="ambition anchor-padding container my-4" id="introduction">
<div class="row">
<div class="col-12">
<h2 class="h2 fw-bold text-primary text-center">{{ $ambitionSection->h2_title }}</h2>
@if ($ambitionSection->text)
<div class="ck-content text-primary">
{!! clean($ambitionSection->text) !!}
</div>
@endif
</div>
<div class="commit-navigation z-2 mt-3">
<div class="commit-navigation-wrapper show row m-0 p-0">
{{-- blade-formatter-disable --}}
</div>
<div class="commit-navigation z-2 mt-3">
<div class="commit-navigation-wrapper show row m-0 p-0">
{{-- blade-formatter-disable --}}
@php
$commitNav = [
['label' => __('Élever durablement'), 'link' => '#breeding', 'color' => 'tertiary'],
@ -41,25 +40,24 @@
['label' => __('Bien nourrir'), 'link' => '#feed', 'color' => 'sixt']];
@endphp
{{-- blade-formatter-enable --}}
@foreach ($commitNav as $key => $value)
<div class="col-12 col-sm-6 col-md-12 px-md-0 py-md-1 p-2">
<div class="rounded-5 bg-{{ $value['color'] }}-light shadow-sm">
<a class="d-flex justify-content-center align-items-center text-primary text-decoration-none p-3"
data-bs-toggle="tooltip" href="{{ $value['link'] }}"
title="{{ __('Accéder à la partie :name de la page', ['name' => $value['label']]) }}">
<span class="badge rounded-pill bg-{{ $value['color'] }} d-block me-2"></span>
<small>{{ $value['label'] }}</small>
</a>
</div>
@foreach ($commitNav as $key => $value)
<div class="col-12 col-sm-6 col-md-12 px-md-0 py-md-1 p-2">
<div class="rounded-5 bg-{{ $value['color'] }}-light shadow-sm">
<a class="d-flex justify-content-center align-items-center text-primary text-decoration-none p-3"
data-bs-toggle="tooltip" href="{{ $value['link'] }}"
title="{{ __('Accéder à la partie :name de la page', ['name' => $value['label']]) }}">
<span class="badge rounded-pill bg-{{ $value['color'] }} d-block me-2"></span>
<small>{{ $value['label'] }}</small>
</a>
</div>
@endforeach
</div>
<button class="d-none d-md-block btn btn-primary rounded-pill mt-1 w-fit px-3"
title="{{ __('Afficher/Masquer le menu des ancres') }}">
<i class="fa-solid fa-plus d-none"></i>
<i class="fa-solid fa-minus"></i>
</button>
</div>
@endforeach
</div>
<button class="d-none d-md-block btn btn-primary rounded-pill mt-1 w-fit px-3"
title="{{ __('Afficher/Masquer le menu des ancres') }}">
<i class="fa-solid fa-plus d-none"></i>
<i class="fa-solid fa-minus"></i>
</button>
</div>
</section>
{{-- BREEDING --}}
@ -70,7 +68,7 @@
<div class="col-12">
<h2 class="h2 fw-bold text-center">{{ $breedingSection->h2_title }}</h2>
@if ($breedingSection->text)
<div class="ck-content text-center">
<div class="ck-content">
{!! clean($breedingSection->text) !!}
</div>
@endif
@ -136,7 +134,7 @@
<div class="row justify-content-md-between align-items-center">
<div class="commit-text-absolute col-12 col-md-4 col-lg-5 py-md-0 pb-3">
@if ($lifeSection->text)
<div class="ck-content text-primary text-center">
<div class="ck-content text-primary">
{!! clean($lifeSection->text) !!}
</div>
@endif
@ -167,7 +165,7 @@
</div>
@endif
<div class="col-12">
<div class="ck-content text-primary text-center">
<div class="ck-content text-primary">
{!! clean($lifeSection->data['bloc_numero2_content']['value']) !!}
</div>
</div>
@ -299,7 +297,7 @@
alt="$earthSection->data['bloc_image']['alt']">
</div>
<div class="col-9">
<div class="ck-content text-quint text-start">
<div class="ck-content text-quint">
{!! clean($earthSection->data['bloc_numero2_content']['value']) !!}
</div>
<div class="text-start">
@ -331,7 +329,7 @@
<div class="row justify-content-md-between align-items-center">
<div class="commit-text-absolute col-12 col-md-4 col-lg-5 py-md-0 pb-3">
@if ($feedSection->text)
<div class="ck-content text-primary text-center">
<div class="ck-content text-primary">
{!! clean($feedSection->text) !!}
</div>
@endif
@ -365,14 +363,14 @@
@endif
<div class="row">
<div class="col-12">
<div class="ck-content text-primary text-center">
<div class="ck-content text-primary">
{!! clean($feedSection->data['bloc_numero2_content']['value']) !!}
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="ck-content text-primary text-center text-center">
<div class="ck-content text-primary">
{!! clean($feedSection->data['bloc_numero3_content']['value']) !!}
</div>
</div>
@ -400,45 +398,41 @@
</div>
</div>
{{-- SLIDER TESTIMONIALS --}}
<div class="position-relative">
<div class="testimonials-content mask-white-right overflow-hidden">
<div class="container">
<div class="row align-items-center">
<div class="col-12 position-relative mb-5">
<div class="swiper swiper-commitments-testimonials mt-lg-0 mt-5 h-fit overflow-visible"
id="swiper-commitments-testimonials">
<div class="swiper-wrapper h-fit">
@foreach ($testimonialModels as $testimonial)
<div class="swiper-slide h-auto">
@include('fo.partials.testimonials.card', [
'picture' => [
'path' => $testimonial->picture,
'alt' => $testimonial->picture_alt,
'title' => $testimonial->picture_title,
],
'job' => $testimonial->job,
'name' => $testimonial->name,
'speach' => $testimonial->content,
'bgClass' => 'bg-' . $testimonial->type->color(),
'jobClass' => 'text-white',
'nameClass' => 'text-white',
'speachClass' => 'text-white',
])
</div>
@endforeach
</div>
<div class="position-relative testimonials-content mask-white-right overflow-hidden">
<div class="container">
<div class="row align-items-center">
<div class="col-12 position-relative mb-5">
<div class="swiper swiper-commitments-testimonials mt-lg-0 mt-5 h-fit overflow-visible"
id="swiper-commitments-testimonials">
<div class="swiper-wrapper h-fit">
@foreach ($testimonialModels as $testimonial)
<div class="swiper-slide h-auto">
@include('fo.partials.testimonials.card', [
'picture' => [
'path' => $testimonial->picture,
'alt' => $testimonial->picture_alt,
'title' => $testimonial->picture_title,
],
'job' => $testimonial->job,
'name' => $testimonial->name,
'speach' => $testimonial->content,
'bgClass' => 'bg-' . $testimonial->type->color(),
'jobClass' => 'text-white',
'nameClass' => 'text-white',
'speachClass' => 'text-white',
])
</div>
@endforeach
</div>
<button
class="swiper-button swiper-button-prev-custom swiper-commitments-testimonials-button-prev z-1 mx-3">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (gauche)') }}" alt="{{ __('flèche vers la gauche') }}">
</button>
<button
class="swiper-button swiper-button-next-custom swiper-commitments-testimonials-button-next z-1 mx-3">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (droite)') }}" alt="{{ __('flèche vers la droite') }}">
</button>
</div>
<button class="swiper-button swiper-button-prev-custom swiper-commitments-testimonials-button-prev z-1 mx-3">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (gauche)') }}" alt="{{ __('flèche vers la gauche') }}">
</button>
<button class="swiper-button swiper-button-next-custom swiper-commitments-testimonials-button-next z-1 mx-3">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (droite)') }}" alt="{{ __('flèche vers la droite') }}">
</button>
</div>
</div>
</div>
@ -450,7 +444,7 @@
{{ $testimonialsSection->data['bloc_string_titre_h3_de_la_section_numero2']['value'] }}
</h3>
@if ($testimonialsSection->text)
<div class="ck-content text-primary text-center">
<div class="ck-content text-primary">
{!! clean($testimonialsSection->text) !!}
</div>
@endif

View file

@ -57,52 +57,54 @@
<div class="border-top-curved-quad-light">
<div class="bg-quad-light overflow-hidden pb-5">
<div class="container">
<div class="ck-content mb-5 text-center">
<div class="ck-content mb-5">
{!! clean($compagnyLifeSection->data['bloc_videos_content']['value']) !!}
</div>
</div>
<div class="row">
<div class="col-12 position-relative">
{{-- SWIPER VIDEO --}}
<div class="swiper mt-lg-0 mask-white h-fit overflow-visible" id="swiper-we-hire">
<div class="swiper-wrapper h-fit">
@foreach ($videoModels as $video)
<div class="swiper-slide h-auto">
<figure>
<div class="d-md-flex justify-content-center">
@include('fo.modules.video-frame', [
'type' => 'youtube',
'title' => __('Visionner la vidéo'),
'videoId' => $video->video_id,
'picture' => Vite::asset(
'resources/assets/images/others/background_video.png'),
'alt' => __('Video_about_who_we_are'),
'linkNewTab' => false,
])
</div>
<figcaption class="text-center">
{{ __($video->place) }} :<br /> {{ __($video->title) }}
</figcaption>
</figure>
</div>
@endforeach
<div class="container-fluid">
<div class="row">
<div class="col-12 position-relative">
{{-- SWIPER VIDEO --}}
<div class="swiper mt-lg-0 mask-white h-fit overflow-visible" id="swiper-we-hire">
<div class="swiper-wrapper h-fit">
@foreach ($videoModels as $video)
<div class="swiper-slide h-auto">
<figure>
<div class="d-md-flex justify-content-center">
@include('fo.modules.video-frame', [
'type' => 'youtube',
'title' => __('Visionner la vidéo'),
'videoId' => $video->video_id,
'picture' => Vite::asset(
'resources/assets/images/others/background_video.png'),
'alt' => __('Video_about_who_we_are'),
'linkNewTab' => false,
])
</div>
<figcaption class="text-center">
{{ __($video->place) }} :<br /> {{ __($video->title) }}
</figcaption>
</figure>
</div>
@endforeach
</div>
</div>
<button class="swiper-button swiper-button-prev-custom video-prev mx-3" type="button">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (gauche)') }}" alt="{{ __('flèche vers la gauche') }}">
</button>
<button class="swiper-button swiper-button-next-custom video-next mx-3" type="button">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (droite)') }}" alt="{{ __('flèche vers la droite') }}">
</button>
</div>
<div class="col-12 mt-5 text-center">
<a class="btn rounded-pill fw-semibold border-primary text-primary text-initial border border-2"
href="https://www.youtube.com/watch?v=x8ENDjHsehY" title="{{ __('Lien vers YouTube') }}" target="blank">
{{ __('Voir toutes les vidéos') }}
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}" />
</a>
</div>
<button class="swiper-button swiper-button-prev-custom video-prev mx-3" type="button">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (gauche)') }}" alt="{{ __('flèche vers la gauche') }}">
</button>
<button class="swiper-button swiper-button-next-custom video-next mx-3" type="button">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (droite)') }}" alt="{{ __('flèche vers la droite') }}">
</button>
</div>
<div class="col-12 mt-5 text-center">
<a class="btn rounded-pill fw-semibold border-primary text-primary text-initial border border-2"
href="https://www.youtube.com/watch?v=x8ENDjHsehY" title="{{ __('Lien vers YouTube') }}" target="blank">
{{ __('Voir toutes les vidéos') }}
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}" />
</a>
</div>
</div>
</div>
@ -117,7 +119,7 @@
{{ $formationSection->h2_title }}
</h2>
</div>
<div class="col-12 ck-content text-center">
<div class="col-12 ck-content">
{!! clean($formationSection->text) !!}
</div>
<div class="col-12 mt-3">
@ -139,7 +141,7 @@
</div>
<div class="col-12 my-3">
<div class="bg-primary-light rounded-3 p-lg-5 p-3">
<div class="ck-content text-center">
<div class="ck-content">
<h3>{{ $formationSection->data['bloc_string_titre_h3_de_la_section']['value'] }}</h3>
</div>
<div class="d-flex flex-column flex-lg-row justify-content-center align-items-center">
@ -159,14 +161,14 @@
'wysiwyg' => true,
])
</div>
<div class="ck-content text-lg-start ms-lg-5 text-center">
<div class="ck-content ms-lg-5">
{!! clean($formationSection->data['bloc_n2_content']['value']) !!}
</div>
</div>
</div>
</div>
<div class="col-12 mt-1">
<div class="ck-content text-center">
<div class="ck-content">
{!! clean($formationSection->data['bloc_n3_content']['value']) !!}
</div>
</div>
@ -185,39 +187,41 @@
<h2 class="fw-bold">{{ $testimonialSection->h2_title }}</h2>
<h3>{{ $testimonialSection->data['bloc_string_titre_h3_de_la_section']['value'] }}</h3>
</div>
<div class="row">
<div class="col-12 position-relative">
<div class="swiper mt-lg-0 mask-white h-fit overflow-visible" id="swiper-we-hire-testimonials">
<div class="swiper-wrapper h-fit">
@foreach ($testimonialModels as $testimonial)
<div class="swiper-slide h-auto">
@include('fo.partials.testimonials.card', [
'job' => $testimonial->job,
'name' => $testimonial->name,
'speach' => $testimonial->content,
'picture' => [
'path' => $testimonial->picture,
'title' => $testimonial->picture_title,
'alt' => $testimonial->picture_alt,
],
'bgClass' => 'bg-white',
'jobClass' => 'text-quint',
'nameClass' => 'text-primary fw-semibold',
'speachClass' => 'text-primary',
'filter' => 'filter-quote',
])
</div>
@endforeach
<div class="container-fluid">
<div class="row">
<div class="col-12 position-relative">
<div class="swiper mt-lg-0 mask-white h-fit overflow-visible" id="swiper-we-hire-testimonials">
<div class="swiper-wrapper h-fit">
@foreach ($testimonialModels as $testimonial)
<div class="swiper-slide h-auto">
@include('fo.partials.testimonials.card', [
'job' => $testimonial->job,
'name' => $testimonial->name,
'speach' => $testimonial->content,
'picture' => [
'path' => $testimonial->picture,
'title' => $testimonial->picture_title,
'alt' => $testimonial->picture_alt,
],
'bgClass' => 'bg-white',
'jobClass' => 'text-quint',
'nameClass' => 'text-primary fw-semibold',
'speachClass' => 'text-primary',
'filter' => 'filter-quote',
])
</div>
@endforeach
</div>
</div>
<button class="swiper-button swiper-button-prev-custom testi-prev mx-3" type="button">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (gauche)') }}" alt="{{ __('flèche vers la gauche') }}">
</button>
<button class="swiper-button swiper-button-next-custom testi-next mx-3" type="button">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (droite)') }}" alt="{{ __('flèche vers la droite') }}">
</button>
</div>
<button class="swiper-button swiper-button-prev-custom testi-prev mx-3" type="button">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (gauche)') }}" alt="{{ __('flèche vers la gauche') }}">
</button>
<button class="swiper-button swiper-button-next-custom testi-next mx-3" type="button">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (droite)') }}" alt="{{ __('flèche vers la droite') }}">
</button>
</div>
</div>
</div>
@ -237,7 +241,7 @@
</div>
<div class="row mb-3 mt-4">
<div class="col-12">
<div class="ck-content text-primary text-center">
<div class="ck-content text-primary">
{!! clean($paritySection->data['bloc_contenu_n1_content']['value']) !!}
</div>
</div>
@ -251,7 +255,7 @@
<p class="card-text">{{ $paritySection->data['bloc_image_n1']['title'] }}</p>
</div>
</div>
<div class="ck-content my-1 text-center">
<div class="ck-content my-1">
{!! clean($paritySection->data['bloc_contenu_n2_content']['value']) !!}
</div>
</div>
@ -269,7 +273,7 @@
<p class="card-text">{{ $paritySection->data['bloc_image_n2']['title'] }}</p>
</div>
</div>
<div class="ck-content my-1 text-center">
<div class="ck-content my-1">
{!! clean($paritySection->data['bloc_contenu_n3_content']['value']) !!}
</div>
</div>
@ -289,47 +293,44 @@
<section class="find border-top-curved-quad-light anchor-padding" id="on-se-retrouve">
<div class="bg-quad-light pb-5">
<div class="container">
<div class="container-fluid">
<div class="row text-primary text-center">
<div class="col-12 mb-3">
<h2 class="fw-bold">{{ $findSection->data['bloc_string_titre_h3_de_la_section']['value'] }}</h2>
</div>
<div class="col-10 offset-1">
<div class="ck-content mb-5">
{!! clean($findSection->data['bloc_contenu_n1_content']['value']) !!}
</div>
<div class="row text-primary text-center">
<div class="col-12 mb-3">
<h2 class="fw-bold">{{ $findSection->data['bloc_string_titre_h3_de_la_section']['value'] }}</h2>
</div>
<div class="col-10 offset-1">
<div class="ck-content mb-5">
{!! clean($findSection->data['bloc_contenu_n1_content']['value']) !!}
</div>
</div>
<div class="row">
<div class="col-12 text-center">
<img class="img-fluid rounded-4 find-img"
src="{{ Vite::asset('resources/assets/images/banners/alternative_banner_reworked.jpg') }}"
title="{{ $findSection->data['bloc_image']['title'] }}"
alt="{{ $findSection->data['bloc_image']['alt'] }}">
</div>
</div>
<div class="row">
<div class="col-12 text-center">
<img class="img-fluid rounded-4 find-img"
src="{{ Vite::asset('resources/assets/images/banners/alternative_banner_reworked.jpg') }}"
title="{{ $findSection->data['bloc_image']['title'] }}" alt="{{ $findSection->data['bloc_image']['alt'] }}">
</div>
<div class="row text-primary row-gap-3 mt-4 text-center">
<div class="col-12 fw-bolder fs-4 mb-2">
{{ __('Nos offres: ') }}
</div>
<div class="col-12 col-lg-6 text-center">
<a class="btn rounded-pill fw-semibold border-primary text-primary text-initial border border-2"
href="https://recrutement.ldc.fr/fr/annonces?brands=789,591,2727" target="_blank">
{{ __('Retrouver toutes nos annonces') }}
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}" />
</a>
</div>
<div class="col-12 col-lg-6 text-center">
<a class="btn rounded-pill fw-semibold border-primary text-primary text-initial border border-2"
href="https://recrutement.ldc.fr/fr/candidature/DPZp4ZvY/2" target="_blank">
{{ __('Je dépose ma candidature spontanée') }}
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}" />
</a>
</div>
<div class="col-12">
<div class="ck-content mb-5">
{!! clean($findSection->data['bloc_contenu_n2_content']['value']) !!}
</div>
</div>
<div class="row text-primary row-gap-3 mt-4 text-center">
<div class="col-12 fw-bolder fs-4 mb-2">
{{ __('Nos offres: ') }}
</div>
<div class="col-12 col-lg-6 text-center">
<a class="btn rounded-pill fw-semibold border-primary text-primary text-initial border border-2"
href="https://recrutement.ldc.fr/fr/annonces?brands=789,591,2727" target="_blank">
{{ __('Retrouver toutes nos annonces') }}
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}" />
</a>
</div>
<div class="col-12 col-lg-6 text-center">
<a class="btn rounded-pill fw-semibold border-primary text-primary text-initial border border-2"
href="https://recrutement.ldc.fr/fr/candidature/DPZp4ZvY/2" target="_blank">
{{ __('Je dépose ma candidature spontanée') }}
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}" />
</a>
</div>
<div class="col-12">
<div class="ck-content mb-5">
{!! clean($findSection->data['bloc_contenu_n2_content']['value']) !!}
</div>
</div>
</div>

View file

@ -35,7 +35,7 @@
</div>
<div class="row align-items-center mb-5">
@if ($missionSection->text)
<div class="ck-content text-primary text-center">
<div class="ck-content text-primary">
{!! clean($missionSection->text) !!}
</div>
@endif
@ -143,7 +143,7 @@
</div>
</div>
<div class="col-12 rounded-3 mt-2 bg-white p-4">
<div class="swiper swiper-teams p-0 pb-2" id="swiper-teams">
<div class="swiper swiper-teams p-0" id="swiper-teams">
<div class="swiper-wrapper">
@php
$homeTeamData = [
@ -158,8 +158,14 @@
</div>
@endforeach
</div>
<div
class="swiper-pagination swiper-teams-pagination position-absolute d-flex justify-content-between align-items-center w-100">
<div class="d-flex justify-content-center align-items-center">
<div
class="swiper-pagination swiper-teams-pagination d-flex justify-content-between align-items-center w-100">
</div>
<button class="swiper-pagination-playpause btn btn-primary btn-sm m-1 ms-3">
<i class="fa-solid fa-pause"></i>
<i class="fa-solid fa-play d-none"></i>
</button>
</div>
</div>
</div>
@ -248,7 +254,7 @@
</section>
{{-- STRIP --}}
@if ($stripModels->isNotEmpty())
<section class="strip bg-quad d-flex sticky-lg-bottom mt-5 overflow-hidden text-black">
<section class="strip bg-quad d-flex sticky-lg-bottom z-2 mt-5 overflow-hidden text-black">
<div class="moving-strip d-flex" id="moving-strip">
@foreach ($stripModels as $stripModel)
@include('fo.partials.strips.strip-item')

View file

@ -7,14 +7,10 @@
@section('content')
<div class="container">
<div class="row">
<div class="col">
<div class="col-12">
<h1 class="f-intro-head-h-base text-center">{{ __($staticPageModel->title) }}</h1>
</div>
</div>
</div>
<div class="container">
<div class="row mb-5">
<div class="col ck-content">
<div class="col-12 ck-content">
{!! clean($staticPageModel->content) !!}
</div>
</div>

View file

@ -27,7 +27,7 @@
{!! clean($lifeSection->text) !!}
</div>
@endif
<div class="container-fluid d-flex flex-column justify-content-between align-items-center row-gap-4 mt-4">
<div class="d-flex flex-column justify-content-between align-items-center row-gap-4 mt-4">
@foreach ($newsModels as $news)
@include('fo.pages.news.card')
@endforeach
@ -56,29 +56,31 @@
</div>
</div>
</div>
<div class="row w-100 mx-auto overflow-hidden">
<div class="col-12 p-0">
<div class="swiper swiper-news mt-lg-0 mask-white-right overflow-visible px-5" id="swiper-we-move">
<div class="swiper-wrapper">
@foreach ($newsModels as $news)
<div class="swiper-slide h-auto">
@include('fo.pages.news.card')
</div>
@endforeach
<div class="container-fluid">
<div class="row w-100 mx-auto overflow-hidden">
<div class="col-12 p-0">
<div class="swiper swiper-news mt-lg-0 mask-white overflow-visible px-5" id="swiper-we-move">
<div class="swiper-wrapper">
@foreach ($newsModels as $news)
<div class="swiper-slide h-auto">
@include('fo.pages.news.card')
</div>
@endforeach
</div>
</div>
<button class="swiper-button swiper-button-prev-custom d-none d-lg-block mx-3">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (gauche)') }}" alt="{{ __('flèche vers la gauche') }}" role="button">
</button>
<button class="swiper-button swiper-button-next-custom d-none d-lg-block mx-3">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (droite)') }}" alt="{{ __('flèche vers la droite') }}" role="button">
</button>
</div>
<button class="swiper-button swiper-button-prev-custom d-none d-lg-block mx-3">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (gauche)') }}" alt="{{ __('flèche vers la gauche') }}" role="button">
</button>
<button class="swiper-button swiper-button-next-custom d-none d-lg-block mx-3">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (droite)') }}" alt="{{ __('flèche vers la droite') }}" role="button">
</button>
</div>
<div class="col-12">
<div class="d-flex justify-content-center mb-1 mt-4">
{{ $newsModels->links() }}
<div class="col-12">
<div class="d-flex justify-content-center mb-1 mt-4">
{{ $newsModels->links() }}
</div>
</div>
</div>
</div>
@ -86,19 +88,23 @@
</section>
{{-- CORPORATE LIFE --}}
<section class="border-top-curved-quint-light w-100">
<div class="testimonials bg-quint-light d-flex justify-content-center align-items-center">
<div class="col-12 col-lg-8 p-5 pt-4 text-center">
<h2 class="h2 fw-bold text-primary">{{ $commitmentSection->h2_title }}</h2>
@if ($commitmentSection->text)
<div class="ck-content text-primary">
{!! clean($commitmentSection->text) !!}
<div class="testimonials bg-quint-light">
<div class="container">
<div class="row">
<div class="col-12">
<h2 class="h2 fw-bold text-primary text-center">{{ $commitmentSection->h2_title }}</h2>
@if ($commitmentSection->text)
<div class="ck-content text-primary">
{!! clean($commitmentSection->text) !!}
</div>
@endif
<div class="d-flex justify-content-center mt-4">
<a class="btn btn-primary rounded-5 fw-bold border-primary border border-2"
href="{{ route('fo.commit.show') }}#testimonials" title="{{ __('Retrouver nos témoignages') }}">
{{ __('On témoigne') }}
</a>
</div>
</div>
@endif
<div class="d-flex justify-content-center mt-4">
<a class="btn btn-primary rounded-5 fw-bold border-primary border border-2"
href="{{ route('fo.commit.show') }}#testimonials" title="{{ __('Retrouver nos témoignages') }}">
{{ __('On témoigne') }}
</a>
</div>
</div>
</div>

View file

@ -12,17 +12,20 @@
{{ __('Retour') }}
</a>
</div>
<div class="card master-card p-0">
<div class="card master-card border-0 p-0">
<div class="card-header border-0 bg-transparent">
<div class="col-12 text-center">
<p class="text-sixt fw-bolder mb-0 mt-3">{{ str($news->publish_at->locale('fr_FR')->isoFormat('D MMMM Y'))->upper() }}
</p>
</div>
</div>
<div class="card-body">
<div class="title-intro row align-items-center mb-3 text-center">
<div class="card-date col-12 text-center">
<p class="text-sixt fw-bolder">{{ str($news->publish_at->locale('fr_FR')->isoFormat('D MMMM Y'))->upper() }}</p>
</div>
<h1 class="col-12 text-primary m-auto p-3">
<h1 class="col-12 text-primary m-auto p-3 pt-0">
{{ $news->title }}
</h1>
</div>
<div class="card sub-card text-primary">
<div class="card sub-card text-primary border-0">
<div class="card-body row align-items-center">
<div class="news-content col-lg-6 col-12 order-lg-first order-last">
{!! clean($news->content) !!}
@ -34,7 +37,7 @@
</div>
</div>
</div>
<div class="row justify-content-center container-fluid">
<div class="row justify-content-center">
<div class="col-12 d-flex flex-column flex-md-row justify-content-evenly mt-5">
<a class="btn rounded-pill fw-bold border-primary border border-2 text-center" href="{{ route('fo.news.show', $prevNews) }}"
title="{{ __('Voir l\'article') }} {{ $prevNews->title }}">

View file

@ -6,23 +6,19 @@
@section('content')
<section class="site">
<section class="header">
<div class="container">
<div class="row justify-content-center">
<div class="col-4 col-lg-3">
<img class="w-100" src="{{ asset($siteModel->logo) }}" title="{{ $siteModel->logo_title }}"
alt="{{ $siteModel->logo_alt }}">
</div>
<section class="header container">
<div class="row justify-content-center">
<div class="col-6 col-sm-6 col-md-4 col-lg-3">
<img class="img-fluid" src="{{ asset($siteModel->logo) }}" title="{{ $siteModel->logo_title }}"
alt="{{ $siteModel->logo_alt }}">
</div>
<div class="row justify-content-between">
<div class="col">
<div class="col-12">
<div class="d-flex justify-content-between">
<a href="{{ route('fo.home.show') }}" title="{{ __('Retour à la page d\'accueil') }}">
<img class="arrow-left" src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Retour à la page d\'accueil') }}" alt="{{ __('Flèche vers la gauche') }}">
{{ __('Retour') }}
</a>
</div>
<div class="col d-flex justify-content-end">
@if ($nextSiteModel)
<a href="{{ route('fo.sites.show', $nextSiteModel) }}"
title="{{ __('Voir le site suivant : :name', ['name' => $nextSiteModel->name]) }}">
@ -42,7 +38,6 @@
<div class="container">
<div class="row align-items-center">
<div class="col-12 position-relative">
{{-- Swiper pictures --}}
<div class="swiper swiper-sites-pictures h-fit overflow-visible" id="swiper-sites-pictures">
<div class="swiper-wrapper h-fit">
<div class="swiper-slide h-auto">
@ -63,14 +58,14 @@
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (gauche)') }}" alt="{{ __('flèche vers la gauche') }}">
</button>
<button class="swiper-button swiper-sites-pictures-button-next swiper-button-next-custom d-none d-lg-block mx-3">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}"
title="{{ __('Navigation du slider (droite)') }}" alt="{{ __('flèche vers la droite') }}">
</button>
</div>
</div>
</div>
</div>
<button class="swiper-button swiper-sites-pictures-button-next swiper-button-next-custom d-none d-lg-block mx-3">
<img src="{{ Vite::asset('resources/assets/images/misc/blue-arrow.svg') }}" title="{{ __('Navigation du slider (droite)') }}"
alt="{{ __('flèche vers la droite') }}">
</button>
</section>
{{-- TEXT SECTION --}}
<section class="infos mt-5">
@ -83,12 +78,13 @@
</div>
</div>
<div class="row align-items-center mt-4">
<div class="col-6 d-flex justify-content-lg-end">
<p class="text-primary"><i class="fa-solid fa-user-group"></i> {{ $siteModel->employees }} {{ __('personnes') }}</p>
<div class="col-12 col-sm-6 mb-sm-0 text-md-end mb-2 text-center">
<p class="text-primary m-0"><i class="fa-solid fa-user-group"></i> {{ $siteModel->employees }} {{ __('personnes') }}
</p>
</div>
<div class="col-6 d-flex justify-content-lg-start">
<div class="col-12 col-sm-6 d-flex justify-content-center justify-content-md-start align-items-center">
<i class="fa-solid fa-paw"></i>
<p class="text-primary d-flex align-items-center ms-1">
<p class="text-primary d-flex align-items-center my-0 ms-1">
{{ implode(
', ',
collect($siteModel->pictos)->map(function ($picto) {
@ -210,7 +206,7 @@
</div>
<div class="row">
<div class="col-12">
<div class="ck-content text-primary text-center">{!! clean($siteModel->highlights) !!}</div>
<div class="ck-content text-primary">{!! clean($siteModel->highlights) !!}</div>
</div>
</div>
</div>

View file

@ -18,46 +18,44 @@
@section('content')
<section class="unveil">
{{-- KEY NUMBERS --}}
<section class="key-numbers my-5">
<div class="container text-center">
<div class="row">
<div class="col-12">
<h2 class="h2 fw-bold text-primary">{{ $keySection->h2_title }}</h2>
</div>
<section class="key-numbers container my-5 text-center">
<div class="row">
<div class="col-12">
<h2 class="h2 fw-bold text-primary">{{ $keySection->h2_title }}</h2>
</div>
<div class="row justify-content-center">
<div class="col-12 col-sm-6 col-lg-3 col-xl-2 my-4">
@include('fo.partials.key-number', [
'color' => 'sixt',
'value' => $keySection->data['bloc_key_sites']['value'],
'text' => 'sites',
'link' => '#sites',
])
</div>
<div class="col-12 col-sm-6 col-lg-3 col-xl-2 my-4">
@include('fo.partials.key-number', [
'color' => 'quad',
'value' => $keySection->data['bloc_key_especes']['value'],
'text' => 'espèces',
'link' => '#local',
])
</div>
<div class="col-12 col-sm-6 col-lg-3 col-xl-2 my-4">
@include('fo.partials.key-number', [
'color' => 'tertiary',
'value' => $keySection->data['bloc_key_ca']['value'],
'text' => 'millions de ca',
'link' => route('fo.produce.show') . '#local',
])
</div>
<div class="col-12 col-sm-6 col-lg-3 col-xl-2 my-4">
@include('fo.partials.key-number', [
'color' => 'quint',
'value' => $keySection->data['bloc_key_collaborateurs']['value'],
'text' => 'collaborateurs',
'link' => route('fo.hire.show'),
])
</div>
</div>
<div class="row justify-content-center">
<div class="col-12 col-sm-6 col-lg-3 col-xl-2 my-4">
@include('fo.partials.key-number', [
'color' => 'sixt',
'value' => $keySection->data['bloc_key_sites']['value'],
'text' => 'sites',
'link' => '#sites',
])
</div>
<div class="col-12 col-sm-6 col-lg-3 col-xl-2 my-4">
@include('fo.partials.key-number', [
'color' => 'quad',
'value' => $keySection->data['bloc_key_especes']['value'],
'text' => 'espèces',
'link' => '#local',
])
</div>
<div class="col-12 col-sm-6 col-lg-3 col-xl-2 my-4">
@include('fo.partials.key-number', [
'color' => 'tertiary',
'value' => $keySection->data['bloc_key_ca']['value'],
'text' => 'millions de ca',
'link' => route('fo.produce.show') . '#local',
])
</div>
<div class="col-12 col-sm-6 col-lg-3 col-xl-2 my-4">
@include('fo.partials.key-number', [
'color' => 'quint',
'value' => $keySection->data['bloc_key_collaborateurs']['value'],
'text' => 'collaborateurs',
'link' => route('fo.hire.show'),
])
</div>
</div>
</section>
@ -178,7 +176,6 @@
@endforeach
</div>
</div>
<div class="carousel-inner overflow-visible pb-4">
@foreach ($historicalMilestoneModels as $historicalMilestoneModel)
<div @class(['carousel-item bg-body', 'active' => $loop->first])>
@ -224,21 +221,19 @@
</div>
</section>
{{-- COMMITMENTS --}}
<section class="commitments pb-lg-5 mb-5">
<div class="container">
<div class="row">
<div class="col-12">
<div class="text-bg-quint rounded-3 p-4">
<h2 class="h2 text-lg-center">{{ $commitmentSection->h2_title }}</h2>
@if ($commitmentSection->text)
<div class="ck-content">
{!! clean($commitmentSection->text) !!}
</div>
@endif
<div class="d-flex justify-content-center my-4">
<a class="btn btn-white text-quint rounded-5 fw-bold text-inherit" href="{{ route('fo.commit.show') }}"
title="{{ __('Accéder à la page \'On s\'engage\'') }}">{{ __('On s\'engage') }}</a>
<section class="commitments pb-lg-5 container mb-5">
<div class="row">
<div class="col-12">
<div class="text-bg-quint rounded-3 p-4">
<h2 class="h2 text-lg-center">{{ $commitmentSection->h2_title }}</h2>
@if ($commitmentSection->text)
<div class="ck-content">
{!! clean($commitmentSection->text) !!}
</div>
@endif
<div class="d-flex justify-content-center my-4">
<a class="btn btn-white text-quint rounded-5 fw-bold text-inherit" href="{{ route('fo.commit.show') }}"
title="{{ __('Accéder à la page \'On s\'engage\'') }}">{{ __('On s\'engage') }}</a>
</div>
</div>
</div>