From 75396b99c64e4da873347cc4480304f6f92d5229 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Munsch?= Date: Wed, 29 Jun 2022 17:05:02 +0200 Subject: [PATCH] Fix slider issues + text position on sliders --- ...Position.php => SliderElementPosition.php} | 2 +- app/Http/Middleware/Authenticate.php | 2 +- .../Bo/Sliders/StoreSliderRequest.php | 19 ++++--- app/Models/Slider.php | 9 ++-- database/factories/SliderFactory.php | 5 +- ...2022_06_02_163424_create_sliders_table.php | 6 +-- ..._105128_set_colors_nullable_to_sliders.php | 4 ++ ..._06_29_150122_text_position_on_sliders.php | 38 ++++++++++++++ .../ts/components/bo/ColorPickerComponent.vue | 50 +++++++++++++------ resources/views/back/sliders/form.blade.php | 44 ++++++++++------ 10 files changed, 132 insertions(+), 47 deletions(-) rename app/Enums/Sliders/{SliderPosition.php => SliderElementPosition.php} (92%) create mode 100644 database/migrations/2022_06_29_150122_text_position_on_sliders.php diff --git a/app/Enums/Sliders/SliderPosition.php b/app/Enums/Sliders/SliderElementPosition.php similarity index 92% rename from app/Enums/Sliders/SliderPosition.php rename to app/Enums/Sliders/SliderElementPosition.php index d6bede4..1719e3d 100644 --- a/app/Enums/Sliders/SliderPosition.php +++ b/app/Enums/Sliders/SliderElementPosition.php @@ -9,7 +9,7 @@ use Kwaadpepper\Enum\BaseEnum; * @method static self center() * @method static self right() */ -final class SliderPosition extends BaseEnum +final class SliderElementPosition extends BaseEnum { /** * Enum values diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index dc501f6..5f92d81 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -31,7 +31,7 @@ class Authenticate extends Middleware } } } - return route('login'); + return collect($logins)->first() ?? '/'; } abort(401); } diff --git a/app/Http/Requests/Bo/Sliders/StoreSliderRequest.php b/app/Http/Requests/Bo/Sliders/StoreSliderRequest.php index be4e725..73ed815 100644 --- a/app/Http/Requests/Bo/Sliders/StoreSliderRequest.php +++ b/app/Http/Requests/Bo/Sliders/StoreSliderRequest.php @@ -2,7 +2,7 @@ namespace App\Http\Requests\Bo\Sliders; -use App\Enums\Sliders\SliderPosition; +use App\Enums\Sliders\SliderElementPosition; use App\Enums\Sliders\SliderType; use App\Traits\Requests\HasPicture; use Illuminate\Foundation\Http\FormRequest; @@ -45,15 +45,15 @@ class StoreSliderRequest extends FormRequest */ public function rules() { - return \array_merge([ + $rules = [ 'title' => 'required|min:3|max:255', 'title_color' => 'nullable|color_rgba', 'title_color_bg' => 'nullable|color_rgba', 'subtitle' => 'required|min:3|max:255', 'subtitle_color' => 'nullable|color_rgba', 'subtitle_color_bg' => 'nullable|color_rgba', - 'type' => ['required', new EnumIsValidRule(SliderType::class)], - 'position' => ['required', new EnumIsValidRule(SliderPosition::class)], + 'text_position_desktop' => ['required', new EnumIsValidRule(SliderElementPosition::class)], + 'picture_position_mobile' => ['required', new EnumIsValidRule(SliderElementPosition::class)], 'link' => 'required|url', 'link_title' => 'required|min:3|max:255', 'link_color' => 'nullable|color_rgba', @@ -64,7 +64,12 @@ class StoreSliderRequest extends FormRequest 'status' => 'required|boolean', 'publish_at' => 'nullable|date_format:Y-m-d H:i', 'unpublish_at' => 'nullable|date_format:Y-m-d H:i', - ], $this->pictureRules(1400, 630, 1400, 630)); + ]; + + if (!$this->slider) { + $rules['type'] = ['required', new EnumIsValidRule(SliderType::class)]; + } + return \array_merge($rules, $this->pictureRules(1400, 630, 1400, 630)); } /** @@ -78,13 +83,15 @@ class StoreSliderRequest extends FormRequest 'title' => trans('title'), 'title_color' => trans('couleur de titre'), 'title_color_bg' => trans('couleur de fond du titre'), - 'position' => trans('position de centrage de l\'image'), + 'picture_position_mobile' => trans('position de centrage de l\'image en mobile'), + 'text_position_desktop' => trans('position de centrage du texte en desktop'), 'link' => trans('lien'), 'link_title' => trans('titre du lien'), 'link_color' => trans('couleur du lien'), 'link_color_bg' => trans('couleur de fond du lien'), 'link_new_tab' => trans('nouvel onglet'), 'status' => trans('publication'), + 'picture' => trans('image'), ]; } } diff --git a/app/Models/Slider.php b/app/Models/Slider.php index 1974dae..a27bb7f 100644 --- a/app/Models/Slider.php +++ b/app/Models/Slider.php @@ -3,7 +3,7 @@ namespace App\Models; use App\Casts\RgbaColorNullable; -use App\Enums\Sliders\SliderPosition; +use App\Enums\Sliders\SliderElementPosition; use App\Enums\Sliders\SliderType; use App\Lib\ToolboxHelper; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -28,8 +28,8 @@ class Slider extends Model 'subtitle', 'subtitle_color', 'subtitle_color_bg', - 'position', - 'type', + 'text_position_desktop', + 'picture_position_mobile', 'picture', 'link', 'link_title', @@ -50,7 +50,8 @@ class Slider extends Model * @var array */ protected $enumCasts = [ - 'position' => SliderPosition::class, + 'text_position_desktop' => SliderElementPosition::class, + 'picture_position_mobile' => SliderElementPosition::class, 'type' => SliderType::class ]; diff --git a/database/factories/SliderFactory.php b/database/factories/SliderFactory.php index 07320d9..38acaae 100644 --- a/database/factories/SliderFactory.php +++ b/database/factories/SliderFactory.php @@ -2,7 +2,7 @@ namespace Database\Factories; -use App\Enums\Sliders\SliderPosition; +use App\Enums\Sliders\SliderElementPosition; use App\Enums\Sliders\SliderType; use App\Models\Slider; use Illuminate\Database\Eloquent\Factories\Factory; @@ -34,7 +34,8 @@ class SliderFactory extends Factory $subtitle = $this->faker->unique()->words(rand(8, 10), true); return [ 'type' => Collect(SliderType::toArray())->random(), - 'position' => Collect(SliderPosition::toArray())->random(), + 'text_position_desktop' => Collect(SliderElementPosition::toArray())->random(), + 'picture_position_mobile' => Collect(SliderElementPosition::toArray())->random(), 'title' => $title, 'title_color' => $this->faker->hexColor(), 'title_color_bg' => $this->faker->hexColor(), diff --git a/database/migrations/2022_06_02_163424_create_sliders_table.php b/database/migrations/2022_06_02_163424_create_sliders_table.php index 1b2037e..327af6e 100644 --- a/database/migrations/2022_06_02_163424_create_sliders_table.php +++ b/database/migrations/2022_06_02_163424_create_sliders_table.php @@ -1,6 +1,6 @@ unsignedTinyInteger('type')->default(SliderType::home()) ->comment('Enums\\SliderType type de slider'); - $table->unsignedTinyInteger('position')->default(SliderPosition::center()) - ->comment('Enums\\SliderPosition slider centrage du slider en responsive'); + $table->unsignedTinyInteger('position')->default(SliderElementPosition::center()) + ->comment('Enums\\SliderElementPosition slider centrage du slider en responsive'); $table->string('title')->comment('Titre du slider'); $table->unsignedInteger('title_color')->comment('Couleur du titre'); diff --git a/database/migrations/2022_06_28_105128_set_colors_nullable_to_sliders.php b/database/migrations/2022_06_28_105128_set_colors_nullable_to_sliders.php index 47a21cb..9c684c1 100644 --- a/database/migrations/2022_06_28_105128_set_colors_nullable_to_sliders.php +++ b/database/migrations/2022_06_28_105128_set_colors_nullable_to_sliders.php @@ -19,7 +19,11 @@ class SetColorsNullableToSliders extends Migration $table->unsignedInteger('subtitle_color')->nullable()->comment('Couleur du soustitre')->change(); $table->unsignedInteger('subtitle_color_bg')->nullable()->comment('Couleur de fond du soustitre')->change(); $table->unsignedInteger('link_color')->nullable()->comment('Couleur du lien')->change(); + $table->unsignedInteger('link_color_hover')->nullable() + ->comment('Couleur de fond du lien (au survol)')->change(); $table->unsignedInteger('link_color_bg')->nullable()->comment('Couleur de fond du lien')->change(); + $table->unsignedInteger('link_color_bg_hover')->nullable() + ->comment('Couleur de fond du lien (au survol)')->change(); }); } diff --git a/database/migrations/2022_06_29_150122_text_position_on_sliders.php b/database/migrations/2022_06_29_150122_text_position_on_sliders.php new file mode 100644 index 0000000..8da7bd6 --- /dev/null +++ b/database/migrations/2022_06_29_150122_text_position_on_sliders.php @@ -0,0 +1,38 @@ +renameColumn('position', 'picture_position_mobile'); + $table->unsignedTinyInteger('text_position_desktop') + ->after('subtitle_color_bg') + ->default(SliderElementPosition::right()) + ->comment('Enums\\SliderElementPosition postionnement du texte en desktop'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('sliders', function (Blueprint $table) { + $table->renameColumn('picture_position_mobile', 'position'); + $table->dropColumn('text_position_desktop'); + }); + } +} diff --git a/resources/ts/components/bo/ColorPickerComponent.vue b/resources/ts/components/bo/ColorPickerComponent.vue index c458778..df14d19 100644 --- a/resources/ts/components/bo/ColorPickerComponent.vue +++ b/resources/ts/components/bo/ColorPickerComponent.vue @@ -36,6 +36,7 @@ type="checkbox" data-bs-toggle="tooltip" :title="__('Rendre la couleur transparente ?')" + :checked="_value === null ? true : false" v-on:change="updateValue" />