diff --git a/app/Enums/StaticPageType.php b/app/Enums/StaticPageType.php index dd8436b3..0d86c143 100644 --- a/app/Enums/StaticPageType.php +++ b/app/Enums/StaticPageType.php @@ -29,6 +29,7 @@ enum StaticPageType: int case breedingHealth = 19; case search = 20; case sitemap = 21; + case rules = 22; /** * Optionnal labels definition. @@ -56,7 +57,8 @@ enum StaticPageType: int self::breedingFood->name => 'L\'alimentation des volailles', self::breedingHealth->name => 'La santé des volailles', self::search->name => 'Recherche', - self::sitemap->name => 'Plan du site', + self::sitemap->name => 'Plan du site', + self::rules->name => 'Règlement du jeu', ]; /** diff --git a/app/Http/Controllers/Fo/StaticPageController.php b/app/Http/Controllers/Fo/StaticPageController.php index f62636a7..daab53af 100644 --- a/app/Http/Controllers/Fo/StaticPageController.php +++ b/app/Http/Controllers/Fo/StaticPageController.php @@ -59,6 +59,19 @@ class StaticPageController extends Controller return view('fo.pages.sitemap', ['staticPageModel' => $sitemap, 'singlePages' => $singlePages]); } + /** + * Rules page. + * + * @param \App\Models\StaticPage $staticPage + * @return \Illuminate\Contracts\View\View + */ + public function rules(StaticPage $sitemap) + { + $rules = StaticPage::query()->where('type', StaticPageType::rules)->first(); + + return view('fo.pages.rules', ['staticPageModel' => $rules]); + } + /** * Termes and conditions selling page. * diff --git a/app/Providers/ViewServiceProvider.php b/app/Providers/ViewServiceProvider.php index d9496dcf..6e151395 100644 --- a/app/Providers/ViewServiceProvider.php +++ b/app/Providers/ViewServiceProvider.php @@ -124,6 +124,7 @@ class ViewServiceProvider extends ServiceProvider ['name' => 'sellingStaticPageModel', 'value' => StaticPage::getCachedStaticPage(StaticPageType::selling)], ['name' => 'accessibilityStaticPageModel', 'value' => StaticPage::getCachedStaticPage(StaticPageType::accessibility)], ['name' => 'sitemapStaticPageModel', 'value' => StaticPage::getCachedStaticPage(StaticPageType::sitemap)], + ['name' => 'rulesStaticPageModel', 'value' => StaticPage::getCachedStaticPage(StaticPageType::rules)], ['name' => 'contactStaticPageModel', 'value' => StaticPage::getCachedStaticPage(StaticPageType::contact)], ['name' => 'productStaticPageModel', 'value' => StaticPage::getCachedStaticPage(StaticPageType::product)], ['name' => 'breedingPoultryStaticPageModel', 'value' => StaticPage::getCachedStaticPage(StaticPageType::breedingPoultry)], diff --git a/database/migrations/2025_04_03_095319_add_static_page_game_rules.php b/database/migrations/2025_04_03_095319_add_static_page_game_rules.php new file mode 100644 index 00000000..c37b1c7c --- /dev/null +++ b/database/migrations/2025_04_03_095319_add_static_page_game_rules.php @@ -0,0 +1,47 @@ +type = StaticPageType::rules; + $staticPage->seo_title = trans( + 'SEO title pour la page :label', + ['label' => StaticPageType::rules->label()] + ); + $staticPage->seo_description = trans( + 'SEO description pour la page :label', + ['label' => StaticPageType::rules->label()] + ); + $staticPage->title = trans(StaticPageType::rules->label()); + $staticPage->slug = Str::of(StaticPageType::rules->label())->slug(); + $staticPage->subtitle = null; + $staticPage->picture = null; + $staticPage->picture_alt = null; + $staticPage->picture_title = null; + $staticPage->content = trans('Le contenu de votre page'); + $staticPage->data = []; + $staticPage->saveQuietly(); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + StaticPage::query()->where('type', StaticPageType::rules)->first()->delete(); + } +}; diff --git a/database/seeders/Mandatory/StaticPageSeeder.php b/database/seeders/Mandatory/StaticPageSeeder.php index 9cc8ff31..bfa6c2a7 100644 --- a/database/seeders/Mandatory/StaticPageSeeder.php +++ b/database/seeders/Mandatory/StaticPageSeeder.php @@ -108,6 +108,7 @@ class StaticPageSeeder extends Seeder ]); $this->seedStaticPage(StaticPageType::search); $this->seedStaticPage(StaticPageType::sitemap); + $this->seedStaticPage(StaticPageType::rules); } /** diff --git a/resources/views/fo/layouts/footer/bottom-links.blade.php b/resources/views/fo/layouts/footer/bottom-links.blade.php index a5553662..7b33c32e 100644 --- a/resources/views/fo/layouts/footer/bottom-links.blade.php +++ b/resources/views/fo/layouts/footer/bottom-links.blade.php @@ -22,6 +22,10 @@
  • {{ __('Plan du site') }}
  • +
  • -
  • +
  • + {{ __('Règlement du jeu') }} +
  • {{-- FIXME:
  • -
  • diff --git a/resources/views/fo/pages/rules.blade.php b/resources/views/fo/pages/rules.blade.php new file mode 100644 index 00000000..b1c11c82 --- /dev/null +++ b/resources/views/fo/pages/rules.blade.php @@ -0,0 +1,18 @@ +@extends('fo.layout', ['brParam' => $staticPageModel]) + +@section('title', $staticPageModel->seo_title) +@section('description', $staticPageModel->seo_description) +@section('breadcrumb', request()->route()->getName()) +@section('bg-offset', true) + +@section('content') + {{-- HEADER --}} + @include('fo.layouts.header-banner') +
    +
    +
    + {!! clean($staticPageModel->content) !!} +
    +
    +
    +@endsection diff --git a/routes/web-fo.php b/routes/web-fo.php index 867607c0..4a17e734 100644 --- a/routes/web-fo.php +++ b/routes/web-fo.php @@ -33,6 +33,7 @@ Route::middleware(['throttle:web'])->name('fo.')->group(function () { Route::get('/conditions-generales-de-vente', [StaticPageController::class, 'selling'])->name('conditions.show'); Route::get('/accessibilite', [StaticPageController::class, 'accessibility'])->name('accessibility.show'); Route::get('/plan-du-site', [StaticPageController::class, 'sitemap'])->name('sitemap.show'); + Route::get('/reglement-du-jeu', [StaticPageController::class, 'rules'])->name('rules.show'); // * SEARCH Route::get('/recherche', [SearchController::class, 'search'])->name('search.index');