diff --git a/app/Http/Controllers/RecipeController.php b/app/Http/Controllers/RecipeController.php index d89408c..1bc8406 100644 --- a/app/Http/Controllers/RecipeController.php +++ b/app/Http/Controllers/RecipeController.php @@ -61,7 +61,15 @@ class RecipeController extends Controller */ public function show(Recipe $recipe): View { - return view('recipes.show')->with('recipe', $recipe); + // Set background image if media has been added. + $bg_image = NULL; + if ($recipe->hasMedia() && $recipe->getFirstMedia()->hasGeneratedConversion('header')) { + $bg_image = $recipe->getFirstMediaUrl('default', 'header'); + } + + return view('recipes.show') + ->with('recipe', $recipe) + ->with('bg_image', $bg_image); } /** diff --git a/app/Models/Recipe.php b/app/Models/Recipe.php index e9a46df..9ddb865 100644 --- a/app/Models/Recipe.php +++ b/app/Models/Recipe.php @@ -11,6 +11,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Laravel\Scout\Searchable; +use Spatie\Image\Manipulations; use Spatie\MediaLibrary\HasMedia; use Spatie\MediaLibrary\InteractsWithMedia; use Spatie\MediaLibrary\MediaCollections\Models\Media; @@ -66,6 +67,8 @@ use Spatie\Tags\HasTags; * @method static \Illuminate\Database\Eloquent\Builder|Recipe withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) * @property string|null $description_delta * @method static \Illuminate\Database\Eloquent\Builder|Recipe whereDescriptionDelta($value) + * @property-read \Spatie\MediaLibrary\MediaCollections\Models\Collections\MediaCollection|Media[] $media + * @property-read int|null $media_count */ final class Recipe extends Model implements HasMedia { @@ -205,7 +208,13 @@ final class Recipe extends Model implements HasMedia $this->addMediaConversion('preview') ->width(368) ->height(232) - ->sharpen(10); + ->sharpen(10) + ->optimize(); + + $this->addMediaConversion('header') + ->fit(Manipulations::FIT_CROP, 1600, 900) + ->sharpen(10) + ->optimize(); } } diff --git a/app/View/Components/AppLayout.php b/app/View/Components/AppLayout.php index b45d342..1e9e1ce 100644 --- a/app/View/Components/AppLayout.php +++ b/app/View/Components/AppLayout.php @@ -2,16 +2,15 @@ namespace App\View\Components; +use Illuminate\Contracts\View\View; use Illuminate\View\Component; class AppLayout extends Component { /** * Get the view / contents that represents the component. - * - * @return \Illuminate\View\View */ - public function render() + public function render(): View { return view('layouts.app'); } diff --git a/app/View/Components/GuestLayout.php b/app/View/Components/GuestLayout.php index 04cc559..083ca1f 100644 --- a/app/View/Components/GuestLayout.php +++ b/app/View/Components/GuestLayout.php @@ -2,16 +2,15 @@ namespace App\View\Components; +use Illuminate\Contracts\View\View; use Illuminate\View\Component; class GuestLayout extends Component { /** * Get the view / contents that represents the component. - * - * @return \Illuminate\View\View */ - public function render() + public function render(): View { return view('layouts.guest'); } diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 53a0563..1ca101f 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -34,7 +34,11 @@ -
+ @isset($bg_image) +
+ @else +
+ @endisset @if(session()->has('message'))
{{ session()->get('message') }} @@ -51,8 +55,8 @@
@endif -
-
+
+
{{ $slot }}
diff --git a/resources/views/recipes/show.blade.php b/resources/views/recipes/show.blade.php index 6bc28fd..b540cf2 100644 --- a/resources/views/recipes/show.blade.php +++ b/resources/views/recipes/show.blade.php @@ -1,5 +1,8 @@ {{ $recipe->name }} + @if(!empty($bg_image)) + {{ $bg_image }} + @endisset

{{ $recipe->name }}