diff --git a/app/Enums/Settings/MenuNodeType.php b/app/Enums/Settings/MenuNodeType.php index b701dd3f..88559cf4 100644 --- a/app/Enums/Settings/MenuNodeType.php +++ b/app/Enums/Settings/MenuNodeType.php @@ -39,15 +39,14 @@ enum MenuNodeType: int * Optionnal labels definition. */ private const ROUTENAMES = [ - // FIXME: Change this when adding routes. self::ourProducts->name => 'fo.products.index', self::ourRecipes->name => 'fo.recipes.index', - self::ourCommitments->name => 'fo.contact.show', - self::siteLogo->name => '', - self::breedings->name => 'fo.contact.show', - self::ourBrand->name => 'fo.contact.show', + self::ourCommitments->name => 'fo.commitments.brand', + self::siteLogo->name => 'fo.home.show', + self::breedings->name => 'fo.breeding.index', + self::ourBrand->name => 'fo.brand.story', self::recruitment->name => 'fo.recruitment.show', - self::news->name => 'fo.contact.show', + self::news->name => 'fo.news.index', self::link->name => '', ]; diff --git a/app/Http/Controllers/Bo/RecipeController.php b/app/Http/Controllers/Bo/RecipeController.php index 770c989e..c9164f5e 100644 --- a/app/Http/Controllers/Bo/RecipeController.php +++ b/app/Http/Controllers/Bo/RecipeController.php @@ -91,7 +91,7 @@ class RecipeController extends Controller public function create(Recipe $recipe): \Illuminate\Contracts\View\View { $productModels = Product::query()->where('published', true)->orderBy('label', 'ASC')->paginate(12); - $videoModels = Video::query()->where('published', true)->orderBy('title', 'ASC')->paginate(10); + $videoModels = Video::query()->where('published', true)->orderBy('order', 'ASC')->paginate(10); $consumptionMomentModels = ConsumptionMoment::query()->orderBy('title', 'ASC')->paginate(10); return view('bo.pages.recipes.create', [ 'recipeModel' => $recipe, diff --git a/app/Http/Controllers/Fo/HomeController.php b/app/Http/Controllers/Fo/HomeController.php index b0859032..c5c81647 100644 --- a/app/Http/Controllers/Fo/HomeController.php +++ b/app/Http/Controllers/Fo/HomeController.php @@ -45,7 +45,7 @@ class HomeController extends Controller 'consumptionMoment' ])->limit(9)->get(); $videoModels = Video::query()->where('published', true)->where('is_on_homepage', true) - ->orderBy('order', 'ASC')->with('product')->limit(9)->get(); + ->orderBy('order')->with('product')->limit(9)->get(); return view('fo.pages.home', compact( 'staticPageModel', 'mainSlideModels', diff --git a/app/Http/Controllers/Fo/ProductController.php b/app/Http/Controllers/Fo/ProductController.php index 1be095f2..e76b67db 100644 --- a/app/Http/Controllers/Fo/ProductController.php +++ b/app/Http/Controllers/Fo/ProductController.php @@ -48,12 +48,12 @@ class ProductController extends Controller ->paginate($this->productModelsPerPage); $productDiscoverModels = Product::query()->where('published', true)->where('discover', true)->get(); $staticPageModel = StaticPage::query()->where('type', StaticPageType::products)->first(); - $rangeModels = Range::query()->where('published', true)->with('subranges')->orderBy('slug')->get(); + $rangeModels = Range::query()->where('published', true)->with('subranges')->orderBy('order')->get(); $subrangeModels = $subrangeModelsFiltered ?? Subrange::query()->where('published', true) - ->orderBy('slug')->get(); - $meatModels = Meat::query()->where('published', true)->with('submeats')->orderBy('slug')->get(); + ->orderBy('order')->get(); + $meatModels = Meat::query()->where('published', true)->with('submeats')->orderBy('order')->get(); $submeatModels = $submeatModelsFiltered ?? Submeat::query()->where('published', true) - ->orderBy('slug')->get(); + ->orderBy('order')->get(); return view('fo.pages.products.index', [ 'viewsPaginate' => $this->getViewsFromPaginateModels($productModels), @@ -142,7 +142,7 @@ class ProductController extends Controller }); }) ->where('published', true) - ->orderBy('slug', 'ASC') + ->orderBy('slug') ->get(); $collectionIndex = $productModelsList->search(function ($productModelItem, $key) use ($productModel) { @@ -239,7 +239,7 @@ class ProductController extends Controller $q->where('range_id', $rangeModel->getKey()); }) ->where('published', true) - ->orderBy('slug') + ->orderBy('order') ->get(); $productModels = Product::query() ->with(['range', 'subrange', 'meat', 'submeat']) @@ -290,7 +290,7 @@ class ProductController extends Controller $q->where('range_id', $rangeModel->getKey()); }) ->where('published', true) - ->orderBy('slug') + ->orderBy('order') ->get(); $productModels = Product::query() ->with(['range', 'subrange', 'meat', 'submeat']) @@ -331,7 +331,7 @@ class ProductController extends Controller $q->where('meat_id', $meatModel->getKey()); }) ->where('published', true) - ->orderBy('slug') + ->orderBy('order') ->get(); $productModels = Product::query() ->with(['range', 'subrange', 'meat', 'submeat']) @@ -381,7 +381,7 @@ class ProductController extends Controller $q->where('meat_id', $meatModel->getKey()); }) ->where('published', true) - ->orderBy('slug') + ->orderBy('order') ->get(); $productModels = Product::query() ->with(['range', 'subrange', 'meat', 'submeat']) diff --git a/app/Http/Controllers/Fo/RecipeController.php b/app/Http/Controllers/Fo/RecipeController.php index 4a12e02b..f786bd44 100644 --- a/app/Http/Controllers/Fo/RecipeController.php +++ b/app/Http/Controllers/Fo/RecipeController.php @@ -46,9 +46,9 @@ class RecipeController extends Controller $recipeModel = Recipe::query()->where('published', true)->where('highlight', true)->first(); $staticPageModel = StaticPage::query()->where('type', StaticPageType::recipes)->first(); $consumptionMomentModels = ConsumptionMoment::query()->orderBy('slug')->get(); - $meatModels = Meat::query()->where('published', true)->with('submeats')->orderBy('slug')->get(); + $meatModels = Meat::query()->where('published', true)->with('submeats')->orderBy('order')->get(); $submeatModels = $submeatModelsFiltered ?? - Submeat::query()->where('published', true)->orderBy('slug')->get(); + Submeat::query()->where('published', true)->orderBy('order')->get(); return view('fo.pages.recipes.index', [ 'viewsPaginate' => $this->getViewsFromPaginateModels($recipeModels), @@ -196,7 +196,7 @@ class RecipeController extends Controller $q->where('meat_id', $meatModel->getKey()); }) ->where('published', true) - ->orderBy('slug') + ->orderBy('order') ->get(); $recipeModels = Recipe::query() ->with(['products', 'products.meat', 'products.submeat', 'consumptionMoment']) @@ -247,7 +247,7 @@ class RecipeController extends Controller $q->where('meat_id', $meatModel->getKey()); }) ->where('published', true) - ->orderBy('slug') + ->orderBy('order') ->get(); $recipeModels = Recipe::query() ->with(['products', 'products.meat', 'products.submeat', 'consumptionMoment']) diff --git a/app/Providers/ViewServiceProvider.php b/app/Providers/ViewServiceProvider.php index 4a76ad3c..a0ed3c59 100644 --- a/app/Providers/ViewServiceProvider.php +++ b/app/Providers/ViewServiceProvider.php @@ -100,9 +100,9 @@ class ViewServiceProvider extends ServiceProvider ['name' => 'customerModelsCount', 'value' => count(Customer::query()->get())], ['name' => 'firstMeat', 'value' => Meat::query()->first()], ['name' => 'firstRange', 'value' => Range::query()->first()], - ['name' => 'mainMenuRangeModels', 'value' => Range::query()->orderBy('slug', 'ASC') + ['name' => 'mainMenuRangeModels', 'value' => Range::query()->orderBy('order', 'ASC') ->where('published', true)->get()], - ['name' => 'mainMenuMeatModels', 'value' => Meat::query()->orderBy('slug', 'ASC') + ['name' => 'mainMenuMeatModels', 'value' => Meat::query()->orderBy('order', 'ASC') ->where('published', true)->get()], ['name' => 'homeStaticPageModel', 'value' => StaticPage::query() ->where('type', StaticPageType::home)->first()], diff --git a/database/migrations/2024_09_18_084846_alter_routes_general_settings_table.php b/database/migrations/2024_09_18_084846_alter_routes_general_settings_table.php new file mode 100644 index 00000000..68bce197 --- /dev/null +++ b/database/migrations/2024_09_18_084846_alter_routes_general_settings_table.php @@ -0,0 +1,65 @@ +where('type', SettingsType::mainMenu)->first(); + if (!$generalSettingModel) { + throw new \Exception('Missing generalSettings ' . SettingsType::mainMenu->label()); + } + $generalSettingModel->value = collect($generalSettingModel->value)->map(function (\stdClass $item) { + if ($item->type->equals(MenuNodeType::ourCommitments)) { + $item->link = (new Link(routeName: MenuNodeType::ourCommitments->routeName()))->toArray(); + } elseif ($item->type->equals(MenuNodeType::siteLogo)) { + $item->link = (new Link(routeName: MenuNodeType::siteLogo->routeName()))->toArray(); + } elseif ($item->type->equals(MenuNodeType::breedings)) { + $item->link = (new Link(routeName: MenuNodeType::breedings->routeName()))->toArray(); + } elseif ($item->type->equals(MenuNodeType::ourBrand)) { + $item->link = (new Link(routeName: MenuNodeType::ourBrand->routeName()))->toArray(); + } elseif ($item->type->equals(MenuNodeType::news)) { + $item->link = (new Link(routeName: MenuNodeType::news->routeName()))->toArray(); + } + return $item; + }); + $generalSettingModel->saveQuietly(); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + $generalSettingModel = GeneralSetting::query()->where('type', SettingsType::mainMenu)->first(); + $generalSettingModel->value = collect($generalSettingModel->value)->map(function ($item) { + if ( + $item->type->equals(MenuNodeType::ourCommitments) + || $item->type->equals(MenuNodeType::siteLogo) + || $item->type->equals(MenuNodeType::breedings) + || $item->type->equals(MenuNodeType::ourBrand) + || $item->type->equals(MenuNodeType::news) + ) { + $item->link = (new Link(routeName: 'fo.contact.show'))->toArray(); + } + return $item; + }); + $generalSettingModel->saveQuietly(); + } +}; diff --git a/resources/sass/fo/base/_layout.scss b/resources/sass/fo/base/_layout.scss index 808afe81..793ea6c8 100644 --- a/resources/sass/fo/base/_layout.scss +++ b/resources/sass/fo/base/_layout.scss @@ -154,6 +154,24 @@ body { } } + .nav-link:hover{ + overflow: visible; + + &::before { + position: absolute; + bottom: -0.5rem; + left: 50%; + width: 2rem; + height: 1rem; + background-image: url('@/images/header/subline-blue.svg'); + background-position: left; + background-repeat: no-repeat; + background-size: contain; + content: ""; + transform: translateX(-50%); + } + } + .nav-collapse { width: 100%; } @@ -181,6 +199,24 @@ body { overflow: hidden; } } + + .nav-link:hover{ + overflow: visible; + + &::before { + position: absolute; + bottom: -0.5rem; + left: 50%; + width: 2rem; + height: 1rem; + background-image: url('@/images/header/subline-blue.svg'); + background-position: left; + background-repeat: no-repeat; + background-size: contain; + content: ""; + transform: translateX(-50%); + } + } } } diff --git a/resources/views/fo/pages/commitments/index.blade.php b/resources/views/fo/pages/commitments/index.blade.php index 89f4241b..68b1373c 100644 --- a/resources/views/fo/pages/commitments/index.blade.php +++ b/resources/views/fo/pages/commitments/index.blade.php @@ -9,6 +9,7 @@
+ {{-- FIXME: wait evolution (integration) --}}

{{ __('index commitments') }}