From 37b68ab4ec8e182c0e9f98d7ef899ab35c7aea65 Mon Sep 17 00:00:00 2001 From: Sebastien Hattry Date: Fri, 17 Dec 2021 17:27:25 +0100 Subject: [PATCH] add news page BO --- app/Enums/Page.php | 36 ++--- ...cesController.php => AdviceController.php} | 8 +- app/Http/Controllers/Bo/PostsController.php | 126 ++++++++++++++++++ app/Http/Controllers/Bo/SlidesController.php | 2 + app/Http/Controllers/Bo/TextsController.php | 64 +++++---- app/Http/Controllers/HomeController.php | 27 +++- app/Http/Kernel.php | 7 +- app/Http/Middleware/InitVarsGlobals.php | 92 +++++++++++++ app/Http/Middleware/TrustHosts.php | 20 --- app/Http/Requests/StorePostRequest.php | 59 ++++++++ app/Http/Requests/StoreSlideRequest.php | 8 +- app/Http/Requests/UpdateAdviceRequest.php | 6 +- app/Http/Requests/UpdatePostRequest.php | 34 +++++ app/Models/Post.php | 54 ++++++++ app/Models/Slide.php | 1 + app/Providers/AppServiceProvider.php | 49 +------ config/bo.php | 5 + database/factories/AdviceFactory.php | 4 +- database/factories/PostFactory.php | 28 ++++ database/factories/SlideFactory.php | 3 +- database/factories/SliderFactory.php | 2 +- ...2021_04_14_115938_create_sliders_table.php | 2 +- .../2021_04_14_115954_create_slides_table.php | 1 + ...2021_12_16_093950_create_advice_table.php} | 6 +- .../2021_12_16_131639_create_posts_table.php | 38 ++++++ .../{AdvicesSeeder.php => AdviceSeeder.php} | 2 +- database/seeders/DatabaseSeeder.php | 3 +- database/seeders/EncartsSeeder.php | 2 +- database/seeders/PostsSeeder.php | 19 +++ public/css/preload-back.css | 16 +++ public/css/preload-front.css | 16 +++ resources/sass/_classes.scss | 13 ++ resources/sass/frontend/_custom.scss | 7 +- resources/sass/frontend/_list.scss | 3 + resources/sass/frontend/_utils.scss | 3 + resources/views/back/advice/edit.blade.php | 71 ++++++++++ resources/views/back/pictos/create.blade.php | 5 +- resources/views/back/pictos/edit.blade.php | 5 +- .../views/back/pictos/form-inputs.blade.php | 2 +- resources/views/back/posts/create.blade.php | 66 +++++++++ resources/views/back/posts/edit.blade.php | 62 +-------- .../views/back/posts/form-inputs.blade.php | 79 +++++++++++ resources/views/back/posts/index.blade.php | 49 +++++++ resources/views/back/sliders/edit.blade.php | 4 +- .../views/back/sliders/form-inputs.blade.php | 2 +- resources/views/back/sliders/index.blade.php | 2 +- .../views/back/slides/form-inputs.blade.php | 13 +- resources/views/back/texts/create.blade.php | 67 ++++++++++ resources/views/back/texts/edit.blade.php | 18 +++ .../views/back/texts/form-inputs.blade.php | 12 ++ resources/views/back/texts/index.blade.php | 37 +++++ resources/views/front/home.blade.php | 25 ++-- resources/views/front/news.blade.php | 73 +++------- .../views/layouts/backend/sidenav.blade.php | 13 +- resources/views/layouts/frontend.blade.php | 3 - routes/web.php | 54 ++++---- 56 files changed, 1107 insertions(+), 321 deletions(-) rename app/Http/Controllers/Bo/{AdvicesController.php => AdviceController.php} (80%) create mode 100644 app/Http/Controllers/Bo/PostsController.php create mode 100644 app/Http/Middleware/InitVarsGlobals.php delete mode 100644 app/Http/Middleware/TrustHosts.php create mode 100644 app/Http/Requests/StorePostRequest.php create mode 100644 app/Http/Requests/UpdatePostRequest.php create mode 100644 app/Models/Post.php create mode 100644 database/factories/PostFactory.php rename database/migrations/{2021_12_15_173936_create_advices_table.php => 2021_12_16_093950_create_advice_table.php} (83%) create mode 100644 database/migrations/2021_12_16_131639_create_posts_table.php rename database/seeders/{AdvicesSeeder.php => AdviceSeeder.php} (87%) create mode 100644 database/seeders/PostsSeeder.php create mode 100644 resources/views/back/advice/edit.blade.php create mode 100644 resources/views/back/posts/create.blade.php create mode 100644 resources/views/back/posts/form-inputs.blade.php create mode 100644 resources/views/back/posts/index.blade.php create mode 100644 resources/views/back/texts/create.blade.php create mode 100644 resources/views/back/texts/edit.blade.php create mode 100644 resources/views/back/texts/form-inputs.blade.php create mode 100644 resources/views/back/texts/index.blade.php diff --git a/app/Enums/Page.php b/app/Enums/Page.php index 23bfcf2..b4c999c 100644 --- a/app/Enums/Page.php +++ b/app/Enums/Page.php @@ -5,7 +5,7 @@ namespace App\Enums; use Kwaadpepper\Enum\BaseEnumRoutable; /** - * @method static self home() + * @method static self homeHeader() * @method static self marqueHeader() * @method static self marqueBloc2() * @method static self marqueBloc3() @@ -13,7 +13,7 @@ use Kwaadpepper\Enum\BaseEnumRoutable; * @method static self marqueBloc4l() * @method static self marqueBloc4r() * @method static self marqueFooter() - * @method static self newsAdvices() + * @method static self newsAdvice() * @method static self newsQuestions() * @method static self newsPosts() * @method static self newsProducts() @@ -26,21 +26,23 @@ class Page extends BaseEnumRoutable protected static function values(): array { return [ - 'home' => 0, - 'marqueHeader' => 1, - 'marqueBloc2' => 2, - 'marqueBloc3' => 3, - 'marqueBloc4' => 4, - 'marqueBloc4l' => 5, - 'marqueBloc4r' => 6, - 'marqueFooter' => 7, - 'newsAdvices' => 8, - 'newsQuestions' => 9, - 'newsPosts' => 10, - 'newsProducts' => 11, - 'foodHeader' => 12, - 'foodBloc2' => 13, - 'foodProducts' => 14, + 'homeHeader' => 0, + 'homeProducts' => 1, + 'homeNews' => 2, + 'marqueHeader' => 3, + 'marqueBloc2' => 4, + 'marqueBloc3' => 5, + 'marqueBloc4' => 6, + 'marqueBloc4l' => 7, + 'marqueBloc4r' => 8, + 'marqueFooter' => 9, + 'newsAdvice' => 10, + 'newsQuestions' => 11, + 'newsPosts' => 12, + 'newsProducts' => 13, + 'foodHeader' => 14, + 'foodBloc2' => 15, + 'foodProducts' => 16, ]; } } diff --git a/app/Http/Controllers/Bo/AdvicesController.php b/app/Http/Controllers/Bo/AdviceController.php similarity index 80% rename from app/Http/Controllers/Bo/AdvicesController.php rename to app/Http/Controllers/Bo/AdviceController.php index d6d9ac6..20abf2c 100644 --- a/app/Http/Controllers/Bo/AdvicesController.php +++ b/app/Http/Controllers/Bo/AdviceController.php @@ -6,7 +6,7 @@ use App\Http\Controllers\Controller; use App\Http\Requests\UpdateAdviceRequest; use App\Models\Advice; -class AdvicesController extends Controller +class AdviceController extends Controller { /** * Show the form for editing the specified resource. @@ -17,7 +17,7 @@ class AdvicesController extends Controller // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass public function edit(Advice $advice) { - return view('back.advices.edit', compact('advice')); + return view('back.advice.edit', compact('advice')); } /** @@ -32,11 +32,11 @@ class AdvicesController extends Controller $advice->fill($request->validated()); if (!$advice->saveOrFail()) { - return redirect()->route('bo.advices.edit', $advice->id) + return redirect()->route('bo.advice.edit', $advice->id) ->with('error', trans('La modification a échoué')); } - return redirect()->route('bo.advices.edit', $advice->id) + return redirect()->route('bo.advice.edit', $advice->id) ->with('success', trans('Modifications enregistrées !')); } } diff --git a/app/Http/Controllers/Bo/PostsController.php b/app/Http/Controllers/Bo/PostsController.php new file mode 100644 index 0000000..8b98737 --- /dev/null +++ b/app/Http/Controllers/Bo/PostsController.php @@ -0,0 +1,126 @@ +get(); + + return view('back.posts.index', compact('posts')); + } + + /** + * Show the form for creating a new resource. + * + * @param Post $post + * @return \Illuminate\Http\Response + */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function create(Post $post) + { + return view('back.posts.create', compact('post')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\StorePostRequest $request + * @return \Illuminate\Http\Response + */ + public function store(StorePostRequest $request) + { + $post = new Post($request->validated()); + $response = $this->changeUniquePostOnTop($post->on_top); + + if ($response) { + $response = $post->saveOrFail(); + } + if (!$response) { + return redirect()->route('bo.posts.edit', $post->id)->with('error', 'L\'actualité n\'a pas été créee'); + } + return redirect()->route('bo.posts.edit', $post->id)->with('success', 'Actualité créée !'); + } + + /** + * Show the form for editing the specified resource. + * + * @param Post $post + * @return \Illuminate\Http\Response + */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function edit(Post $post) + { + return view('back.posts.edit', compact('post')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\UpdatePostRequest $request + * @param Post $post + * @return \Illuminate\Http\Response + */ + public function update(Post $post, UpdatePostRequest $request) + { + $post->fill($request->validated()); + + $response = $this->changeUniquePostOnTop($post->on_top); + + if ($response) { + $response = $post->saveOrFail(); + } + if (!$response) { + return redirect()->route('bo.posts.edit', $post->id) + ->with('error', trans('La modification a échoué')); + } + + return redirect()->route('bo.posts.edit', $post->id) + ->with('success', trans('Modifications enregistrées !')); + } + + /** + * Remove the specified resource from storage. + * + * @param Post $post + * @return \Illuminate\Http\Response + */ + public function destroy(Post $post) + { + if (!$post->delete()) { + return redirect()->route('bo.posts.index')->with('error', trans('La suppression a échoué')); + } + + return redirect()->route('bo.posts.index')->with('success', trans('Suppression faite avec succès')); + } + + /** + * Change on_top column to a post if necessary + * + * @param Boolean $isCurrentPostOnTop + * @return Boolean response + */ + private function changeUniquePostOnTop(bool $isCurrentPostOnTop): bool + { + if ($isCurrentPostOnTop) { + $postOnTop = Post::where('on_top', true)->first(); + if ($postOnTop) { + $postOnTop->on_top = false; + return $postOnTop->saveOrFail(); + } + } + return true; + } +} diff --git a/app/Http/Controllers/Bo/SlidesController.php b/app/Http/Controllers/Bo/SlidesController.php index e39624d..a385fe1 100644 --- a/app/Http/Controllers/Bo/SlidesController.php +++ b/app/Http/Controllers/Bo/SlidesController.php @@ -27,6 +27,7 @@ class SlidesController extends Controller * @param Slide $slide * @return \Illuminate\Http\Response */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass public function create(Slide $slide) { $sliders = Slider::all(); @@ -67,6 +68,7 @@ class SlidesController extends Controller * @param Slide $slide * @return \Illuminate\Http\Response */ + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass public function edit(Slide $slide) { $sliders = Slider::all(); diff --git a/app/Http/Controllers/Bo/TextsController.php b/app/Http/Controllers/Bo/TextsController.php index beb02b5..d4016db 100644 --- a/app/Http/Controllers/Bo/TextsController.php +++ b/app/Http/Controllers/Bo/TextsController.php @@ -4,8 +4,8 @@ namespace App\Http\Controllers\Bo; use App\Enums\Page; use App\Http\Controllers\Controller; +use App\Http\Requests\StoreTextRequest; use App\Models\Text; -use Illuminate\Http\Request; class TextsController extends Controller { @@ -16,70 +16,88 @@ class TextsController extends Controller */ public function index() { - $pictos = Text::where('page', Page::newsQuestions()->value)->get(); + $texts = Text::where('page', Page::newsQuestions()->value)->get(); - return view('back.pictos.index', compact('pictos')); + return view('back.texts.index', compact('texts')); } /** * Show the form for creating a new resource. * - * @param Picto $picto + * @param Text $text * @return \Illuminate\Http\Response */ - public function create(Picto $picto) + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function create(Text $text) { - return view('back.pictos.create', compact('picto')); + return view('back.texts.create', compact('text')); } /** * Store a newly created resource in storage. * - * @param \Illuminate\Http\StorePictoRequest $request + * @param \Illuminate\Http\StoreTextRequest $request * @return \Illuminate\Http\Response */ - public function store(StorePictoRequest $request) + public function store(StoreTextRequest $request) { - $picto = new Picto($request->validated()); - $picto->page = Page::marqueBloc2(); + $text = new Text($request->validated()); + $text->page = Page::newsQuestions(); - if (!$picto->saveOrFail()) { - return redirect()->route('bo.pictos.edit', $picto->id)->with('error', 'Le pictogramme n\'a pas été crée'); + if (!$text->saveOrFail()) { + return redirect() + ->route('bo.texts.edit', $text->id) + ->with('error', 'La question/réponse n\'a pas été crée'); } - return redirect()->route('bo.pictos.edit', $picto->id)->with('success', 'Pictogramme créé !'); + return redirect() + ->route('bo.texts.edit', $text->id) + ->with('success', 'Question/réponse créé !'); } /** * Show the form for editing the specified resource. * - * @param int $id + * @param Text $text * @return \Illuminate\Http\Response */ - public function edit($id) + // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass + public function edit(Text $text) { - // + return view('back.texts.edit', compact('text')); } /** * Update the specified resource in storage. * - * @param \Illuminate\Http\Request $request - * @param int $id + * @param \Illuminate\Http\StoreTextRequest $request + * @param Text $text * @return \Illuminate\Http\Response */ - public function update(Request $request, $id) + public function update(Text $text, StoreTextRequest $request) { - // + $text->fill($request->validated()); + + if (!$text->saveOrFail()) { + return redirect()->route('bo.texts.edit', $text->id) + ->with('error', trans('La modification a échoué')); + } + + return redirect()->route('bo.texts.edit', $text->id) + ->with('success', trans('Modifications enregistrées !')); } /** * Remove the specified resource from storage. * - * @param int $id + * @param Text $text * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy(Text $text) { - // + if (!$text->delete()) { + return redirect()->route('bo.texts.index')->with('error', trans('La suppression a échoué')); + } + + return redirect()->route('bo.texts.index')->with('success', trans('Suppression faite avec succès')); } } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 8fd6dd7..7dfec10 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -2,18 +2,33 @@ namespace App\Http\Controllers; -use App\Enums\Page; -use App\Models\Encart; -use App\Models\EncartArg; +use App\Models\Slide; use App\Models\Slider; -use Illuminate\Http\Request; +use Illuminate\Support\Carbon; class HomeController extends Controller { public function index() { $slider = Slider::where('published', 1)->first(); - - return view('front.home', compact('slider')); + if ($slider) { + $slides = Slide::whereHas('slider', function ($q) use ($slider) { + $q->whereId($slider->id); + })->where(function ($q) { + $q->where( + function ($q) { + $q->where('date_start', '<=', Carbon::now()->format('Y-m-d H:i:s')) + ->where('date_end', '>', Carbon::now()->format('Y-m-d H:i:s')); + } + )->orWhere(function ($q) { + $q->whereNull('date_start') + ->whereNull('date_end'); + }); + })->orderBy('order', 'ASC') + ->get(); + return view('front.home', compact('slider', 'slides')); + } else { + return view('front.home', compact('slider')); + } } } diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index a83a16b..b1962c1 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -2,10 +2,12 @@ namespace App\Http; +use App\Http\Middleware\InitVarsGlobals; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { + /** * The application's global HTTP middleware stack. * @@ -14,7 +16,6 @@ class Kernel extends HttpKernel * @var array */ protected $middleware = [ - // \App\Http\Middleware\TrustHosts::class, \App\Http\Middleware\TrustProxies::class, \Fruitcake\Cors\HandleCors::class, \App\Http\Middleware\PreventRequestsDuringMaintenance::class, @@ -33,14 +34,12 @@ class Kernel extends HttpKernel \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 'api' => [ - // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, 'throttle:api', \Illuminate\Routing\Middleware\SubstituteBindings::class, ], @@ -63,6 +62,6 @@ class Kernel extends HttpKernel 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - + 'init-vars' => InitVarsGlobals::class, ]; } diff --git a/app/Http/Middleware/InitVarsGlobals.php b/app/Http/Middleware/InitVarsGlobals.php new file mode 100644 index 0000000..d5d5b86 --- /dev/null +++ b/app/Http/Middleware/InitVarsGlobals.php @@ -0,0 +1,92 @@ +value)->first(); + $encart_marqueHeader = Encart::where('page', Page::marqueHeader()->value)->first(); + $encart_marqueBloc2 = Encart::where('page', Page::marqueBloc2()->value)->first(); + $encart_marqueBloc3 = Encart::where('page', Page::marqueBloc3()->value)->first(); + $encart_marqueBloc4l = Encart::where('page', Page::marqueBloc4l()->value)->first(); + $encart_marqueBloc4r = Encart::where('page', Page::marqueBloc4r()->value)->first(); + $encart_marqueFooter = Encart::where('page', Page::marqueFooter()->value)->first(); + $encart_food = Encart::where('page', Page::foodHeader()->value)->first(); + + $pictobrands_marque = PictoBrand::all(); + + $advice_news = Advice::all()->first(); + + $posts = Post::where([ + ['date_start', '<=', Carbon::now()->format('Y-m-d H:i:s')], + ['date_end', '>', Carbon::now()->format('Y-m-d H:i:s')], + ]) + ->orderBy('created_at', 'DESC') + ->get(); + $post_home = Post::where([ + ['date_start', '<=', Carbon::now()->format('Y-m-d H:i:s')], + ['date_end', '>', Carbon::now()->format('Y-m-d H:i:s')], + ['on_top', true] + ])->first(); + + $pictos_marqueBloc2 = Picto::where('page', Page::marqueBloc2()->value)->get(); + $pictos_food = Picto::where('page', Page::foodBloc2()->value)->get(); + + $texts_news = Text::where('page', Page::newsQuestions()->value)->get(); + + $title_marqueBloc2 = Title::where('page', Page::marqueBloc2()->value)->first(); + $title_marqueBloc4 = Title::where('page', Page::marqueBloc4()->value)->first(); + $title_foodBloc2 = Title::where('page', Page::foodBloc2()->value)->first(); + $title_newsPosts = Title::where('page', Page::newsPosts()->value)->first(); + + View::share('encart_home', $encart_home); + View::share('encart_marqueHeader', $encart_marqueHeader); + View::share('encart_marqueBloc2', $encart_marqueBloc2); + View::share('encart_marqueBloc3', $encart_marqueBloc3); + View::share('encart_marqueBloc4l', $encart_marqueBloc4l); + View::share('encart_marqueBloc4r', $encart_marqueBloc4r); + View::share('encart_marqueFooter', $encart_marqueFooter); + View::share('encart_food', $encart_food); + + View::share('pictobrands_marque', $pictobrands_marque); + + View::share('post_home', $post_home); + View::share('posts', $posts); + + View::share('advice_news', $advice_news); + + View::share('pictos_marqueBloc2', $pictos_marqueBloc2); + View::share('pictos_food', $pictos_food); + + View::share('texts_news', $texts_news); + + View::share('title_marqueBloc2', $title_marqueBloc2); + View::share('title_marqueBloc4', $title_marqueBloc4); + View::share('title_foodBloc2', $title_foodBloc2); + View::share('title_newsPosts', $title_newsPosts); + + return $next($request); + } +} diff --git a/app/Http/Middleware/TrustHosts.php b/app/Http/Middleware/TrustHosts.php deleted file mode 100644 index b0550cf..0000000 --- a/app/Http/Middleware/TrustHosts.php +++ /dev/null @@ -1,20 +0,0 @@ -allSubdomainsOfApplicationUrl(), - ]; - } -} diff --git a/app/Http/Requests/StorePostRequest.php b/app/Http/Requests/StorePostRequest.php new file mode 100644 index 0000000..e505d7a --- /dev/null +++ b/app/Http/Requests/StorePostRequest.php @@ -0,0 +1,59 @@ +merge([ + 'date_start' => Carbon::parse("$this->date_start_date $this->date_start_time:00")->toDateTimeString(), + 'date_end' => Carbon::parse("$this->date_end_date $this->date_end_time:00")->toDateTimeString(), + 'on_top' => $this->on_top ? true : false, + ]); + // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch + } catch (InvalidFormatException $e) { + // On fait rien + } + + return auth()->check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'picture_news' => 'required|image|mimes:jpeg,png,jpg|max:1024|dimensions:max_width=380,max_height=298', + 'title' => 'required|max:255', + 'text' => 'required|min:20', + 'date_start' => [ + 'required', + 'date_format:Y-m-d H:i:s', + 'before:' . Carbon::now()->parse('2037-12-31'), + 'after:' . Carbon::now()->format('Y-m-d') + ], + 'date_end' => [ + 'required', + 'date_format:Y-m-d H:i:s', + 'after:date_start', + 'before:' . Carbon::now()->parse('2037-12-31') + ], + 'picture_home' => 'required|image|mimes:jpeg,png,jpg|max:2048|dimensions:max_width=1030,max_height=239', + 'on_top' => 'nullable|boolean', + ]; + } +} diff --git a/app/Http/Requests/StoreSlideRequest.php b/app/Http/Requests/StoreSlideRequest.php index 05f622d..64d9d1a 100644 --- a/app/Http/Requests/StoreSlideRequest.php +++ b/app/Http/Requests/StoreSlideRequest.php @@ -27,10 +27,8 @@ class StoreSlideRequest extends FormRequest $this->merge([ 'link_new_tab' => $this->link_new_tab ? true : false ]); - if (auth()->check()) { - return true; - } - return false; + + return auth()->check(); } /** @@ -57,7 +55,7 @@ class StoreSlideRequest extends FormRequest 'date_end' => [ 'nullable', 'date_format:Y-m-d H:i:s', - 'after:date_start_date', + 'after:date_start', 'before:' . Carbon::now()->parse('2037-12-31') ], ]; diff --git a/app/Http/Requests/UpdateAdviceRequest.php b/app/Http/Requests/UpdateAdviceRequest.php index 0092dc5..71ce2a6 100644 --- a/app/Http/Requests/UpdateAdviceRequest.php +++ b/app/Http/Requests/UpdateAdviceRequest.php @@ -26,9 +26,9 @@ class UpdateAdviceRequest extends FormRequest return [ 'title1' => 'required|max:50', 'title2' => 'required|max:50', - 'picture1' => 'required|image|mimes:jpeg,png,jpg|max:1024|dimensions:width=284,height=284', - 'picture2' => 'required|image|mimes:jpeg,png,jpg|max:1024|dimensions:width=284,height=284', - 'picture3' => 'required|image|mimes:jpeg,png,jpg|max:1024|dimensions:width=284,height=284', + 'picture1' => 'sometimes|image|mimes:jpeg,png,jpg|max:1024|dimensions:width=284,height=284', + 'picture2' => 'sometimes|image|mimes:jpeg,png,jpg|max:1024|dimensions:width=284,height=284', + 'picture3' => 'sometimes|image|mimes:jpeg,png,jpg|max:1024|dimensions:width=284,height=284', 'text1' => 'required|max:2047', 'text2' => 'required|max:2047', ]; diff --git a/app/Http/Requests/UpdatePostRequest.php b/app/Http/Requests/UpdatePostRequest.php new file mode 100644 index 0000000..901c5b5 --- /dev/null +++ b/app/Http/Requests/UpdatePostRequest.php @@ -0,0 +1,34 @@ + [ + 'sometimes', + 'image', + 'mimes:jpeg,png,jpg', + 'max:1024', + 'dimensions:max_width=380,max_height=298' + ], + 'picture_home' => [ + 'sometimes', + 'image', + 'mimes:jpeg,png,jpg', + 'max:2048', + 'dimensions:max_width=1030,max_height=239' + ], + ] + ); + } +} diff --git a/app/Models/Post.php b/app/Models/Post.php new file mode 100644 index 0000000..079e068 --- /dev/null +++ b/app/Models/Post.php @@ -0,0 +1,54 @@ + 'datetime', + 'date_end' => 'datetime', + ]; + + protected $fillable = [ + 'title', + 'text', + 'picture_home', + 'picture_news', + 'date_start', + 'date_end', + 'on_top' + ]; + + protected static function boot() + { + static::creating(function (Post $post) { + if ($post->picture_home) { + $post->picture_home = Utils::storeImage($post->picture_home, $post->getTable()); + } + if ($post->picture_news) { + $post->picture_news = Utils::storeImage($post->picture_news, $post->getTable()); + } + }); + + static::updating(function (Post $post) { + if ($post->picture_home) { + $post->picture_home = Utils::storeImage($post->picture_home, $post->getTable()); + } + if ($post->picture_news) { + $post->picture_news = Utils::storeImage($post->picture_news, $post->getTable()); + } + }); + parent::boot(); + } +} diff --git a/app/Models/Slide.php b/app/Models/Slide.php index 3aa0bae..399d2a5 100644 --- a/app/Models/Slide.php +++ b/app/Models/Slide.php @@ -28,6 +28,7 @@ class Slide extends Model 'link_new_tab', 'slider_id', 'picture', + 'alt_text_picture', 'date_start', 'date_end' ]; diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 21e6a6b..ee8ca5b 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,13 +2,6 @@ namespace App\Providers; -use App\Enums\Page; -use App\Models\Advice; -use App\Models\Encart; -use App\Models\Picto; -use App\Models\PictoBrand; -use App\Models\Title; -use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider @@ -30,46 +23,6 @@ class AppServiceProvider extends ServiceProvider */ public function boot() { - // $encart_home = Encart::where('page', Page::home()->value)->first(); - // $encart_marqueHeader = Encart::where('page', Page::marqueHeader()->value)->first(); - // $encart_marqueBloc2 = Encart::where('page', Page::marqueBloc2()->value)->first(); - // $encart_marqueBloc3 = Encart::where('page', Page::marqueBloc3()->value)->first(); - // $encart_marqueBloc4l = Encart::where('page', Page::marqueBloc4l()->value)->first(); - // $encart_marqueBloc4r = Encart::where('page', Page::marqueBloc4r()->value)->first(); - // $encart_marqueFooter = Encart::where('page', Page::marqueFooter()->value)->first(); - // $encart_food = Encart::where('page', Page::foodHeader()->value)->first(); - - // $pictobrands_marque = PictoBrand::all(); - - // $advices_news = Advice::all()->first(); - - // $pictos_marqueBloc2 = Picto::where('page', Page::marqueBloc2()->value)->get(); - // $pictos_food = Picto::where('page', Page::foodBloc2()->value)->get(); - - // $title_marqueBloc2 = Title::where('page', Page::marqueBloc2()->value)->first(); - // $title_marqueBloc4 = Title::where('page', Page::marqueBloc4()->value)->first(); - // $title_foodBloc2 = Title::where('page', Page::foodBloc2()->value)->first(); - // $title_newsPosts = Title::where('page', Page::newsPosts()->value)->first(); - - // View::share('encart_home', $encart_home); - // View::share('encart_marqueHeader', $encart_marqueHeader); - // View::share('encart_marqueBloc2', $encart_marqueBloc2); - // View::share('encart_marqueBloc3', $encart_marqueBloc3); - // View::share('encart_marqueBloc4l', $encart_marqueBloc4l); - // View::share('encart_marqueBloc4r', $encart_marqueBloc4r); - // View::share('encart_marqueFooter', $encart_marqueFooter); - // View::share('encart_food', $encart_food); - - // View::share('pictobrands_marque', $pictobrands_marque); - - // View::share('advices_news', $advices_news); - - // View::share('pictos_marqueBloc2', $pictos_marqueBloc2); - // View::share('pictos_food', $pictos_food); - - // View::share('title_marqueBloc2', $title_marqueBloc2); - // View::share('title_marqueBloc4', $title_marqueBloc4); - // View::share('title_foodBloc2', $title_foodBloc2); - // View::share('title_newsPosts', $title_newsPosts); + // } } diff --git a/config/bo.php b/config/bo.php index f765e86..83b9bae 100644 --- a/config/bo.php +++ b/config/bo.php @@ -22,4 +22,9 @@ return [ 'advice_image_maxwidth' => '284', 'advice_image_maxheight' => '284', + 'post_home_image_maxwidth' => '1030', + 'post_home_image_maxheight' => '239', + 'post_news_image_maxwidth' => '380', + 'post_news_image_maxheight' => '298', + ]; diff --git a/database/factories/AdviceFactory.php b/database/factories/AdviceFactory.php index e95a9e8..3ac5924 100644 --- a/database/factories/AdviceFactory.php +++ b/database/factories/AdviceFactory.php @@ -24,8 +24,8 @@ class AdviceFactory extends Factory public function definition() { return [ - 'title1' => $this->faker->text(20), - 'title2' => $this->faker->text(20), + 'title1' => $this->faker->text(40), + 'title2' => $this->faker->text(40), 'picture1' => new SplFileInfo(resource_path('assets/images/repas.jpg')), 'picture2' => new SplFileInfo(resource_path('assets/images/repas.jpg')), 'picture3' => new SplFileInfo(resource_path('assets/images/repas.jpg')), diff --git a/database/factories/PostFactory.php b/database/factories/PostFactory.php new file mode 100644 index 0000000..6f522d7 --- /dev/null +++ b/database/factories/PostFactory.php @@ -0,0 +1,28 @@ + $this->faker->text(5), + 'text' => $this->faker->paragraph(10, false), + 'picture_home' => new SplFileInfo(resource_path('assets/images/burger-fond.jpg')), + 'picture_news' => new SplFileInfo(resource_path('assets/images/burger.jpg')), + 'date_start' => Carbon::now(), + 'date_end' => Carbon::now()->addDays(2), + 'on_top' => false + ]; + } +} diff --git a/database/factories/SlideFactory.php b/database/factories/SlideFactory.php index 7f11c3e..40d0a38 100644 --- a/database/factories/SlideFactory.php +++ b/database/factories/SlideFactory.php @@ -32,7 +32,8 @@ class SlideFactory extends Factory 'link_new_tab' => rand(0, 1), 'date_start' => Carbon::now(), 'date_end' => Carbon::now()->addDays(2), - 'picture' => new SplFileInfo(resource_path('assets/images/image-sample.jpg')) + 'picture' => new SplFileInfo(resource_path('assets/images/image-sample.jpg')), + 'alt_text_picture' => $this->faker->sentence(10), ]; } } diff --git a/database/factories/SliderFactory.php b/database/factories/SliderFactory.php index 43f75b8..01a6873 100644 --- a/database/factories/SliderFactory.php +++ b/database/factories/SliderFactory.php @@ -29,7 +29,7 @@ class SliderFactory extends Factory 'label' => $label, 'slug' => Str::slug($label), 'commentaire' => $this->faker->realText(50), - 'published' => 1 + 'published' => false ]; } } diff --git a/database/migrations/2021_04_14_115938_create_sliders_table.php b/database/migrations/2021_04_14_115938_create_sliders_table.php index 19b9560..88578db 100644 --- a/database/migrations/2021_04_14_115938_create_sliders_table.php +++ b/database/migrations/2021_04_14_115938_create_sliders_table.php @@ -18,7 +18,7 @@ class CreateSlidersTable extends Migration $table->string('label'); $table->string('slug')->unique(); $table->string('commentaire')->nullable(); - $table->boolean('published')->nullable(); + $table->boolean('published')->default(false); $table->timestamps(); }); } diff --git a/database/migrations/2021_04_14_115954_create_slides_table.php b/database/migrations/2021_04_14_115954_create_slides_table.php index f3a7111..e6ae6fe 100644 --- a/database/migrations/2021_04_14_115954_create_slides_table.php +++ b/database/migrations/2021_04_14_115954_create_slides_table.php @@ -20,6 +20,7 @@ class CreateSlidesTable extends Migration $table->string('title'); $table->text('text')->nullable(); $table->string('picture')->nullable(); + $table->string('alt_text_picture')->nullable(); $table->string('link_label')->nullable(); $table->string('link')->nullable(); $table->boolean('link_new_tab')->default(false); diff --git a/database/migrations/2021_12_15_173936_create_advices_table.php b/database/migrations/2021_12_16_093950_create_advice_table.php similarity index 83% rename from database/migrations/2021_12_15_173936_create_advices_table.php rename to database/migrations/2021_12_16_093950_create_advice_table.php index 5c44001..6c68dba 100644 --- a/database/migrations/2021_12_15_173936_create_advices_table.php +++ b/database/migrations/2021_12_16_093950_create_advice_table.php @@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -class CreateAdvicesTable extends Migration +class CreateAdviceTable extends Migration { /** * Run the migrations. @@ -13,7 +13,7 @@ class CreateAdvicesTable extends Migration */ public function up() { - Schema::create('advices', function (Blueprint $table) { + Schema::create('advice', function (Blueprint $table) { $table->id(); $table->string('title1'); $table->string('title2'); @@ -33,6 +33,6 @@ class CreateAdvicesTable extends Migration */ public function down() { - Schema::dropIfExists('advices'); + Schema::dropIfExists('advice'); } } diff --git a/database/migrations/2021_12_16_131639_create_posts_table.php b/database/migrations/2021_12_16_131639_create_posts_table.php new file mode 100644 index 0000000..ec880f6 --- /dev/null +++ b/database/migrations/2021_12_16_131639_create_posts_table.php @@ -0,0 +1,38 @@ +id(); + $table->string('title'); + $table->mediumText('text'); + $table->string('picture_home')->nullable(); + $table->string('picture_news')->nullable(); + $table->timestamp('date_start')->nullable(); + $table->timestamp('date_end')->nullable(); + $table->boolean('on_top')->default(false); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('posts'); + } +} diff --git a/database/seeders/AdvicesSeeder.php b/database/seeders/AdviceSeeder.php similarity index 87% rename from database/seeders/AdvicesSeeder.php rename to database/seeders/AdviceSeeder.php index 30c3aa3..835434c 100644 --- a/database/seeders/AdvicesSeeder.php +++ b/database/seeders/AdviceSeeder.php @@ -5,7 +5,7 @@ namespace Database\Seeders; use App\Models\Advice; use Illuminate\Database\Seeder; -class AdvicesSeeder extends Seeder +class AdviceSeeder extends Seeder { /** * Run the database seeds. diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 74e3794..60fef67 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -22,7 +22,8 @@ class DatabaseSeeder extends Seeder PictoBrandsSeeder::class, TitlesSeeder::class, TextsSeeder::class, - AdvicesSeeder::class, + AdviceSeeder::class, + PostsSeeder::class, ]); } } diff --git a/database/seeders/EncartsSeeder.php b/database/seeders/EncartsSeeder.php index 55a79ab..a881349 100644 --- a/database/seeders/EncartsSeeder.php +++ b/database/seeders/EncartsSeeder.php @@ -16,7 +16,7 @@ class EncartsSeeder extends Seeder public function run() { $tabEncarts = [ - Page::home(), + Page::homeHeader(), Page::marqueHeader(), Page::marqueBloc4l(), Page::marqueBloc4r(), diff --git a/database/seeders/PostsSeeder.php b/database/seeders/PostsSeeder.php new file mode 100644 index 0000000..5ca0340 --- /dev/null +++ b/database/seeders/PostsSeeder.php @@ -0,0 +1,19 @@ +create(); + } +} diff --git a/public/css/preload-back.css b/public/css/preload-back.css index 79d2478..1017183 100644 --- a/public/css/preload-back.css +++ b/public/css/preload-back.css @@ -16,6 +16,22 @@ text-align:center; } +.wdt11{ + width:11%; +} + +.wdt25{ + width:25%; +} + +.wdt50{ + width:50%; +} + +.wdt75{ + width:75%; +} + #sidebarTop{ height:3rem; } diff --git a/public/css/preload-front.css b/public/css/preload-front.css index 71c0e03..6ebc482 100644 --- a/public/css/preload-front.css +++ b/public/css/preload-front.css @@ -333,6 +333,10 @@ ul.infos span{ } @media screen and (min-width: 800px){ + .is-flex .w25{ + flex-basis:25%; + } + .is-flex .w50{ flex-basis:50%; } @@ -1351,6 +1355,10 @@ input[type=text]{ max-width:32%; } + .posts-list{ + align-items:initial; + } + .gamme-card{ width:32%; max-width:32%; @@ -2034,6 +2042,10 @@ input[type=text]{ line-height:1.5; } +.advice-img{ + min-width:270px; +} + .blue header{ background-color:#222f5c; } @@ -2179,6 +2191,10 @@ input[type=text]{ margin-top:180px; } + .desk-mr10{ + margin-right:10px; + } + .desk-mr18{ margin-right:80px; } diff --git a/resources/sass/_classes.scss b/resources/sass/_classes.scss index 6b93a1e..a9d37e5 100644 --- a/resources/sass/_classes.scss +++ b/resources/sass/_classes.scss @@ -15,3 +15,16 @@ background-color: #eeeeee !important; text-align: center; } + +.wdt11 { + width: 11%; +} +.wdt25 { + width: 25%; +} +.wdt50 { + width: 50%; +} +.wdt75 { + width: 75%; +} diff --git a/resources/sass/frontend/_custom.scss b/resources/sass/frontend/_custom.scss index fc26fa7..802c14a 100644 --- a/resources/sass/frontend/_custom.scss +++ b/resources/sass/frontend/_custom.scss @@ -157,7 +157,9 @@ line-height: 1.5; } } - +.advice-img { + min-width: 270px; +} // .plan:before { // content: url("~@/images/icon-plan.png"); // position: absolute; @@ -342,6 +344,9 @@ .desk-mt180 { margin-top: 180px; } + .desk-mr10 { + margin-right: 10px; + } .desk-mr18 { margin-right: 80px; } diff --git a/resources/sass/frontend/_list.scss b/resources/sass/frontend/_list.scss index 0443bb0..6a04ace 100644 --- a/resources/sass/frontend/_list.scss +++ b/resources/sass/frontend/_list.scss @@ -259,6 +259,9 @@ width: 32%; max-width: 32%; } + .posts-list { + align-items: initial; + } .gamme-card { width: 32%; diff --git a/resources/sass/frontend/_utils.scss b/resources/sass/frontend/_utils.scss index 4e51bfd..2aeafda 100644 --- a/resources/sass/frontend/_utils.scss +++ b/resources/sass/frontend/_utils.scss @@ -70,6 +70,9 @@ } @media screen and (min-width: 800px) { + .is-flex .w25 { + flex-basis: 25%; + } .is-flex .w50 { flex-basis: 50%; &:nth-child(2) { diff --git a/resources/views/back/advice/edit.blade.php b/resources/views/back/advice/edit.blade.php new file mode 100644 index 0000000..74e5be4 --- /dev/null +++ b/resources/views/back/advice/edit.blade.php @@ -0,0 +1,71 @@ +@extends('layouts.backend') + +@section('content') +
+ @method('PUT') + @csrf +
+

+ < {{ __('Présentation') }} {{ __('Edition') }}

+
+
+
+page->equals(\App\Enums\Page::marqueHeader()), \App\Enums\Page::toArray()); exit; +// dd($advice->page->equals(\App\Enums\Page::marqueHeader()), \App\Enums\Page::toValues()); exit; +?> +
+
+ + @if ($advice->picture1 !== null) +
+
+ {{$advice->title1}} + @endif + @include('back.modules.input-error', ['inputName'=>'picture1']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'title1']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'text1']) +
+
+
+
+ + @if ($advice->picture2 !== null) +
+
+ {{$advice->title2}} + @endif + @include('back.modules.input-error', ['inputName'=>'picture2']) +
+
+
+ + @if ($advice->picture3 !== null) +
+
+ {{$advice->title3}} + @endif + @include('back.modules.input-error', ['inputName'=>'picture3']) +
+
+
+ + + @include('back.modules.input-error', ['inputName'=>'title2']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'text2']) +
+
+@endsection diff --git a/resources/views/back/pictos/create.blade.php b/resources/views/back/pictos/create.blade.php index 251aaa8..e9198c1 100644 --- a/resources/views/back/pictos/create.blade.php +++ b/resources/views/back/pictos/create.blade.php @@ -4,8 +4,9 @@
@csrf
-

- < {{ __('Pictogrammes') }} {{ __('Création') }}

+

+ < + {{ __('Pictogrammes') }} {{ __('Création') }}

diff --git a/resources/views/back/pictos/edit.blade.php b/resources/views/back/pictos/edit.blade.php index c06199c..ff97323 100644 --- a/resources/views/back/pictos/edit.blade.php +++ b/resources/views/back/pictos/edit.blade.php @@ -7,9 +7,8 @@ @csrf

- {{-- - < --}} - {{ __('Pictogramme') }} {{ __('Edition') }}

+ < + {{ __('Pictogramme') }} {{ __('Edition') }}
diff --git a/resources/views/back/pictos/form-inputs.blade.php b/resources/views/back/pictos/form-inputs.blade.php index 9c62e99..9e01e9b 100644 --- a/resources/views/back/pictos/form-inputs.blade.php +++ b/resources/views/back/pictos/form-inputs.blade.php @@ -1,7 +1,7 @@
-
+
@if ($picto->picture !== null)
diff --git a/resources/views/back/posts/create.blade.php b/resources/views/back/posts/create.blade.php new file mode 100644 index 0000000..024c99b --- /dev/null +++ b/resources/views/back/posts/create.blade.php @@ -0,0 +1,66 @@ +@extends('layouts.backend') + +@section('content') + + @csrf +
+

+ < {{ __('Actualité') }} {{ __('Création') }}

+
+
+
+ + @include('back.posts.form-inputs') + + +@endsection + +@section('scripts') + +@endsection \ No newline at end of file diff --git a/resources/views/back/posts/edit.blade.php b/resources/views/back/posts/edit.blade.php index d1ec141..884eea0 100644 --- a/resources/views/back/posts/edit.blade.php +++ b/resources/views/back/posts/edit.blade.php @@ -1,69 +1,17 @@ @extends('layouts.backend') @section('content') -
+ + @method('PUT') @csrf
-

- < {{ __('Présentation') }} {{ __('Edition') }}

+

+ < {{ __('Actualité') }} {{ __('Edition') }}

-page->equals(\App\Enums\Page::marqueHeader()), \App\Enums\Page::toArray()); exit; -// dd($advice->page->equals(\App\Enums\Page::marqueHeader()), \App\Enums\Page::toValues()); exit; -?> -
- - - @include('back.modules.input-error', ['inputName'=>'title1']) -
-
- - - @include('back.modules.input-error', ['inputName'=>'text1']) -
-
-
- - @if ($advice->picture1 !== null) -
-
- {{$advice->title1}} - @endif - @include('back.modules.input-error', ['inputName'=>'picture1']) -
-
- - - @include('back.modules.input-error', ['inputName'=>'title1']) -
-
- - - @include('back.modules.input-error', ['inputName'=>'text1']) -
-
-
- - @if ($advice->picture2 !== null) -
-
- {{$advice->title2}} - @endif - @include('back.modules.input-error', ['inputName'=>'picture2']) -
-
-
- - @if ($advice->picture3 !== null) -
-
- {{$advice->title3}} - @endif - @include('back.modules.input-error', ['inputName'=>'picture3']) -
+ @include('back.posts.form-inputs')
@endsection diff --git a/resources/views/back/posts/form-inputs.blade.php b/resources/views/back/posts/form-inputs.blade.php new file mode 100644 index 0000000..4256ba0 --- /dev/null +++ b/resources/views/back/posts/form-inputs.blade.php @@ -0,0 +1,79 @@ +
+

{{ __('Contenu du post') }}

+
+
+
+
+ @if ($post->picture_news !== null) + +
+
+ {{$post->title}} + @else + + @endif + @include('back.modules.input-error', ['inputName'=>'picture_news']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'title']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'text']) +
+
+ +
+

{{ __('Période de publication') }}

+
+
+
+ + @if($post->date_start !== null) + + + @else + + + @endif + {{-- {{ __('Laisser vide pour un affichage immédiat') }} --}} + @include('back.modules.input-error', ['inputName'=>'date_start']) +
+
+ + @if($post->date_end !== null) + + + @else + + + @endif + @include('back.modules.input-error', ['inputName'=>'date_end']) +
+
+ +
+

{{ __('Affichage sur la Homepage') }}

+
+
+
+
+ @if ($post->picture_home !== null) + +
+
+ {{$post->title}} + @else + + @endif + @include('back.modules.input-error', ['inputName'=>'picture_home']) +
+
+ on_top) === 1 || old('on_top', $post->on_top) === 'on')checked="checked" @endif> + + @include('back.modules.input-error', ['inputName'=>'on_top']) +
+
diff --git a/resources/views/back/posts/index.blade.php b/resources/views/back/posts/index.blade.php new file mode 100644 index 0000000..e1f09d2 --- /dev/null +++ b/resources/views/back/posts/index.blade.php @@ -0,0 +1,49 @@ +@extends('layouts.backend') + +@section('content') +
+

{{ __('Actualités') }} {{ __('Liste') }}

+ + @if ($errors->any()) + @foreach($errors->all() as $error) + {{ $error }} + @endforeach + @endif + {{ __('Créer une actualité') }} +
+ + + + + + + + + + + @foreach ($posts as $post) + + @if ($post->picture_news !== null) + + @else + + @endif + + + + + + + @endforeach + +
{{ __('Image') }}{{ __('Titre') }}{{ __('A la une') }}{{ __('Date de publication') }}{{ __('Date d\'archivage') }}
+ {{$post->title}} + {{$post->title}}{{$post->on_top ? 'Oui' : 'Non'}}{{date_format($post->date_start, "d/m/Y H:i")}}{{date_format($post->date_end, "d/m/Y H:i")}} + {{ __('Éditer') }} +
+ @method('DELETE') + @csrf + +
+
+@endsection \ No newline at end of file diff --git a/resources/views/back/sliders/edit.blade.php b/resources/views/back/sliders/edit.blade.php index 614f4da..0e98850 100644 --- a/resources/views/back/sliders/edit.blade.php +++ b/resources/views/back/sliders/edit.blade.php @@ -40,8 +40,8 @@ {!! $slide->text !!} {{ $slide->link_label }} - {{$slide->date_start}} - {{$slide->date_end}} + {{date_format($slide->date_start, "d/m/Y H:i")}} + {{date_format($slide->date_end, "d/m/Y H:i")}} {{$slide->slider->label}} @if ($loop->first) diff --git a/resources/views/back/sliders/form-inputs.blade.php b/resources/views/back/sliders/form-inputs.blade.php index 1955b7d..ccb147e 100644 --- a/resources/views/back/sliders/form-inputs.blade.php +++ b/resources/views/back/sliders/form-inputs.blade.php @@ -9,7 +9,7 @@
- published) !== 0)checked @endif> + published) === 1 || old('published', $slider->published) === 'on')checked="checked" @endif> @include('back.modules.input-error', ['inputName'=>'published'])
diff --git a/resources/views/back/sliders/index.blade.php b/resources/views/back/sliders/index.blade.php index 903426f..0ef57fb 100644 --- a/resources/views/back/sliders/index.blade.php +++ b/resources/views/back/sliders/index.blade.php @@ -23,7 +23,7 @@ {{$slider->label}} {{$slider->commentaire}} - {{$slider->published}} + {{$slider->published ? 'Oui' : 'Non'}} {{ __('Éditer') }}
diff --git a/resources/views/back/slides/form-inputs.blade.php b/resources/views/back/slides/form-inputs.blade.php index 84141c7..01943b0 100644 --- a/resources/views/back/slides/form-inputs.blade.php +++ b/resources/views/back/slides/form-inputs.blade.php @@ -9,15 +9,20 @@ @include('back.modules.input-error', ['inputName'=>'text'])
-
- +
+ @if ($slide->picture !== null) -
-
+
+
{{$slide->title}} @endif @include('back.modules.input-error', ['inputName'=>'picture'])
+
+ + + @include('back.modules.input-error', ['inputName'=>'alt_text_picture']) +
diff --git a/resources/views/back/texts/create.blade.php b/resources/views/back/texts/create.blade.php new file mode 100644 index 0000000..926c0e7 --- /dev/null +++ b/resources/views/back/texts/create.blade.php @@ -0,0 +1,67 @@ +@extends('layouts.backend') + +@section('content') + + @csrf +
+

+ < + {{ __('Questions / Réponses') }} {{ __('Création') }}

+
+
+
+ + @include('back.texts.form-inputs') + + +@endsection + +@section('scripts') + +@endsection \ No newline at end of file diff --git a/resources/views/back/texts/edit.blade.php b/resources/views/back/texts/edit.blade.php new file mode 100644 index 0000000..3a9248e --- /dev/null +++ b/resources/views/back/texts/edit.blade.php @@ -0,0 +1,18 @@ +@extends('layouts.backend') + +@section('content') + +
+ @method('PUT') + @csrf +
+

+ < + {{ __('Questions / Réponses') }} {{ __('Edition') }}

+
+
+
+ @include('back.texts.form-inputs') +
+@endsection diff --git a/resources/views/back/texts/form-inputs.blade.php b/resources/views/back/texts/form-inputs.blade.php new file mode 100644 index 0000000..512f194 --- /dev/null +++ b/resources/views/back/texts/form-inputs.blade.php @@ -0,0 +1,12 @@ +
+
+ + + @include('back.modules.input-error', ['inputName'=>'title']) +
+
+ + + @include('back.modules.input-error', ['inputName'=>'text']) +
+
diff --git a/resources/views/back/texts/index.blade.php b/resources/views/back/texts/index.blade.php new file mode 100644 index 0000000..f56fc73 --- /dev/null +++ b/resources/views/back/texts/index.blade.php @@ -0,0 +1,37 @@ +@extends('layouts.backend') + +@section('content') +
+

{{ __('Questions / Réponses') }} {{ __('Liste') }}

+ + @if ($errors->any()) + @foreach($errors->all() as $error) + {{ $error }} + @endforeach + @endif + {{ __('Créer une Question / Réponse') }} +
+ + + + + + + + @foreach ($texts as $text) + + + + + + @endforeach + +
{{ __('Question') }}{{ __('Réponse') }}
{{$text->title}}{{$text->text}} + {{ __('Éditer') }} +
+ @method('DELETE') + @csrf + +
+
+@endsection \ No newline at end of file diff --git a/resources/views/front/home.blade.php b/resources/views/front/home.blade.php index 714de0e..54813ec 100644 --- a/resources/views/front/home.blade.php +++ b/resources/views/front/home.blade.php @@ -4,16 +4,18 @@ @section('content')
+ @if (isset($slider))
- @foreach ($slider->slides as $slide) + @foreach ($slides as $slide)
- + {{ $slide->alt_text_picture}}
@endforeach

{!! clean(nl2br($slider->commentaire)) !!}

+ @endif +@if (isset($post_home))
@@ -93,23 +96,15 @@ L'actualité de la marque Doux
-
- +
+ {{ $post_home->title}}
-

- Doux innove et propose sa référence iconique en format mini ! -

-

- Découvrez nos nouveautés : les Mini Chicken Franks Doux. Original ou - Cheese, retrouvez vos deux recettes préférées en version mini. Ce - format est idéal pour les moments de partage et les repas sur le - pouce. Réchauffez les au micro-ondes, elles seront prêtes en - quelques minutes seulement. Très pratique et pensées pour vous - faciliter la vie ! N'hésitez plus et laissez vous tenter ! -

+

{{ $post_home->title}}

+

{!! clean(nl2br($post_home->text)) !!}

En savoir plus

+@endif @endsection \ No newline at end of file diff --git a/resources/views/front/news.blade.php b/resources/views/front/news.blade.php index 0eeda11..bf2d8b0 100644 --- a/resources/views/front/news.blade.php +++ b/resources/views/front/news.blade.php @@ -33,20 +33,23 @@
- photo + {{ $advice_news->title1 }}
-

...Nutritionnels

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

+

{{ $advice_news->title1 }}

+

{!! clean(nl2br($advice_news->text1)) !!}

-
- photo +
+ {{ $advice_news->title2 }} +
+
+ {{ $advice_news->title2 }}
-

...Cuisines

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

+

{{ $advice_news->title2 }}

+

{!! clean(nl2br($advice_news->text2)) !!}

@@ -66,62 +69,28 @@
    + @foreach ($texts_news as $text)
  • -

    Peut-on recongeler après décongélation ?

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

    -
  • -
  • -

    Qu'est-ce qu'un repas équilibré ?

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

    -
  • -
  • -

    Comment la volaille participe à mon équilibre ?

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

    +

    {{ $text->title}}

    +

    {!! clean(nl2br($text->text)) !!}

  • + @endforeach
-

Actualité

-

Lorem Ipsum

+

{{ $title_newsPosts->title}}

+

{{ $title_newsPosts->text}}

+ @foreach ($posts as $post)
- -

Lorem ip sum dolor sit amet

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr - ud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliq - ua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

-
-
- -

Lorem ip sum dolor sit amet

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr - ud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliq - ua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

-
-
- -

Lorem ip sum dolor sit amet

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr - ud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliq - ua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

-
-
- -

Lorem ip sum dolor sit amet

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr - ud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliq - ua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

-
-
- -

Lorem ip sum dolor sit amet

-

Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostr - ud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ip sum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliq - ua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

+ {{ $post->title }} +

{{ $post->title }}

+

{!! clean(nl2br($post->text)) !!}

+ @endforeach
diff --git a/resources/views/layouts/backend/sidenav.blade.php b/resources/views/layouts/backend/sidenav.blade.php index 3c80b71..3bcf9f6 100644 --- a/resources/views/layouts/backend/sidenav.blade.php +++ b/resources/views/layouts/backend/sidenav.blade.php @@ -54,12 +54,7 @@
{{ __('ENCART DE BAS DE PAGE') }}
{{ __('Contenu') }} - {{-- {{ __('Pictogrammes') }} --}}
- {{--
-
{{ __('LES AVANTAGES') }}
- {{ __('Contenu') }} -
--}}
@@ -74,14 +69,14 @@
{{--
{{ __('LES AVANTAGES') }}
diff --git a/resources/views/layouts/frontend.blade.php b/resources/views/layouts/frontend.blade.php index 5a3372b..44ccc93 100644 --- a/resources/views/layouts/frontend.blade.php +++ b/resources/views/layouts/frontend.blade.php @@ -17,9 +17,6 @@
- - @stack('scripts') diff --git a/routes/web.php b/routes/web.php index 171ae4e..b7aec23 100644 --- a/routes/web.php +++ b/routes/web.php @@ -11,13 +11,15 @@ * phpcs:ignore PEAR.Commenting.FileComment.MissingVersion */ -use App\Http\Controllers\Bo\AdvicesController; +use App\Http\Controllers\Bo\AdviceController; use App\Http\Controllers\Bo\EncartsController; use App\Http\Controllers\Bo\HomeController; use App\Http\Controllers\Bo\PictoBrandsController; use App\Http\Controllers\Bo\PictosController; +use App\Http\Controllers\Bo\PostsController; use App\Http\Controllers\Bo\SlidersController; use App\Http\Controllers\Bo\SlidesController; +use App\Http\Controllers\Bo\TextsController; use App\Http\Controllers\Bo\TitlesController; use App\Http\Controllers\HomeController as ControllersHomeController; use Illuminate\Support\Facades\Route; @@ -38,7 +40,6 @@ Route::prefix('bo') ->name('bo.') ->group( function () { - //Route::middleware(['throttle:credentials']) Route::middleware([]) ->group( function () { @@ -55,7 +56,7 @@ Route::prefix('bo') ); } ); - Route::middleware(['auth:web']) + Route::middleware(['auth:web', 'init-vars']) ->group( function () { Route::get( @@ -74,9 +75,11 @@ Route::prefix('bo') Route::resource('encarts', EncartsController::class) ->except(['index', 'create', 'store', 'destroy', 'show']); Route::resource('pictos', PictosController::class)->except(['show']); + Route::resource('posts', PostsController::class)->except(['show']); Route::resource('pictobrands', PictoBrandsController::class)->except(['show']); - Route::resource('posts', AdvicesController::class) + Route::resource('advice', AdviceController::class) ->except(['index', 'create', 'store', 'destroy', 'show']); + Route::resource('texts', TextsController::class)->except(['show']); Route::resource('titles', TitlesController::class) ->except(['index', 'create', 'store', 'destroy', 'show']); Route::get( @@ -87,33 +90,26 @@ Route::prefix('bo') ] )->name('slides.change-order'); Route::get('/pictos/{page}', [PictosController::class, 'index'])->name('pictos.content'); + Route::get('/texts/{page}', [TextsController::class, 'index'])->name('texts.content'); + // Route::get('/posts', [PostsController::class, 'index'])->name('posts'); } ); } ); -Route::get('/', [ControllersHomeController::class, 'index'])->name('home'); -Route::view('/la-marque', 'front.a-propos')->name('wasup'); -Route::view('/le-produit', 'front.product')->name('product'); -Route::view('/les-produits', 'front.products-list')->name('products'); -Route::view('/les-gammes', 'front.gammes')->name('gammes'); -Route::view('/les-categories', 'front.categorie')->name('categories'); -Route::view('/les-actualites', 'front.news')->name('news'); -// Route::get( -// '/contact', -// [ -// ControllersContactController::class, -// 'contact' -// ] -// )->name('contact'); -// Route::post( -// '/contact', -// [ -// ControllersContactController::class, -// 'contactSubmit' -// ] -// )->name('contact.submit'); -Route::view('/food-service', 'front.food-service')->name('food'); -Route::view('/mentions-legales', 'front.legals')->name('cgu'); -Route::view('/charte-confidentialite', 'front.policy')->name('policy'); -Route::view('/plan-site', 'front.site-map')->name('site-map'); +Route::middleware(['init-vars']) + ->group( + function () { + Route::get('/', [ControllersHomeController::class, 'index'])->name('home'); + Route::view('/la-marque', 'front.a-propos')->name('wasup'); + Route::view('/le-produit', 'front.product')->name('product'); + Route::view('/les-produits', 'front.products-list')->name('products'); + Route::view('/les-gammes', 'front.gammes')->name('gammes'); + Route::view('/les-categories', 'front.categorie')->name('categories'); + Route::view('/les-actualites', 'front.news')->name('news'); + Route::view('/food-service', 'front.food-service')->name('food'); + Route::view('/mentions-legales', 'front.legals')->name('cgu'); + Route::view('/charte-confidentialite', 'front.policy')->name('policy'); + Route::view('/plan-site', 'front.site-map')->name('site-map'); + } + );