Files
eatvio-infra/resources/views/recipe/show.blade.php
Anatoliy Poloz fc41cc7106 WIP recipe
2023-12-12 14:06:49 +03:00

433 lines
21 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@extends('layouts/eatvio')
@section('page_title', 'Recipe ' . $recipe->title)
@php
$recipeViewsCount = views($recipe)->unique()->count();
@endphp
@section('main_section')
<section class="content">
<div class="content__container container-sm">
<div class="content__heading">
<a href="{{ route('recipe.index') }}" class="content__heading-back icon-arrow-short-left">
<span>Рецепты</span>
</a>
<div class="content__heading-stats">
<div class="content__heading-stat icon-eye-fill">
<strong>{{ $recipeViewsCount }}</strong>
</div>
<div class="content__heading-stat icon-heart-fill">
<strong>@livewire('recipe.like-count', ['recipe' => $recipe])</strong>
</div>
<div class="content__heading-stat icon-message-square">
<strong>{{ $recipe->comments_count }}</strong>
</div>
</div>
<div class="content__person">
<div class="content__person-name">
{{ $author['name'] }}
</div>
<div class="content__person-thumb">
@empty($author->profile_photo_path)
<img src="{{ $author->profile_photo_url }}" alt="thumb">
@else
<img src="/storage/{{ $author->profile_photo_path }}" alt="thumb">
@endempty
</div>
</div>
</div>
</div>
</section>
<section class="recipe">
<div class="recipe__container container-sm">
<div class="recipe__content">
<div class="recipe__header">
<div class="recipe__image">
<img src="/storage/{{ $recipe->image }}" class="cover-image" alt="recipe">
</div>
<div class="recipe__body">
<div class="recipe__caption">
<h1 class="recipe__title">
{{ $recipe->title }}
</h1>
<button type="button" class="recipe__action icon-dotts"></button>
</div>
<div class="recipe__stats">
<div class="recipe__stat icon-clock">{{ __('recipe.t' . $recipe->cooking_time . "m") }}</div>
<div class="recipe__stat icon-foots">{{ $recipe->steps->count() }} этапов</div>
</div>
<p class="recipe__desc">{!! $recipe->description !!}</p>
@if (strlen(trim($recipe->video_url)) > 4)
<a target="_blank" rel="noopener noreferrer" href="{{ $recipe->video_url }}" class="recipe__link icon-youtube">Посмотреть рецепт на YouTube</a>
@endif
</div>
</div>
<div class="recipe__info">
<div class="recipe__info-column">
<div class="recipe__info-caption">
ПРОДУКТЫ:
</div>
<ul class="recipe__info-list marked">
@foreach($recipe->ingredients as $ingredient)
@php
$localizedUnit = (isset($ingredient['unit']) && mb_strlen($ingredient['unit']) > 1)
? $ingredient['unit']
: 'gr';
@endphp
@if(mb_strlen($ingredient['name']) > 1)
<li>{{ $ingredient['name'] }} - {{ $ingredient['portion'] }} {{ __('recipe.' . $localizedUnit ) }}</li>
@endif
@endforeach
</ul>
</div>
<div class="recipe__info-column">
<div class="recipe__info-caption">
ЦЕННОСТЬ:
</div>
<ul class="recipe__info-list">
<li>WIP</li>
{{--
<li>Калории: 139.9 ккал</li>
<li>Белки: 20.4 гр</li>
<li>Жиры: 5.7 гр</li>
<li>Углеводы: 1.8 гр</li>
--}}
</ul>
</div>
<div class="recipe__info-column">
<div class="recipe__info-caption">
ЦЕННОСТЬ:
</div>
<div class="recipe__info-tags">
@foreach($recipe->tags->unique() as $curTag)
<a href="{{ $curTag->recipe_index_url }}" class="recipe__info-tag">{{ $curTag->name }}</a>
@endforeach
</div>
</div>
</div>
<div class="recipe__footer">
<a href="#commentsList" class="recipe__footer-action icon-message-square">
<span>Комментировать</span>
</a>
@livewire('recipe.like', ['recipe' => $recipe])
{{--<button class="recipe__footer-action icon-heart">
<span>Нравится</span>
</button>--}}
<button class="recipe__footer-action icon-share">
<span>Поделится</span>
</button>
</div>
</div>
</div>
</section>
<section class="steps">
<div class="steps__container container-sm">
<h2 class="steps__title title">
ПОШАГОВЫЙ ФОТО РЕЦЕПТ - КУРИНЫЕ РУЛЕТИКИ С СЫРОМ
</h2>
<ol class="steps__list">
@foreach($recipe->steps as $step)
<li class="steps__item">
<div class="steps__item-image">
@if(isset($step['image']) && is_string($step['image']) && strlen($step["image"]) > 4)
<img src="/storage/{{ $step['image'] }}" class="cover-image" alt="step">
@endif
</div>
<div class="steps__item-text">
<small>
{!! $step['description'] !!}
</small>
</div>
</li>
@endforeach
{{--<li class="steps__item">
<div class="steps__item-image">
<img src="img/price_step_1.jpg" class="cover-image" alt="step">
</div>
<div class="steps__item-text">
Режем куриную грудку тонкими ломтиками.
</div>
</li>
<li class="steps__item">
<div class="steps__item-image">
<img src="img/price_step_2.jpg" class="cover-image" alt="step">
</div>
<div class="steps__item-text">
<p>
На край каждого кусочка филе кладем 1 ст. л. тертого сыра и порезанную зелень.
</p>
<p>
Формируем рулетик из куриного филе с сыром и зеленью, подворачивая с боков, чтобы сыр при приготовлении не вытек. Скрепляем края половинками зубочисток.
</p>
</div>
</li> --}}
</ol>
</div>
</section>
<section class="reviews">
<div class="reviews__container container-sm">
<h2 class="reviews__title title">
Отзывы
</h2>
<div class="reviews__tabs tabs">
<div class="tablist" role="tablist" aria-labelledby="label">
<button class="tab" role="tab" type="button" id="tab-1" aria-selected="true" aria-controls="tabpanel-1">Положительные 2</button>
<button class="tab" role="tab" type="button" id="tab-2" aria-selected="false" aria-controls="tabpanel-2" tabindex="-1">Негативные 1</button>
</div>
<div class="tabpanel" role="tabpanel" id="tabpanel-1" tabindex="0" aria-labelledby="tab-1">
<div class="reviews__items">
<div class="review">
<div class="review__thumb">
<img src="img/user.png" class="cover-image" alt="user">
</div>
<div class="review__content">
<div class="review__name">
Артём
</div>
<blockquote class="review__quote">
После данного плана питания стал чувствовать себя куда лучше! Обязательно продолжу работать с Дмитрием!
</blockquote>
</div>
<div class="review__info">
<div class="review__programm">
Лёгкий
</div>
<div class="review__rate icon-star">
5.0
</div>
</div>
</div>
<div class="review">
<div class="review__thumb">
<img src="img/user.png" class="cover-image" alt="user">
</div>
<div class="review__content">
<div class="review__name">
Артём
</div>
<blockquote class="review__quote">
После данного плана питания стал чувствовать себя куда лучше! Обязательно продолжу работать с Дмитрием!
</blockquote>
</div>
<div class="review__info">
<div class="review__programm">
Лёгкий
</div>
<div class="review__rate icon-star">
5.0
</div>
</div>
</div>
</div>
</div>
<div class="tabpanel" role="tabpanel" id="tabpanel-2" tabindex="0" aria-labelledby="tab-2">
<div class="reviews__items">
<div class="review">
<div class="review__thumb">
<img src="img/user.png" class="cover-image" alt="user">
</div>
<div class="review__content">
<div class="review__name">
Артём
</div>
<blockquote class="review__quote">
Курить план – это плохо! Гласит лозунг и кричит Минздрав. Ну, конечно …Ничем не хуже водки, а водку везде продают и ничего.. ... Говорят, некоторые годами курят план и живут нормальной жизнью…Ну, если они считают это нормальной жизнью, то пусть и дальше существуют…Я не хочу…Я теперь спрашиваю себя – а зачем мне жить, что б просто курить траву?..Теперь мне плохо и траву курить, Проклятый мир! Даже год не покурил… Мне нужно что-то получше.. почище….ярче!!!
</blockquote>
</div>
<div class="review__info">
<div class="review__programm">
Лёгкий
</div>
<div class="review__rate icon-star">
5.0
</div>
</div>
</div>
</div>
</div>
</div>
<form action="" class="reviews__form">
<textarea class="textarea textarea-white" placeholder="Введите отзыв"></textarea>
<div class="reviews__form-column">
<div class="reviews__form-rate star-rating">
<input type="radio" name="rate" id="rate-5" value="5" class="star-rating__input hidden" hidden>
<label class="star-rating__label" for="rate-5"></label>
<input type="radio" name="rate" id="rate-4" value="4" class="star-rating__input hidden" hidden>
<label class="star-rating__label" for="rate-4"></label>
<input type="radio" name="rate" id="rate-3" value="3" class="star-rating__input hidden" hidden>
<label class="star-rating__label" for="rate-3"></label>
<input type="radio" name="rate" id="rate-2" value="2" class="star-rating__input hidden" hidden>
<label class="star-rating__label" for="rate-2"></label>
<input type="radio" name="rate" id="rate-1" value="1" class="star-rating__input hidden" hidden>
<label class="star-rating__label" for="rate-1"></label>
</div>
<button type="button" class="btn btn-primary">Оставить отзыв</button>
</div>
</form>
</div>
</section>
<section class="py-5" id="main">
<div class="container d-flex justify-content-between align-items-center flex-nowrap mb-4 px-4 py-3 --bg_white --shadow --radius --mw-1000 --f_bold --f_main overflow-x-xs-scroll">
<a href="{{ route('recipe.index') }}" class="d-flex w-2/5 align-items-center --f_bold">
<svg width="17" height="16" class="me-2">
<use xlink:href="#GoBack"></use>
</svg>
<span class="d-none d-md-inline --f_main">Рецепты</span>
</a>
<div class="d-flex align-items-center fs-6">
<svg width="20" height="14" class="me-2">
<use xlink:href="#Eye_Black"></use>
</svg>
<span class="me-4">{{ $recipeViewsCount }}</span>
<svg width="16" height="14" class="me-2">
<use xlink:href="#Heart_Black"></use>
</svg>
<span class="me-4">@livewire('recipe.like-count', ['recipe' => $recipe])</span>
<svg width="14" height="14" class="me-2">
<use xlink:href="#Comment_Black"></use>
</svg>
<span>{{ $recipe->comments_count }}</span>
</div>
<div class="d-none d-md-flex w-2/5 ps-3 justify-content-end align-items-center">
<span class="me-2 text-end">{{ $author['name'] }}</span>
<img src="/storage/{{ $author->profile_photo_path }}" width="42px" height="42px" class="--radius_100">
</div>
</div>
<div class="container mb-5 p-0 --mw-1000">
<div class="--bg_white --shadow --radius --no_wrap">
<div class="row m-0 p-3 position-relative">
<div class="col-12 col-md-5 mb-2 mb-md-0 ps-0 pe-0 pe-md-3">
<img src="/storage/{{ $recipe->image }}" class="w-full --radius">
</div>
<div class="col-12 col-md-7 pe-0 d-flex flex-column justify-content-between">
<div>
<div class="mb-3 fs-18 --f_bold --no_wrap_normal">{{ $recipe->title }}</div>
<div class="d-flex align-items-center fs-6 --f_bolder">
<svg width="22" height="22" class="me-2">
<use xlink:href="#TimeBlack"></use>
</svg><span class="me-4">{{ __('recipe.t' . $recipe->cooking_time . "m") }}</span>
<svg width="22" height="26" class="me-2">
<use xlink:href="#Footprints"></use>
</svg><span>{{ $recipe->steps->count() }} этапов</span>
</div>
<div class="mt-3 lh-sm --no_wrap_normal">
<small>
{!! $recipe->description !!}
</small>
</div>
</div>
<div class="mt-3 fs-14 --f_bolder">
@if (strlen(trim($recipe->video_url)) > 4)
<a href="{{ $recipe->video_url }}" class="d-inline-flex align-items-center" target="_blank">
<span class="--f_main">Посмотреть рецепт на YouTube</span>
<svg width="18" height="14" class="ms-2">
<use xlink:href="#YouTubeIcon"></use>
</svg>
</a>
@endif
</div>
</div>
<ul class="navbar-nav --abs --dotted --r w-auto mt-2 me-2 mt-md-3 me-md-3 p-0" style="--bs-scroll-height:100px;">
<li class="nav-item dropdown">
<a id="dLabel" class="nav-link py-0 dropdown-toggle-js" href="#" data-bs-toggle="dropdown" aria-expanded="false" role="button">
<svg width="18" height="4">
<use xlink:href="#Dots"></use>
</svg>
</a>
<ul class="dropdown-menu" aria-labelledby="navbarScrollingDropdown">
<li><a class="dropdown-item" href="{{ route('recipe.edit', $recipe->id) }}">Edit</a></li>
<li><a class="dropdown-item" href="#">Другое действие</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="#">Что-то еще</a></li>
</ul>
</li>
</ul>
</div>
<div class="row m-0 mt-2 p-3 bg_lightest_blue-v2">
<div class="col-12 col-md-5 fs-14">
<div class="h6 mb-2 mb-md-3 --f_bold --f_grey text-uppercase">продукты:</div>
<ul class="m-0 ps-4 list-disc">
@foreach($recipe->ingredients as $ingredient)
@php
$localizedUnit = (isset($ingredient['unit']) && mb_strlen($ingredient['unit']) > 1)
? $ingredient['unit']
: 'gr';
@endphp
@if(mb_strlen($ingredient['name']) > 1)
<li>{{ $ingredient['name'] }} - {{ $ingredient['portion'] }} {{ __('recipe.' . $localizedUnit ) }}</li>
@endif
@endforeach
</ul>
</div>
<div class="col-12 col-md-3 mt-3 mt-md-0 fs-14">
<div class="h6 mb-2 mb-md-3 --f_bold --f_grey text-uppercase">Теги:</div>
<div class="fs-6 --tags --m_large --no_wrap_normal">
@foreach($recipe->tags->unique() as $curTag)
<a href="{{ $curTag->recipe_index_url }}" class="btn badge --radius --bg-blue --f_bold --f_main">{{ $curTag->name }}</a>
@endforeach
</div>
</div>
</div>
<div class="d-flex p-4 align-items-center justify-content-between justify-content-sm-center --f_bold">
<a href="#commentsList" class="d-flex align-items-center me-4 me-sm-5 --f_main">
<small>
<svg width="21" height="20" class="me-1">
<use xlink:href="#ActionComment"></use>
</svg>
Комментировать
</small>
</a>
@livewire('recipe.like', ['recipe' => $recipe])
<a href="#" class="d-flex align-items-center --f_main">
<small>
<svg width="21" height="22" class="me-1">
<use xlink:href="#Share"></use>
</svg>
<span class="d-none d-sm-inline">Поделится</span>
</small>
</a>
</div>
</div>
</div>
<div class="container px-0 mb-5 --mw-1000">
<div class="h4 --f_grey text-uppercase">Пошаговый фото рецепт - {{ $recipe->title }}</div>
<div class="--step_boxes">
@foreach($recipe->steps as $step)
<div class="row align-items-center m-0 my-3 p-3 --bg_white --shadow --radius --step_box">
<div class="col-12 col-md-5 mb-2 mb-md-0 ps-0 pe-0 pe-md-3">
@if(isset($step['image']) && is_string($step['image']) && strlen($step["image"]) > 4)
<img src="/storage/{{ $step['image'] }}" class="w-100 --radius">
@endif
</div>
<div class="col-12 col-md-7 ps-0 ps-md-3 pe-0 d-flex flex-column justify-content-between">
<small>
{!! $step['description'] !!}
</small>
</div>
</div>
@endforeach
</div>
</div>
<div id="commentsList" class="container p-0 --mw-1000">
@livewire('recipe.comment.show', ['recipe' => $recipe])
</div>
<div class="container px-0 mb-4 --mw-1000 --bg_white --radius fs-4_5">
@livewire('recipe.comment.create', ['recipe' => $recipe, 'user' => Auth::user()])
</div>
</section>
@endsection
@push('jq_scripts')
<script src="/js/bootstrap.min.js"></script>
<script src="/js/bootstrap.bundle.min.js"></script>
@endpush