Merge branch 'issue-325' into 'develop'

feat ✨ : add migration and config front for oui-c-bon page

See merge request ldc-web/projets/le-gaulois!298
This commit is contained in:
Noix 2026-04-22 15:01:53 +00:00
commit 8afe75e47e
4 changed files with 98 additions and 171 deletions

View file

@ -37,8 +37,15 @@ class BreedingController extends Controller
public function ocbBreederPage(): \Illuminate\Contracts\View\View
{
$ocbBreederModels = OcbBreeder::getOcbBreederCards();
$staticPage = StaticPage::query()->where('type', StaticPageType::ouiCBon)->first();
$categoryApproachModels = CategoryApproaches::all();
$sections = SectionApproach::query()->where('page_id', $staticPage->id)->get();
$sectionApproachModels = CollectionHelper::mapItemsToCards($sections->toArray(), $categoryApproachModels->toArray());
return view('fo.pages.breeding.oui-c-est-bon', [
'ocbBreederModels' => $ocbBreederModels,
'staticPageModel' => $staticPage,
'categoryApproachModels' => $categoryApproachModels,
'sectionApproachModels' => $sectionApproachModels
]);
}

View file

@ -0,0 +1,60 @@
<?php
use App\Enums\StaticPageType;
use App\Models\StaticPage;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
// OUI C EST BON
$staticPage = StaticPage::query()->where('type', StaticPageType::ouiCBon)->first();
$staticPage->data = [
'title' => [
'label' => 'Cahier de charge : Titre',
'inputType' => 11,
'value' => 'Notre cahier des charges',
'validate' => 'required|string|between:3,255',
'required' => true
],
'description' => [
'label' => 'Cahier de charge : Description',
'inputType' => 12,
'value' => '<p>Notre démarche inédite Le Gaulois ’’Sortant à l’extérieur’’ s’engage à ce que les volailles sortent à l’extérieur, tous les jours, dans les prés. Découvrez la démarche développée avec les éleveurs partenaires mobilisés chaque jour pour élever des volailles, nées et élevées en France.</p>',
'validate' => 'required|string|min:15',
'required' => true
],
'picto' => [
'label' => 'Cahier de charge : Picto',
'inputType' => 4,
'dimensions' => [
'width' => 90,
'height' => 90
],
'alt' => 'Description principale de la démarche.',
'title' => 'titre cahier des charges',
'value' => 'storage/modelfiles/static_pages/26/03/03/fa/e6764f38-69a6a058be95d.png',
'validate' => 'required',
'required' => true
]
];
$staticPage->saveQuietly();
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('static_pages', function() {
$staticPage = StaticPage::query()->where('type', StaticPageType::ouiCBon)->first();
$staticPage->data = [];
$staticPage->saveQuietly();
});
}
};

View file

@ -1,159 +1,7 @@
@php
$items = [
'chicken' => [
[
'category' => 'Alimentation et santé',
'icon' => [
'path' => 'resources/assets/images/breeding/oui-c-est-bon/corn.svg',
'alt' => "Pictogramme d'un accès à l'eau et l'alimenttaion en continu",
'description' => "Pictogramme d'une goutte d'eau et d'un épi de blé entouré de d'un clycle de deux flèches",
],
'content' => [
[
'title' => "Le Gaulois s'engage à ce que les volailles soient :",
'points' => [
'Sans traitement antibiotique',
'Nourries avec des céréales entières 100 % françaises',
'Alimentées avec un minimum de 65 % de céréales',
],
],
],
'class' => 'card-template-sm',
],
[
'category' => 'Bien-être Animal',
'icon' => [
'path' => 'resources/assets/images/breeding/oui-c-est-bon/chicken.svg',
'alt' => "Pictogramme d'un accès à l'eau et l'alimenttaion en continu",
'description' => "Pictogramme d'une goutte d'eau et d'un épi de blé entouré de d'un clycle de deux flèches",
],
'content' => [
[
'title' => 'Le Gaulois s\'engage pour l\'amélioration du bien-être animal :',
'points' => [
'Lumière naturelle pour que les poulets et les dindes grandissent à la lumière du jour.',
'La présence de pierres à picorer ou de perchoirs ou de ballots de paille, pour faciliter l\'expression des comportements naturels des volailles.',
'Les élevages sont proches du site de préparation (< 300 km).',
],
],
[
'title' => 'D\'autres aménagements des poulaillers sont encouragés dans une démarche de progrès, comme :',
'points' => [
'La diffusion de musique ou de radio pour que les volailles soient calmes.',
'Plus d\'espace pour les animaux, ainsi leur circulation est facilitée dans l\'espace des poulaillers.',
],
],
],
'class' => 'card-template-md',
],
[
'category' => 'Environnement',
'icon' => [
'path' => 'resources/assets/images/breeding/oui-c-est-bon/cloud.svg',
'alt' => "Pictogramme d'un accès à l'eau et l'alimenttaion en continu",
'description' => "Pictogramme d'une goutte d'eau et d'un épi de blé entouré de d'un clycle de deux flèches",
],
'content' => [
[
'title' => 'Le Gaulois s\'investit dans une démarche de progrès en faveur de l\'environnement :',
'points' => [
'Incitation et accompagnement des éleveurs à la plantation de haies et d\'arbres, des élevages propres et rangés, des déchets triés et recyclés pour une meilleure intégration paysagère des élevages.',
'Développement de poulaillers à basse consommation avec, par exemple, l\'installation de récupérateurs de chaleur ou de panneaux photovoltaïques...',
'Optimisation de l\'utilisation des ressources naturelles avec le développement des stations de compostage des litières.',
],
],
],
'class' => 'card-template-md',
],
[
'category' => 'Traçabilité',
'icon' => [
'path' => 'resources/assets/images/breeding/oui-c-est-bon/search.svg',
'alt' => "Pictogramme d'un accès à l'eau et l'alimenttaion en continu",
'description' => "Pictogramme d'une goutte d'eau et d'un épi de blé entouré de d'un clycle de deux flèches",
],
'content' => [
[
'title' => 'Le Gaulois s\'engage à :',
'points' => [
'Préciser le nom de l\'éleveur sur les barquettes.',
'Présenter l\'éleveur sur le site internet www.legaulois.fr',
'Faire contrôler sa démarche Le Gaulois par Certipaq, organisme indépendant.',
],
],
],
'class' => 'card-template-sm',
],
],
'turkey' => [
[
'category' => 'Bien être animal',
'icon' => [
'path' => 'resources/assets/images/breeding/oui-c-est-bon/chicken.svg',
'alt' => "Pictogramme d'un accès à l'eau et l'alimenttaion en continu",
'description' => "Pictogramme d'une goutte d'eau et d'un épi de blé entouré de d'un clycle de deux flèches",
],
'content' => [
[
'title' => "Le Gaulois s'engage pour l'amélioration du bien-être animal :",
'points' => [
'Lumière naturelle pour que les poulets et les dindes grandissent à la lumière du jour.',
'La présence de pierres à picorer ou de perchoirs ou de ballots de paille, pour faciliter l\'expression des comportements naturels des volailles.',
'Les élevages sont proches du site de préparation (< 300 km)',
],
],
[
'title' => "D'autres aménagements des poulaillers sont encouragés dans une démarche de progrès, comme :",
'points' => [
'La diffusion de musique ou de radio pour que les volailles soient calmes.',
"Plus d'espace pour les animaux, ainsi leur circulation est facilitée dans l'espace des poulaillers.",
],
],
],
'class' => 'card-template-md',
],
[
'category' => 'Environnement',
'icon' => [
'path' => 'resources/assets/images/breeding/oui-c-est-bon/cloud.svg',
'alt' => "Pictogramme d'un accès à l'eau et l'alimenttaion en continu",
'description' => "Pictogramme d'une goutte d'eau et d'un épi de blé entouré de d'un clycle de deux flèches",
],
'content' => [
[
'title' => 'Le Gaulois s\'investit dans une démarche de progrès en faveur de l\'environnement :',
'points' => [
'Incitation et accompagnement des éleveurs à la plantation de haies et d\'arbres, des élevages propres et rangés, des déchets triés et recyclés pour une meilleure intégration paysagère des élevages.',
'Développement de poulaillers à basse consommation avec, par exemple, l\'installation de récupérateurs de chaleur ou de panneaux photovoltaïques...',
'Optimisation de l\'utilisation des ressources naturelles avec le développement des stations de compostage des litières.',
],
],
],
'class' => 'card-template-md',
],
[
'category' => 'Traçabilité',
'icon' => [
'path' => 'resources/assets/images/breeding/oui-c-est-bon/search.svg',
'alt' => "Pictogramme d'un accès à l'eau et l'alimenttaion en continu",
'description' => "Pictogramme d'une goutte d'eau et d'un épi de blé entouré de d'un clycle de deux flèches",
],
'content' => [
[
'title' => 'Le Gaulois s\'engage à :',
'points' => [
'Préciser le nom de l\'éleveur sur les barquettes.',
'Présenter l\'éleveur sur le site internet www.legaulois.fr',
'Faire contrôler sa démarche Le Gaulois par Certipaq, organisme indépendant.',
],
],
],
'class' => 'card-template-sm',
],
],
];
$items = $sections
@endphp
@props(['onglets' => [], 'sections' => [], 'staticPageModel'])
<div class="container-fluid position-relative z-1 py-5">
<div class="row w-100 justify-content-center px-md-4 mx-auto px-1">
@ -161,41 +9,53 @@
<div class="d-md-flex justify-content-md-center gap-md-3">
{{-- Oui c'est bon Logo --}}
<h2 class="h1 f-intro-head-h-base align-self-md-center text-center">{{ __('Notre cahier des charges') }}
<h2 class="h1 f-intro-head-h-base align-self-md-center text-center">{{ __($staticPageModel->data['title']['value']) }}
</h2>
<div class="d-flex justify-content-center mb-3">
<div>
<img class="img-fluid center-block"
src="{{ Vite::asset('resources/assets/images/breeding/oui-c-est-bon/logo-oui-c-est-bon.png') }}"
alt="{{ __('Logo de la démarche Oui c\'est bon') }}">
src="{{ asset($staticPageModel->data['picto']['value']) }}"
alt="{{ __($staticPageModel->data['picto']['alt']) }}">
</div>
</div>
</div>
<p class="w-lg-50 mx-auto text-center">
{{ __('Le Gaulois déploie sa démarche ’’Oui c’est Bon’’ pour garantir des produits de qualité à un prix accessible tout en valorisant l’amélioration du bien-être animal, la santé des volailles et la préservation de l’environnement.') }}
{{ __(strip_tags($staticPageModel->data['description']['value'])) }}
</p>
</div>
</div>
{{-- Buttons --}}
<div class="d-flex justify-content-center gap-md-4 gap-5">
<button class="btn btn-secondary fs-6 d-block" id="chicken-button" type="button">{{ __('Poulet') }}</button>
<button class="btn btn-light fs-6 d-block" id="turkey-button" type="button">{{ __('Dinde') }}</button>
@foreach ($items as $categoryKey => $categoryItems)
<button
class="btn btn-secondary fs-6 d-block category-btn"
type="button"
data-category="{{ $categoryKey }}"
>
{{ $categoryKey }}
</button>
@endforeach
</div>
{{-- Cards --}}
<div class="mb-5 mt-5" id="cards-container">
<div class="row mb-5 mt-5" id="cards-container-outside">
<div class="card-grid">
@foreach ($items['chicken'] as $item)
<x-fo.breeding.light-card :category="$item['category']" :icon="$item['icon']" :content="$item['content']" :class="$item['class'] . ' chicken-card'" />
@endforeach
@foreach ($items['turkey'] as $item)
<x-fo.breeding.light-card :category="$item['category']" :icon="$item['icon']" :content="$item['content']" :class="$item['class'] . ' turkey-card d-none'" />
@foreach ($items as $categoryKey => $categoryItems)
<div style="display: contents" data-category="{{ $categoryKey }}">
@foreach ($categoryItems as $item)
<x-fo.breeding.light-card
:category="$item['category']"
:icon="$item['icon']"
:content="$item['content']"
:class="$item['class']"
data-category="{{ $categoryKey }}"
/>
@endforeach
</div>
@endforeach
</div>
</div>
</div>

View file

@ -5,12 +5,12 @@
@section('bg-offset', true)
@section('content')
<x-fo.breeding.section.header-section title="{{ __('Démarche Oui c’est bon') }}" />
<x-fo.breeding.section.header-section title="{{ __($staticPageModel->title) }}" :image="$staticPageModel->picture" />
<section class="position-relative line-border-large" id="oui-c-est-bon">
<div class="position-absolute h-100 w-100 top-0 z-0">
<div class="bg-green-wood h-100 w-100" id="demarche-bg"></div>
</div>
<x-fo.breeding.section.oui-c-est-bon.cahier-des-charges-section />
<x-fo.breeding.section.oui-c-est-bon.cahier-des-charges-section :staticPageModel="$staticPageModel" :onglets="$categoryApproachModels" :sections="$sectionApproachModels"/>
<x-fo.breeding.section.oui-c-est-bon.search-breeders-section :ocbBreederModels="$ocbBreederModels" />
<x-fo.breeding.section.oui-c-est-bon.our-breeder-section />
</section>