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') +
+@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 @@