From 734116a638d7e257c970568c8e70ae06fd4d4565 Mon Sep 17 00:00:00 2001 From: Alexis Gousseau Date: Thu, 10 Oct 2024 10:28:11 +0200 Subject: [PATCH] fix: :bug: resolve bug of link field from node menu #190 --- .../Bo/GeneralSettingController.php | 9 +- .../Controllers/Bo/NewsClubController.php | 12 +- .../UpdateGeneralSettingRequest.php | 2 +- app/Models/GeneralSetting.php | 16 +- resources/ts/bo/components/MainMenu.vue | 9 +- .../ts/bo/components/MainMenuNodeEditor.vue | 139 +++++++++--------- .../values/mainMenu.blade.php | 23 +-- .../views/modules/script-routes.blade.php | 6 + 8 files changed, 113 insertions(+), 103 deletions(-) diff --git a/app/Http/Controllers/Bo/GeneralSettingController.php b/app/Http/Controllers/Bo/GeneralSettingController.php index a9076ca3..15acf19b 100644 --- a/app/Http/Controllers/Bo/GeneralSettingController.php +++ b/app/Http/Controllers/Bo/GeneralSettingController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Bo; use App\Enums\Settings\SettingsType; use App\Http\Controllers\Controller; use App\Http\Requests\Bo\GeneralSettings\UpdateGeneralSettingRequest; +use App\Lib\Definitions\MenuNode; use App\Lib\Helpers\FileStorageHelper; use App\Models\GeneralSetting; use Illuminate\Support\Facades\DB; @@ -28,7 +29,13 @@ class GeneralSettingController extends Controller */ public function edit(GeneralSetting $general_setting): \Illuminate\Contracts\View\View { - return view('bo.pages.general_settings.edit', ['generalSettingModel' => $general_setting]); + $menuNodes = collect($general_setting->value)->map(function (MenuNode $node) { + return collect($node)->toArray(); + })->toArray(); + return view('bo.pages.general_settings.edit', [ + 'generalSettingModel' => $general_setting, + 'menuNodes' => $menuNodes + ]); } /** diff --git a/app/Http/Controllers/Bo/NewsClubController.php b/app/Http/Controllers/Bo/NewsClubController.php index 57691b36..49ac9636 100644 --- a/app/Http/Controllers/Bo/NewsClubController.php +++ b/app/Http/Controllers/Bo/NewsClubController.php @@ -94,12 +94,12 @@ class NewsClubController extends Controller if ($newsClub->saveOrFail()) { return redirect()->route('bo.news_clubs.edit', $newsClub) ->with('success', trans('crud.messages.has_been_created', [ - 'model' => Str::ucfirst(trans('models.classes.news_club')) + 'model' => Str::ucfirst(trans('models.classes.news_club')) ])); } return redirect()->back() ->with('error', trans('crud.messages.cannot_be_created', [ - 'model' => Str::ucfirst(trans('models.classes.news_club')) + 'model' => Str::ucfirst(trans('models.classes.news_club')) ])); }); } @@ -130,12 +130,12 @@ class NewsClubController extends Controller if ($newsClub->saveOrFail()) { return redirect()->route('bo.news_clubs.edit', $newsClub) ->with('success', trans('crud.messages.has_been_updated', [ - 'model' => Str::ucfirst(trans('models.classes.news_club')) + 'model' => Str::ucfirst(trans('models.classes.news_club')) ])); } return redirect()->route('bo.news_clubs.edit', $newsClub) ->with('error', trans('crud.messages.cannot_be_updated', [ - 'model' => Str::ucfirst(trans('models.classes.news_club')) + 'model' => Str::ucfirst(trans('models.classes.news_club')) ])); }); } @@ -154,12 +154,12 @@ class NewsClubController extends Controller if ($newsClub->deleteOrFail()) { return redirect()->route('bo.news_clubs.index', $previousQueries) ->with('success', trans('crud.messages.has_been_deleted', [ - 'model' => Str::ucfirst(trans('models.classes.news_club')) + 'model' => Str::ucfirst(trans('models.classes.news_club')) ])); } return redirect()->back() ->with('error', trans('crud.messages.cannot_be_deleted', [ - 'model' => Str::ucfirst(trans('models.classes.news_club')) + 'model' => Str::ucfirst(trans('models.classes.news_club')) ])); } diff --git a/app/Http/Requests/Bo/GeneralSettings/UpdateGeneralSettingRequest.php b/app/Http/Requests/Bo/GeneralSettings/UpdateGeneralSettingRequest.php index 34ae0507..2a0e7a75 100644 --- a/app/Http/Requests/Bo/GeneralSettings/UpdateGeneralSettingRequest.php +++ b/app/Http/Requests/Bo/GeneralSettings/UpdateGeneralSettingRequest.php @@ -119,13 +119,13 @@ class UpdateGeneralSettingRequest extends FormRequest */ private function prepareHotNewsDatas(): void { - $this->mergePicture('picture'); $this->merge([ 'value->text' => $this->input('text'), 'value->picture' => $this->file('picture'), 'value->picture_alt' => $this->input('picture_alt'), 'value->picture_title' => $this->input('picture_title'), ]); + $this->mergePicture('picture'); } /** diff --git a/app/Models/GeneralSetting.php b/app/Models/GeneralSetting.php index f828708b..5379ca0c 100644 --- a/app/Models/GeneralSetting.php +++ b/app/Models/GeneralSetting.php @@ -14,11 +14,10 @@ use Illuminate\Support\Arr; use Illuminate\Support\Facades\Cache; /** - * @property-read \App\Enums\Settings\SettingsType $type Enum SettingsType. - * ! Note complete this with pipes when adding another SettingsType. - * phpcs:ignore Generic.Files.LineLength.TooLong - * @property array<\App\Lib\Definitions\MenuNode>|array>|array $value The actual setting value. - * @package App\Models + * @property-read \App\Enums\Settings\SettingsType $type + * Enum SettingsType. + * @property array<\App\Lib\Definitions\MenuNode>|array>|array $value + * The actual setting value. */ class GeneralSetting extends Model { @@ -132,8 +131,6 @@ class GeneralSetting extends Model * Get the json layout for a setting type. * * @param \App\Enums\Settings\SettingsType $type - * - * ! Note complete this with pipes when adding another SettingsType. * @return array<\App\Lib\Definitions\MenuNode>|array> * @throws \ErrorException If $type is unhandled. */ @@ -160,7 +157,7 @@ class GeneralSetting extends Model SettingsType::offersCount => [ 'count' => 0, ], - SettingsType::breederMap => [ + SettingsType::breederMap => [ 'title' => 'titre', 'main_text' => 'texte principal', 'picto_text' => 'texte du pictogramme', @@ -175,14 +172,13 @@ class GeneralSetting extends Model * * @param \App\Enums\Settings\SettingsType $type * @param string $json - * ! Note complete this with pipes when adding another SettingsType. * @return array<\App\Lib\Definitions\MenuNode>|array> * @throws \ErrorException If $type is unhandled. */ public static function valueFromJson(SettingsType $type, string $json): array { return match ($type) { - SettingsType::mainMenu => collect(json_decode($json, true)) + SettingsType::mainMenu => collect(json_decode($json, true)) ->map(fn(array $jsonLayout) => MenuNode::make(...$jsonLayout))->all(), SettingsType::hotNews => json_decode($json, true), SettingsType::offersCount => json_decode($json, true), diff --git a/resources/ts/bo/components/MainMenu.vue b/resources/ts/bo/components/MainMenu.vue index 0067e029..1fd200ac 100644 --- a/resources/ts/bo/components/MainMenu.vue +++ b/resources/ts/bo/components/MainMenu.vue @@ -7,7 +7,10 @@
-
+

{{ trans.methods.__('Ordonancement du menu') }} @@ -33,7 +36,7 @@ >