Files
movies/resources/views/show/show.blade.php
T
2026-03-08 16:14:11 +02:00

301 lines
19 KiB
PHP

@extends('layouts.app')
@section('content')
<div class="container-fluid movie-page py-4">
<div class="row">
<!-- Main Content -->
<div class="col-lg-9">
<!-- Show Header -->
<div class="card mb-4">
<div class="card-body">
<div class="row">
<!-- Poster and Actions -->
<div class="col-md-3">
<div class="movie-poster mb-3">
<img src="http://image.tmdb.org/t/p/w342/{{ $show->poster_path }}"
alt="{{ $show->name }}"
class="img-fluid rounded shadow-sm"
title="{{ $show->name }} @if($show->first_air_date)({{ $show->first_air_date->format('Y') }})@endif">
</div>
<!-- Watch Providers -->
@if($show->watchProviders->isNotEmpty())
<div class="watch-providers mb-3">
<h6 class="text-muted mb-2">Available on:</h6>
<div class="d-flex flex-wrap gap-2">
@foreach($show->watchProviders as $watchProvider)
<img src="http://image.tmdb.org/t/p/w45/{{ $watchProvider->logo_path }}"
alt="{{ $watchProvider->provider_name }}"
title="{{ $watchProvider->provider_name }}"
class="rounded">
@endforeach
</div>
</div>
@endif
<!-- External Links -->
<div class="external-links mb-3">
<div class="d-flex gap-2">
@if($show->externalIds && $show->externalIds->tmdb_id)
<a href="https://www.themoviedb.org/tv/{{ $show->externalIds->tmdb_id }}" class="btn btn-sm btn-outline-secondary" target="_blank">
<img src="{{ asset('/img/tmdb.webp') }}" alt="TMDB" height="20">
</a>
@endif
@if($show->externalIds && $show->externalIds->imdb_id)
<a href="https://www.imdb.com/title/{{ $show->externalIds->imdb_id }}" class="btn btn-sm btn-outline-secondary" target="_blank">
<img src="{{ asset('/img/imdb.png') }}" alt="IMDB" height="20">
</a>
@endif
@if($show->externalIds && $show->externalIds->wikidata_id)
<a href="https://www.wikidata.org/wiki/{{ $show->externalIds->wikidata_id }}" class="btn btn-sm btn-outline-secondary" target="_blank">
<img src="{{ asset('/img/wikidata.png') }}" alt="Wikidata" height="20">
</a>
@endif
@if($show->externalIds && $show->externalIds->tvdb_id)
<a href="https://thetvdb.com/dereferrer/series/{{ $show->externalIds->tvdb_id }}" class="btn btn-sm btn-outline-secondary" target="_blank">
<img src="{{ asset('/img/tvdb.png') }}" alt="TVDB" height="20">
</a>
@endif
</div>
</div>
<!-- Trailer Button -->
@if($show->trailer && $show->trailer->first())
<a href="https://www.youtube.com/watch?v={{ $show->trailer->first()->key }}"
data-toggle="lightbox"
class="btn btn-primary w-100 mb-3">
<span class="iconify me-1" data-icon="mdi-play"></span>
Watch Trailer
</a>
@endif
@if($show->homepage)
<a href="{{ $show->homepage }}" target="_blank" class="btn btn-outline-secondary w-100 mb-3">
<span class="iconify me-1" data-icon="mdi-home"></span>
Homepage
</a>
@endif
</div>
<!-- Show Info -->
<div class="col-md-9">
<h1 class="movie-title mb-2">
{{ $show->name }}
@if($show->first_air_date)
<span class="text-muted">({{ $show->first_air_date->format('Y') }})</span>
@endif
</h1>
@if($show->tagline)
<p class="tagline text-muted mb-3">{{ $show->tagline }}</p>
@endif
<div class="overview mb-4">
<h5 class="mb-2">Overview</h5>
<p class="text-muted">{{ $show->overview }}</p>
</div>
<!-- Tabs -->
<div class="movie-tabs">
<ul class="nav nav-tabs" id="showTabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="details-tab" data-bs-toggle="tab" data-bs-target="#details" type="button" role="tab">Details</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="cast-tab" data-bs-toggle="tab" data-bs-target="#cast" type="button" role="tab">Cast</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="crew-tab" data-bs-toggle="tab" data-bs-target="#crew" type="button" role="tab">Crew</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="releases-tab" data-bs-toggle="tab" data-bs-target="#releases" type="button" role="tab">Releases</button>
</li>
@if($show->backdrops)
<li class="nav-item" role="presentation">
<button class="nav-link" id="images-tab" data-bs-toggle="tab" data-bs-target="#images" type="button" role="tab">Images</button>
</li>
@endif
</ul>
<div class="tab-content p-3 border border-top-0 rounded-bottom" id="showTabsContent">
<div class="tab-pane fade show active" id="details" role="tabpanel">
@livewire(App\Livewire\ShowPage\Tabs\Details::class, ['show' => $show])
</div>
<div class="tab-pane fade" id="cast" role="tabpanel">
@livewire(App\Livewire\ShowPage\Tabs\Cast::class, ['show' => $show])
</div>
<div class="tab-pane fade" id="crew" role="tabpanel">
@livewire(App\Livewire\ShowPage\Tabs\Crew::class, ['show' => $show])
</div>
<div class="tab-pane fade" id="releases" role="tabpanel">
@livewire(App\Livewire\ShowPage\Tabs\Releases::class, ['show' => $show])
</div>
@if($show->backdrops)
<div class="tab-pane fade" id="images" role="tabpanel">
<div class="row">
@foreach($show->backdrops as $image)
<div class="col-md-3 mb-3">
<a href="http://image.tmdb.org/t/p/w1280/{{ $image->file_path }}" data-toggle="lightbox" data-gallery="{{ $show->slug }}_gallery">
<img src="http://image.tmdb.org/t/p/w342/{{ $image->file_path }}" alt="" class="img-fluid rounded shadow-sm">
</a>
</div>
@endforeach
</div>
</div>
@endif
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Seasons -->
@if(count($seasons) > 0)
<div class="card mb-4">
<div class="card-header bg-white">
<h5 class="mb-0">Seasons</h5>
</div>
<div class="card-body position-relative">
<div id="seasonsCarousel" class="carousel slide" data-bs-ride="false">
<div class="carousel-inner">
@php
$chunkedSeasons = $seasons->chunk(6);
@endphp
@foreach($chunkedSeasons as $index => $seasonChunk)
<div class="carousel-item {{ $index === 0 ? 'active' : '' }}">
<div class="row">
@foreach($seasonChunk as $season)
<div class="col-md-2 mb-3">
<a href="{{ route('show.season', ['slug' => $show->slug, 'seasonNumber' => $season->season_number]) }}" class="text-decoration-none">
<div class="card h-100 border-0 shadow-sm">
<img src="http://image.tmdb.org/t/p/w342/{{ $season->poster_path }}" alt="{{ $season->name }}" class="card-img-top">
<div class="card-body">
<h6 class="card-title">{{ $season->name }}</h6>
<p class="card-text"><small class="text-muted">{{ $season->episode_count }} episodes</small></p>
</div>
</div>
</a>
</div>
@endforeach
</div>
</div>
@endforeach
</div>
@if($chunkedSeasons->count() > 1)
<button class="carousel-control-prev" type="button" data-bs-target="#seasonsCarousel" data-bs-slide="prev" style="width: 5%; left: -2.5%;">
<span class="carousel-control-prev-icon bg-dark rounded-circle p-3" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#seasonsCarousel" data-bs-slide="next" style="width: 5%; right: -2.5%;">
<span class="carousel-control-next-icon bg-dark rounded-circle p-3" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
@endif
</div>
</div>
</div>
@endif
<!-- Similar Shows -->
<div class="card mb-4">
<div class="card-header bg-white">
<h5 class="mb-0">Similar Shows</h5>
</div>
<div class="card-body">
@livewire(App\Livewire\ShowPage\Similar::class, ['show' => $show])
</div>
</div>
<!-- Recommendations -->
<div class="card mb-4">
<div class="card-header bg-white">
<h5 class="mb-0">Recommended</h5>
</div>
<div class="card-body">
@livewire(App\Livewire\ShowPage\Recommended::class, ['show' => $show])
</div>
</div>
<!-- Reviews Section -->
<div class="card mb-4">
<div class="card-header bg-white">
<h5 class="mb-0">Reviews</h5>
</div>
<div class="card-body">
@if(Auth::check())
<form action="#" method="POST" class="mb-4">
@csrf
<div class="form-group">
<label for="content" class="form-label">Write a Review</label>
<textarea name="content" id="content" rows="3" class="form-control" placeholder="Share your thoughts about this show..."></textarea>
@error('content')
<div class="text-danger mt-1">{{ $message }}</div>
@enderror
</div>
<div class="mt-2">
<button type="submit" class="btn btn-primary">
<span class="iconify me-1" data-icon="mdi-send"></span>
Post Review
</button>
</div>
</form>
@else
<div class="alert alert-info">
<span class="iconify me-1" data-icon="mdi-information"></span>
You must be <a href="{{ route('login') }}" class="alert-link">logged in</a> to write a review.
</div>
@endif
<!-- Reviews List -->
<div class="reviews-list mt-4">
@foreach($comments as $comment)
<div class="review-item card mb-3">
<div class="card-body">
<div class="d-flex align-items-center mb-2">
@if($comment->author_avatar)
<img src="http://image.tmdb.org/t/p/w45/{{ $comment->author_avatar }}"
alt="{{ $comment->author_name }}"
class="rounded-circle me-2"
width="40"
height="40">
@else
<div class="rounded-circle bg-secondary me-2" style="width: 40px; height: 40px;"></div>
@endif
<div>
<h6 class="mb-0">{{ $comment->author_name }}</h6>
<small class="text-muted">
{{ $comment->published_at }}
</small>
</div>
@if($comment->author_rating)
<span class="badge bg-warning ms-2">
{{ $comment->author_rating }}
</span>
@endif
</div>
<div class="review-content">
{!! $comment->content !!}
</div>
</div>
</div>
@endforeach
</div>
</div>
</div>
</div>
<!-- Sidebar -->
<div class="col-lg-3">
<div class="card">
<div class="card-body">
<div class="user-actions">
@include('layouts.user_actions')
</div>
</div>
</div>
</div>
</div>
</div>
@endsection