some progress

This commit is contained in:
2025-09-06 14:41:10 +03:00
parent d709de39dc
commit 7e0e330ef6
20 changed files with 1051 additions and 485 deletions
@@ -56,12 +56,15 @@ class FetchExportCommand extends Command
private function downloadFile($url, $path): void
{
echo "Downloading file at ".$url."\n";
$newFileName = $path;
$file = fopen ($url, 'rb');
$newFile = null;
if ($file) {
echo "Starting download ".$url."\n";
$newFile = fopen ($newFileName, 'wb');
if ($newFile) {
echo "in progress ".$url."\n";
while(!feof($file)) {
fwrite($newFile, fread($file, 1024 * 8), 1024 * 8);
}
@@ -22,7 +22,7 @@ class FetchExportItemsCommand extends Command
*
* @var string
*/
protected $description = 'Fetch TMDB items from export file. Types: movie/show';
protected $description = 'Fetch TMDB items from export file. Types: movie/tv_series';
/**
* Execute the console command.
@@ -42,7 +42,7 @@ class FetchExportItemsCommand extends Command
$path = storage_path('/'.$type."*");
$file = glob($path);
return reset($file);
return end($file);
}
private function processItems($gzOpenedFile, string $type)
+20
View File
@@ -28,7 +28,27 @@ class ShowController extends Controller
public function season(string $slug, int $seasonNumber)
{
$show = Show::with('posters', 'backdrops', 'externalIds', 'networks', 'genres', 'productionCompanies')->where('slug', $slug)->first();
if (!$show) {
abort(404);
}
$seasons = Season::where('show_id', $show->id)->orderBy('season_number', 'ASC')->get();
$currentSeason = Season::where('show_id', $show->id)->where('season_number', $seasonNumber)->first();
if (!$currentSeason) {
abort(404);
}
$episodes = \App\Models\Episode::where('show_id', $show->id)
->where('season_id', $currentSeason->id)
->orderBy('episode_number', 'ASC')
->get();
$comments = [];
return view('show.season', compact('show', 'seasons', 'currentSeason', 'episodes', 'comments'));
}
public function episode(string $slug, int $seasonNumber, int $episodeNumber)
+1 -1
View File
@@ -18,6 +18,6 @@ class Recommendations extends Component
public function mount()
{
$this->recommendations = Movie::whereIn('id', MovieRecommendation::where('movie_id', $this->movie->id)->pluck('recommended_movie_id'))->get();
$this->recommendations = $this->movie->recommendations;
}
}
+1 -4
View File
@@ -18,9 +18,6 @@ class Similar extends Component
public function mount()
{
$this->similarMovies = Movie::whereIn(
'id',
MovieSimilar::where('movie_id', $this->movie->id)->pluck('similar_movie_id')
)->get();
$this->similarMovies = $this->movie->similar;
}
}
+10
View File
@@ -131,4 +131,14 @@ class Movie extends Model
{
return $this->belongsToMany(ProductionCountry::class, 'movie_production_countries', 'movie_id', 'production_country_id');
}
public function similar()
{
return $this->belongsToMany(Movie::class, 'movie_similars', 'movie_id', 'similar_movie_id');
}
public function recommendations()
{
return $this->belongsToMany(Movie::class, 'movie_recommendations', 'movie_id', 'recommended_movie_id');
}
}
+35 -34
View File
@@ -1,51 +1,52 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid celebrity-page">
<div class="row justify-content-center">
<div class="col-md-10">
<div class="card">
<div class="card-header">
Celebrities
<div class="container-fluid celebrity-page py-4">
<div class="row">
<!-- Main Content -->
<div class="col-lg-9">
<div class="card mb-4">
<div class="card-header bg-white">
<h5 class="mb-0">Celebrities</h5>
</div>
<div class="card-body">
<div class="row">
@foreach($celebrities as $celebrity)
<div class="col-md-2">
<div class="celebrity-card">
<a href="{{ route('celebrity.show', $celebrity->slug) }}">
<img src="http://image.tmdb.org/t/p/w185/{{ $celebrity->profile_path }}" alt="">
</a>
<span>
<a href="{{ route('celebrity.show', $celebrity->slug) }}">
{{ $celebrity->name }}
</a>
</span>
</div>
<div class="col-md-2 mb-3">
<a href="{{ route('celebrity.show', $celebrity->slug) }}" class="text-decoration-none">
<div class="celebrity-card">
@if($celebrity->profile_path)
<img
src="http://image.tmdb.org/t/p/w185/{{ $celebrity->profile_path }}"
alt="{{ $celebrity->name }}"
class="img-fluid rounded shadow-sm"
>
@else
<div class="no-profile rounded shadow-sm d-flex align-items-center justify-content-center p-2" style="height: 150px; background-color: #f8f9fa;">
<span class="text-muted">No Image</span>
</div>
@endif
<div class="celebrity-name text-center mt-2">
<small>{{ $celebrity->name }}</small>
</div>
</div>
</a>
</div>
@endforeach
</div>
<div class="mt-4">
{{ $celebrities->links() }}
</div>
</div>
</div>
{{ $celebrities->links() }}
</div>
<div class="col-md-2">
<!-- Sidebar -->
<div class="col-lg-3">
<div class="card">
<div class="user-actions">
<ul>
<li>
<a href=""><span class="iconify" data-icon="mdi-eye-check-outline"></span> Mark as seen</a>
</li>
<li>
<a href=""><span class="iconify" data-icon="mdi-thumb-up-outline"></span> Like</a>
</li>
<li>
<a href=""><span class="iconify" data-icon="mdi-playlist-check"></span> add to list</a>
</li>
</ul>
<hr>
rate
<hr>
<div class="card-body">
sidebar
</div>
</div>
</div>
+150 -89
View File
@@ -1,122 +1,183 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid celebrity-page">
<div class="row justify-content-center">
<div class="col-md-10">
<div class="card">
<div class="card-header">
<h1 class="celebrity-title">{{ $celebrity->name }}</h1>
</div>
<div class="container-fluid celebrity-page py-4">
<div class="row">
<!-- Main Content -->
<div class="col-lg-9">
<!-- Celebrity Header -->
<div class="card mb-4">
<div class="card-body">
<div class="row">
<div class="col-md-2">
<img src="http://image.tmdb.org/t/p/w185/{{ $celebrity->profile_path }}" alt="">
<a href="https://www.themoviedb.org/person/{{ $celebrity->tmdb_id }}" target="_blank">TMDB</a>
<!-- Profile and Actions -->
<div class="col-md-3">
<div class="celebrity-poster mb-3">
@if($celebrity->profile_path)
<img src="http://image.tmdb.org/t/p/w342/{{ $celebrity->profile_path }}"
alt="{{ $celebrity->name }}"
class="img-fluid rounded shadow-sm">
@else
<div class="no-profile rounded shadow-sm d-flex align-items-center justify-content-center p-2" style="height: 300px; background-color: #f8f9fa;">
<span class="text-muted">No Image</span>
</div>
@endif
</div>
<!-- External Links -->
<div class="external-links mb-3">
<div class="d-flex gap-2">
<a href="https://www.themoviedb.org/person/{{ $celebrity->tmdb_id }}" class="btn btn-sm btn-outline-secondary" target="_blank">
<img src="{{ asset('/img/tmdb.webp') }}" alt="TMDB" height="20">
</a>
@if($celebrity->imdb_id)
<a href="https://www.imdb.com/name/{{ $celebrity->imdb_id }}" class="btn btn-sm btn-outline-secondary" target="_blank">
<img src="{{ asset('/img/imdb.png') }}" alt="IMDB" height="20">
</a>
@endif
</div>
</div>
@if($celebrity->homepage)
| <a href="{{ $celebrity->homepage }}" target="_blank">TMDB</a>
@endif
@if($celebrity->imdb_id)
| <a href="https://www.imdb.com/name/{{ $celebrity->imdb_id }}" target="_blank">IMDB</a>
<a href="{{ $celebrity->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>
<div class="col-md-10">
@if($celebrity->birtday)
<strong>Birthday</strong> {{ $celebrity->birtday }} @if($celebrity->palce_of_birth) ({{ $celebrity->palce_of_birth }}) @endif
@endif
@if($celebrity->deathday)
<strong>Deathday</strong> {{ $celebrity->deathday }}
@endif
<p>
{{ $celebrity->biography }}
</p>
<!-- Celebrity Info -->
<div class="col-md-9">
<h1 class="celebrity-title mb-2">{{ $celebrity->name }}</h1>
<div class="personal-info mb-3">
@if($celebrity->birtday)
<p class="mb-1">
<strong class="text-muted">Birthday:</strong> {{ $celebrity->birtday }}
@if($celebrity->palce_of_birth) ({{ $celebrity->palce_of_birth }}) @endif
</p>
@endif
@if($celebrity->deathday)
<p class="mb-1">
<strong class="text-muted">Deathday:</strong> {{ $celebrity->deathday }}
</p>
@endif
</div>
<div class="biography mb-4">
<h5 class="mb-2">Biography</h5>
<p class="text-muted">{{ $celebrity->biography }}</p>
</div>
@if($celebrity->also_known_as)
<p>
<strong>Also known as:</strong>
@foreach(json_decode($celebrity->also_known_as ?? "{}", true) as $alsoKnown)
{{ $alsoKnown }}
@if(!$loop->last), @endif
@endforeach
</p>
<div class="also-known mb-4">
<h5 class="mb-2">Also Known As</h5>
<p class="text-muted">
@foreach(json_decode($celebrity->also_known_as ?? "{}", true) as $alsoKnown)
{{ $alsoKnown }}@if(!$loop->last), @endif
@endforeach
</p>
</div>
@endif
<ul class="nav nav-tabs" id="myTab" role="tablist">
<!-- Tabs -->
<div class="celebrity-tabs">
<ul class="nav nav-tabs" id="celebrityTabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="movies-tab" data-bs-toggle="tab" data-bs-target="#movies-tab-pane" type="button" role="tab" aria-controls="movies-tab-pane" aria-selected="true">Movies</button>
<button class="nav-link active" id="movies-tab" data-bs-toggle="tab" data-bs-target="#movies" type="button" role="tab">Movies</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="shows-tab" data-bs-toggle="tab" data-bs-target="#shows-tab-pane" type="button" role="tab" aria-controls="shows-tab-pane" aria-selected="false">Shows</button>
<button class="nav-link" id="shows-tab" data-bs-toggle="tab" data-bs-target="#shows" type="button" role="tab">Shows</button>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="movies-tab-pane" role="tabpanel" aria-labelledby="movies-tab" tabindex="0">
<div class="row">
@foreach($moviesByDepartments as $department => $movies)
<div class="celebrity-department">
<h3>{{ $department }}</h3>
</div>
<div class="tab-content p-3 border border-top-0 rounded-bottom" id="celebrityTabsContent">
<div class="tab-pane fade show active" id="movies" role="tabpanel">
@foreach($moviesByDepartments as $department => $movies)
<h5 class="mt-3 mb-3">{{ $department }}</h5>
<div class="row">
@foreach($movies as $movie)
<div class="col-md-2">
<div class="celebrity-movie-small">
<a href="{{ route('movie.show', $movie->slug) }}">
<img
src="http://image.tmdb.org/t/p/w185/{{ $movie->poster_path }}"
alt="{{ $movie->title }}"
title="{{ $movie->title }}"
class="img img-fluid"
>
</a>
</div>
<div class="col-md-2 mb-3">
<a href="{{ route('movie.show', $movie->slug) }}" class="text-decoration-none">
@if($movie->poster_path)
<div class="movie-poster">
<img
src="http://image.tmdb.org/t/p/w185/{{ $movie->poster_path }}"
alt="{{ $movie->title }}"
title="{{ $movie->title }}"
class="img-fluid rounded shadow-sm"
>
<div class="movie-title text-center mt-2">
<small>{{ $movie->title }}</small>
</div>
</div>
@else
<div class="no-poster rounded shadow-sm d-flex align-items-center justify-content-center p-2" style="height: 150px; background-color: #f8f9fa;">
<small class="text-center">{{ $movie->title }}</small>
</div>
@endif
</a>
</div>
@endforeach
@endforeach
</div>
</div>
@endforeach
</div>
<div class="tab-pane fade" id="shows-tab-pane" role="tabpanel" aria-labelledby="shows-tab" tabindex="0">
<div class="row">
@foreach($showsByDepartment as $department => $shows)
<div class="celebrity-department">
<h3>{{ $department }}</h3>
</div>
<div class="tab-pane fade" id="shows" role="tabpanel">
@foreach($showsByDepartment as $department => $shows)
<h5 class="mt-3 mb-3">{{ $department }}</h5>
<div class="row">
@foreach($shows as $show)
<div class="col-md-2">
<div class="celebrity-movie-small">
<a href="{{ route('show.show', $show->slug) }}">
<img
src="http://image.tmdb.org/t/p/w185/{{ $show->poster_path }}"
alt="{{ $show->name }}"
title="{{ $show->name }}"
class="img img-fluid"
>
</a>
</div>
<div class="col-md-2 mb-3">
<a href="{{ route('show.show', $show->slug) }}" class="text-decoration-none">
@if($show->poster_path)
<div class="movie-poster">
<img
src="http://image.tmdb.org/t/p/w185/{{ $show->poster_path }}"
alt="{{ $show->name }}"
title="{{ $show->name }}"
class="img-fluid rounded shadow-sm"
>
<div class="movie-title text-center mt-2">
<small>{{ $show->name }}</small>
</div>
</div>
@else
<div class="no-poster rounded shadow-sm d-flex align-items-center justify-content-center p-2" style="height: 150px; background-color: #f8f9fa;">
<small class="text-center">{{ $show->name }}</small>
</div>
@endif
</a>
</div>
@endforeach
@endforeach
</div>
</div>
@endforeach
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-2">
<!-- Sidebar -->
<div class="col-lg-3">
<div class="card">
<div class="user-actions">
<ul>
<li>
<a href=""><span class="iconify" data-icon="mdi-eye-check-outline"></span> Mark as seen</a>
</li>
<li>
<a href=""><span class="iconify" data-icon="mdi-thumb-up-outline"></span> Like</a>
</li>
<li>
<a href=""><span class="iconify" data-icon="mdi-playlist-check"></span> add to list</a>
</li>
</ul>
<hr>
rate
<hr>
<div class="card-body">
<div class="user-actions">
<a href="#" class="d-block mb-3 text-decoration-none">
<span class="iconify me-1" data-icon="mdi-eye-check-outline"></span> Mark as seen
</a>
<a href="#" class="d-block mb-3 text-decoration-none">
<span class="iconify me-1" data-icon="mdi-thumb-up-outline"></span> Like
</a>
<a href="#" class="d-block mb-3 text-decoration-none">
<span class="iconify me-1" data-icon="mdi-playlist-check"></span> Add to list
<span class="float-end">
<span class="iconify" data-icon="mdi-chevron-down"></span>
</span>
</a>
<hr>
@include('layouts.rating')
</div>
</div>
</div>
</div>
+61 -52
View File
@@ -1,68 +1,77 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid celebrity-page">
<div class="row justify-content-center">
<div class="col-md-10 forums">
<div class="container-fluid forum-page py-4">
<div class="row">
<!-- Main Content -->
<div class="col-lg-9 forums">
@foreach($categories as $category)
<div class="card category">
<div class="card-header">
<h1 class="title">
<div class="row">
@if($category->icon)
<div class="col-md-1">
<div class="text-center">
<img src="{{ asset($category->icon) }}" alt="" width="36">
</div>
<div class="card mb-4">
<div class="card-header bg-white">
<div class="row align-items-center">
@if($category->icon)
<div class="col-md-1">
<div class="text-center">
<img src="{{ asset($category->icon) }}" alt="{{ $category->name }}" width="36">
</div>
<div class="col-md-10">
{{ $category->name }} <br>
<small>{{ $category->description }}</small>
</div>
@else
<div class="col-md-12">
{{ $category->name }} <br>
<small>{{ $category->description }}</small>
</div>
@endif
</div>
</h1>
</div>
<div class="col-md-11">
<h5 class="mb-0">{{ $category->name }}</h5>
<small class="text-muted">{{ $category->description }}</small>
</div>
@else
<div class="col-md-12">
<h5 class="mb-0">{{ $category->name }}</h5>
<small class="text-muted">{{ $category->description }}</small>
</div>
@endif
</div>
</div>
<div class="card-body">
@foreach($category->threads as $thread)
<div class="row">
<div class="col-md-1">
i
<div class="list-group">
@foreach($category->threads as $thread)
<div class="list-group-item list-group-item-action">
<div class="row align-items-center">
<div class="col-md-1 text-center">
<span class="iconify" data-icon="mdi-forum-outline" data-width="24"></span>
</div>
<div class="col-md-8">
<a href="{{ route('forums.thread.index', [$category->slug, $thread->slug]) }}" class="text-decoration-none">
<h6 class="mb-0">{{ $thread->name }}</h6>
</a>
</div>
<div class="col-md-3 text-end">
<small class="text-muted">Last post</small>
</div>
</div>
</div>
<div class="col-md-8">
<a href="{{ route('forums.thread.index', [$category->slug, $thread->slug]) }}">{{ $thread->name }}</a>
</div>
<div class="col-md-3">
last
</div>
</div>
@endforeach
@endforeach
</div>
</div>
</div>
@endforeach
</div>
<div class="col-md-2">
<!-- Sidebar -->
<div class="col-lg-3">
<div class="card">
<div class="user-actions">
<ul>
<li>
<a href=""><span class="iconify" data-icon="mdi-eye-check-outline"></span> Mark as seen</a>
</li>
<li>
<a href=""><span class="iconify" data-icon="mdi-thumb-up-outline"></span> Like</a>
</li>
<li>
<a href=""><span class="iconify" data-icon="mdi-playlist-check"></span> add to list</a>
</li>
</ul>
<hr>
rate
<hr>
<div class="card-body">
<div class="user-actions">
<a href="#" class="d-block mb-3 text-decoration-none">
<span class="iconify me-1" data-icon="mdi-eye-check-outline"></span> Mark as seen
</a>
<a href="#" class="d-block mb-3 text-decoration-none">
<span class="iconify me-1" data-icon="mdi-thumb-up-outline"></span> Like
</a>
<a href="#" class="d-block mb-3 text-decoration-none">
<span class="iconify me-1" data-icon="mdi-playlist-check"></span> Add to list
<span class="float-end">
<span class="iconify" data-icon="mdi-chevron-down"></span>
</span>
</a>
<hr>
@include('layouts.rating')
</div>
</div>
</div>
</div>
+13 -11
View File
@@ -1,22 +1,24 @@
<div class="user-actions">
@if(isset($movie))
<a href="" class="mark-as-seen-btn {{ auth()->check() ? ($movie->wasListedBy('watched', auth()->user()) ? 'seen' : '') : '' }}" data-id="{{ $movie->id }}" data-type="movie" data-list="watched">
<span class="iconify" data-icon="mdi-eye-check-outline"></span> Mark as seen
<a href="#" class="d-block mb-3 text-decoration-none mark-as-seen-btn mark-action {{ auth()->check() ? ($movie->wasListedBy('watched', auth()->user()) ? 'seen' : '') : '' }}" data-id="{{ $movie->id }}" data-type="movie" data-list="watched">
<span class="iconify me-1" data-icon="mdi-eye-check-outline"></span> Mark as seen
</a>
<a href="" class="like-btn {{ auth()->check() ? ($movie->wasListedBy('liked', auth()->user()) ? 'liked' : '') : '' }}" data-id="{{ $movie->id }}" data-type="movie" data-list="liked">
<span class="iconify" data-icon="mdi-thumb-up-outline"></span> Like
<a href="#" class="d-block mb-3 text-decoration-none like-btn like-action {{ auth()->check() ? ($movie->wasListedBy('liked', auth()->user()) ? 'liked' : '') : '' }}" data-id="{{ $movie->id }}" data-type="movie" data-list="liked">
<span class="iconify me-1" data-icon="mdi-thumb-up-outline"></span> Like
</a>
@else
<a href="" class="mark-as-seen-btn {{ auth()->check() ? ($show->wasListedBy('watched', auth()->user()) ? 'seen' : '') : '' }}" data-id="{{ $show->id }}" data-type="movie" data-list="watched">
<span class="iconify" data-icon="mdi-eye-check-outline"></span> Mark as seen
<a href="#" class="d-block mb-3 text-decoration-none mark-as-seen-btn mark-action {{ auth()->check() ? ($show->wasListedBy('watched', auth()->user()) ? 'seen' : '') : '' }}" data-id="{{ $show->id }}" data-type="show" data-list="watched">
<span class="iconify me-1" data-icon="mdi-eye-check-outline"></span> Mark as seen
</a>
<a href="" class="like-btn {{ auth()->check() ? ($show->wasListedBy('liked', auth()->user()) ? 'liked' : '') : '' }}" data-id="{{ $show->id }}" data-type="movie" data-list="liked">
<span class="iconify" data-icon="mdi-thumb-up-outline"></span> Like
<a href="#" class="d-block mb-3 text-decoration-none like-btn like-action {{ auth()->check() ? ($show->wasListedBy('liked', auth()->user()) ? 'liked' : '') : '' }}" data-id="{{ $show->id }}" data-type="show" data-list="liked">
<span class="iconify me-1" data-icon="mdi-thumb-up-outline"></span> Like
</a>
@endif
<a href="" class="add-to-list-btn">
<span class="iconify" data-icon="mdi-playlist-check"></span> add to list
<span class="arrow float-end">&darr;</span>
<a href="#" class="d-block mb-3 text-decoration-none add-to-list-btn">
<span class="iconify me-1" data-icon="mdi-playlist-check"></span> Add to list
<span class="float-end">
<span class="iconify" data-icon="mdi-chevron-down"></span>
</span>
</a>
<hr>
@include('layouts.rating')
@@ -1,11 +1,15 @@
<div>
<div class="row">
@foreach($videos as $video)
<div class="col-mc-2">
<a href="https://www.youtube.com/watch?v={{ $video->key }}" data-toggle="lightbox">
<img src="https://i3.ytimg.com/vi/{{ $video->key }}/mqdefault.jpg" alt="">
</a>
</div>
@endforeach
@if($videos->count())
@foreach($videos as $video)
<div class="col-mc-2">
<a href="https://www.youtube.com/watch?v={{ $video->key }}" data-toggle="lightbox">
<img src="https://i3.ytimg.com/vi/{{ $video->key }}/mqdefault.jpg" alt="">
</a>
</div>
@endforeach
@else
<em>This movies does not have videos attached to it at the moment!</em>
@endif
</div>
</div>
@@ -1,31 +1,28 @@
<div>
<div class="row recommended-show-slider">
@foreach($recommendedShows as $recommendedShows)
<div class="col-md-2">
<div class="movie-card">
<a href="{{ route('show.show', $recommendedShows->slug) }}" title="{{ $recommendedShows->name }}">
<img
src="http://image.tmdb.org/t/p/w154/{{ $recommendedShows->poster_path }}"
alt="{{ $recommendedShows->title }}"
title="{{ $recommendedShows->title }} ({{ $recommendedShows->first_air_date->format('Y') }})"
class="img img-fluid"
>
</a>
<ul>
<li>
{{-- <span class="iconify" data-icon="mdi-check-bold"></span>--}}
<a href=""><span class="iconify" data-icon="mdi-check-outline"></span></a>
</li>
<li>
<a href=""><span class="iconify" data-icon="mdi-image-multiple"></span></a>
</li>
<li>
<a href="">
{{ $recommendedShows->vote_average }} <span class="iconify" data-icon="mdi-star"></span>
</a>
</li>
</ul>
</div>
<div class="row">
@foreach($recommendedShows as $recommendedShow)
<div class="col-md-2 mb-3">
<a href="{{ route('show.show', $recommendedShow->slug) }}" class="text-decoration-none">
@if($recommendedShow->poster_path)
<div class="movie-poster">
<img
src="http://image.tmdb.org/t/p/w185/{{ $recommendedShow->poster_path }}"
alt="{{ $recommendedShow->name }}"
title="{{ $recommendedShow->name }} @if($recommendedShow->first_air_date) ({{ $recommendedShow->first_air_date->format('Y') }}) @endif"
class="img-fluid rounded shadow-sm"
>
<div class="movie-title text-center mt-2">
<small>{{ $recommendedShow->name }}</small>
</div>
</div>
@else
<div class="no-poster rounded shadow-sm d-flex align-items-center justify-content-center p-2" style="height: 150px; background-color: #f8f9fa;">
<small class="text-center">
{{ $recommendedShow->name }} @if($recommendedShow->first_air_date) ({{ $recommendedShow->first_air_date->format('Y') }}) @endif
</small>
</div>
@endif
</a>
</div>
@endforeach
</div>
@@ -1,31 +1,28 @@
<div>
<div class="row owl-carousel owl-theme similar-show-slider">
<div class="row">
@foreach($similarShows as $similarShow)
<div >
<div class="movie-card">
<a href="{{ route('show.show', $similarShow->slug) }}" title="{{ $similarShow->name }}">
<img
src="http://image.tmdb.org/t/p/w154/{{ $similarShow->poster_path }}"
alt="{{ $similarShow->title }}"
title="{{ $similarShow->title }} ({{ $similarShow->first_air_date->format('Y') }})"
class="img img-fluid"
>
</a>
<ul class="list-inline">
<li>
{{-- <span class="iconify" data-icon="mdi-check-bold"></span>--}}
<a href=""><span class="iconify" data-icon="mdi-check-outline"></span></a>
</li>
<li>
<a href=""><span class="iconify" data-icon="mdi-image-multiple"></span></a>
</li>
<li>
<a href="">
{{ $similarShow->vote_average }} <span class="iconify" data-icon="mdi-star"></span>
</a>
</li>
</ul>
</div>
<div class="col-md-2 mb-3">
<a href="{{ route('show.show', $similarShow->slug) }}" class="text-decoration-none">
@if($similarShow->poster_path)
<div class="movie-poster">
<img
src="http://image.tmdb.org/t/p/w185/{{ $similarShow->poster_path }}"
alt="{{ $similarShow->name }}"
title="{{ $similarShow->name }} @if($similarShow->first_air_date) ({{ $similarShow->first_air_date->format('Y') }}) @endif"
class="img-fluid rounded shadow-sm"
>
<div class="movie-title text-center mt-2">
<small>{{ $similarShow->name }}</small>
</div>
</div>
@else
<div class="no-poster rounded shadow-sm d-flex align-items-center justify-content-center p-2" style="height: 150px; background-color: #f8f9fa;">
<small class="text-center">
{{ $similarShow->name }} @if($similarShow->first_air_date) ({{ $similarShow->first_air_date->format('Y') }}) @endif
</small>
</div>
@endif
</a>
</div>
@endforeach
</div>
+29 -23
View File
@@ -148,24 +148,28 @@
@endif
<!-- Similar Movies -->
<div class="card mb-4">
<div class="card-header bg-white">
<h5 class="mb-0">Similar Movies</h5>
@if($movie->similar->count())
<div class="card mb-4">
<div class="card-header bg-white">
<h5 class="mb-0">Similar Movies</h5>
</div>
<div class="card-body">
@livewire(App\Livewire\MoviePage\Similar::class, ['movie' => $movie])
</div>
</div>
<div class="card-body">
@livewire(App\Livewire\MoviePage\Similar::class, ['movie' => $movie])
</div>
</div>
@endif
<!-- Recommendations -->
<div class="card mb-4">
<div class="card-header bg-white">
<h5 class="mb-0">Recommended</h5>
@if($movie->recommendations->count())
<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\MoviePage\Recommendations::class, ['movie' => $movie])
</div>
</div>
<div class="card-body">
@livewire(App\Livewire\MoviePage\Recommendations::class, ['movie' => $movie])
</div>
</div>
@endif
<!-- Reviews Section -->
<div class="card mb-4">
@@ -255,7 +259,7 @@
Mark as seen
</a>
@else
<a href="{{ route('login') }}?msg=login-to-watch" class="d-block mb-3 text-decoration-none mark-as-seen-btn"
<a href="{{ route('login') }}?msg=login-to-mark-as-seen" class="d-block mb-3 text-decoration-none mark-as-seen-btn"
data-id="{{ $movie->id }}"
data-type="movie"
data-list="watched">
@@ -272,7 +276,7 @@
Like
</a>
@else
<a href="#" class="d-block mb-3 text-decoration-none like-btn"
<a href="{{ route('login') }}?msg=login-to-like" class="d-block mb-3 text-decoration-none like-btn"
data-id="{{ $movie->id }}"
data-type="movie"
data-list="liked">
@@ -280,13 +284,15 @@
Like
</a>
@endif
<a href="#" class="d-block mb-3 text-decoration-none add-to-list-btn">
<span class="iconify me-1" data-icon="mdi-playlist-check"></span>
Add to list
<span class="float-end">
<span class="iconify" data-icon="mdi-chevron-down"></span>
</span>
</a>
@if(auth()->check())
<a href="#" class="d-block mb-3 text-decoration-none add-to-list-btn">
<span class="iconify me-1" data-icon="mdi-playlist-check"></span>
Add to list
<span class="float-end">
<span class="iconify" data-icon="mdi-chevron-down"></span>
</span>
</a>
@endif
<hr>
@include('layouts.rating')
</div>
+53 -47
View File
@@ -1,64 +1,70 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid celebrity-page">
<div class="row justify-content-center">
<div class="col-md-10">
<div class="card">
<div class="card-header">
Shows
<div class="container-fluid show-page py-4">
<div class="row">
<!-- Main Content -->
<div class="col-lg-9">
<div class="card mb-4">
<div class="card-header bg-white">
<h5 class="mb-0">Shows</h5>
</div>
<div class="card-body">
<div class="row">
@foreach($shows as $show)
<div class="col-md-2">
<div class="movie-card">
<a href="{{ route('show.show', $show->slug) }}" title="{{ $show->name }}">
<img
src="http://image.tmdb.org/t/p/w185/{{ $show->poster_path }}"
alt="{{ $show->name }}"
title="{{ $show->name }} @if($show->release_date) ({{ $show->release_date->format('Y') }}) @endif"
class="img img-fluid"
>
</a>
<ul class="quick-actions">
<li>
<a href=""><span class="iconify" data-icon="mdi-check-outline"></span></a>
</li>
<li>
<a href=""><span class="iconify" data-icon="mdi-image-multiple"></span></a>
</li>
<li>
<a href="">
{{ $show->vote_average }} <span class="iconify" data-icon="mdi-star"></span>
</a>
</li>
</ul>
</div>
<div class="col-md-2 mb-3">
<a href="{{ route('show.show', $show->slug) }}" class="text-decoration-none">
@if($show->poster_path)
<div class="movie-poster">
<img
src="http://image.tmdb.org/t/p/w185/{{ $show->poster_path }}"
alt="{{ $show->name }}"
title="{{ $show->name }} @if($show->first_air_date) ({{ $show->first_air_date->format('Y') }}) @endif"
class="img-fluid rounded shadow-sm"
>
<div class="movie-title text-center mt-2">
<small>{{ $show->name }}</small>
</div>
</div>
@else
<div class="no-poster rounded shadow-sm d-flex align-items-center justify-content-center p-2" style="height: 150px; background-color: #f8f9fa;">
<small class="text-center">
{{ $show->name }} @if($show->first_air_date) ({{ $show->first_air_date->format('Y') }}) @endif
</small>
</div>
@endif
</a>
</div>
@endforeach
</div>
<div class="mt-4">
{{ $shows->links() }}
</div>
</div>
</div>
{{ $shows->links() }}
</div>
<div class="col-md-2">
<!-- Sidebar -->
<div class="col-lg-3">
<div class="card">
<div class="user-actions">
<ul>
<li>
<a href=""><span class="iconify" data-icon="mdi-eye-check-outline"></span> Mark as seen</a>
</li>
<li>
<a href=""><span class="iconify" data-icon="mdi-thumb-up-outline"></span> Like</a>
</li>
<li>
<a href=""><span class="iconify" data-icon="mdi-playlist-check"></span> add to list</a>
</li>
</ul>
<hr>
rate
<hr>
<div class="card-body">
<div class="user-actions">
<a href="#" class="d-block mb-3 text-decoration-none">
<span class="iconify me-1" data-icon="mdi-eye-check-outline"></span> Mark as seen
</a>
<a href="#" class="d-block mb-3 text-decoration-none">
<span class="iconify me-1" data-icon="mdi-thumb-up-outline"></span> Like
</a>
<a href="#" class="d-block mb-3 text-decoration-none">
<span class="iconify me-1" data-icon="mdi-playlist-check"></span> Add to list
<span class="float-end">
<span class="iconify" data-icon="mdi-chevron-down"></span>
</span>
</a>
<hr>
@include('layouts.rating')
</div>
</div>
</div>
</div>
+366
View File
@@ -0,0 +1,366 @@
@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>
<!-- Current Season -->
<div class="card mb-4">
<div class="card-header bg-white">
<h5 class="mb-0">{{ $currentSeason->name }}</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-3">
<img src="http://image.tmdb.org/t/p/w342/{{ $currentSeason->poster_path }}"
alt="{{ $currentSeason->name }}"
class="img-fluid rounded shadow-sm mb-3">
</div>
<div class="col-md-9">
@if($currentSeason->overview)
<div class="mb-3">
<h6>Overview</h6>
<p class="text-muted">{{ $currentSeason->overview }}</p>
</div>
@endif
<div class="d-flex justify-content-between mb-3">
<div>
<span class="text-muted">Air Date:</span>
@if($currentSeason->air_date)
{{ \Carbon\Carbon::parse($currentSeason->air_date)->format('M d, Y') }}
@else
Unknown
@endif
</div>
<div>
<span class="text-muted">Episodes:</span> {{ $currentSeason->episode_count }}
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Episodes -->
<div class="card mb-4">
<div class="card-header bg-white">
<h5 class="mb-0">Episodes</h5>
</div>
<div class="card-body">
@if(count($episodes) > 0)
<div class="list-group">
@foreach($episodes as $episode)
<div class="list-group-item list-group-item-action">
<div class="row">
<div class="col-md-2">
@if($episode->still_path)
<img src="http://image.tmdb.org/t/p/w185/{{ $episode->still_path }}"
alt="Episode {{ $episode->episode_number }}"
class="img-fluid rounded shadow-sm">
@else
<div class="bg-light rounded d-flex align-items-center justify-content-center" style="height: 100px;">
<span class="text-muted">No Image</span>
</div>
@endif
</div>
<div class="col-md-10">
<div class="d-flex justify-content-between">
<h5 class="mb-1">{{ $episode->episode_number }}. {{ $episode->name }}</h5>
@if($episode->vote_average > 0)
<span class="badge bg-warning">{{ $episode->vote_average }}</span>
@endif
</div>
@if($episode->air_date)
<p class="text-muted mb-2">
<small>{{ \Carbon\Carbon::parse($episode->air_date)->format('M d, Y') }}</small>
@if($episode->runtime)
<span class="mx-1">•</span> {{ $episode->runtime }} min
@endif
</p>
@endif
<p class="mb-1">{{ $episode->overview }}</p>
</div>
</div>
</div>
@endforeach
</div>
@else
<div class="alert alert-info">
No episodes available for this season.
</div>
@endif
</div>
</div>
<!-- Seasons -->
@if(count($seasons) > 0)
<div class="card mb-4">
<div class="card-header bg-white">
<h5 class="mb-0">All Seasons</h5>
</div>
<div class="card-body">
<div class="row">
@foreach($seasons 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 {{ $season->season_number == $currentSeason->season_number ? 'border border-primary' : '' }}">
<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>
</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
+247 -160
View File
@@ -1,189 +1,276 @@
@extends('layouts.app')
@section('content')
<div class="container-fluid movie-page">
<div class="row justify-content-center">
<div class="col-md-10">
<div class="card">
<div class="card-header">
<h1 class="movie-title">{{ $show->name }}</h1> (<a href="">{{ $show->first_air_date->format('Y') }}</a>)
<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">
<div class="row">
<div class="col-md-2">
<a href="http://image.tmdb.org/t/p/w780/{{ $show->poster_path }}" data-toggle="lightbox">
<img
src="http://image.tmdb.org/t/p/w185/{{ $show->poster_path }}"
alt="{{ $show->name }}"
title="{{ $show->name }} ({{ $show->first_air_date->format('Y') }})"
class="img img-fluid"
>
</a>
<div class="watch-provider">
@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 }}">
@endforeach
</div>
view trailer
<div class="external-ids">
@if($show->externalIds && $show->externalIds->tmdb_id)
<a href="https://www.themoviedb.org/tv/{{ $show->externalIds->tmdb_id }}" target="_blank">
<img src="{{ asset('/img/tmdb.webp') }}" alt="" width="45">
</a>
@endif
@if($show->externalIds && $show->externalIds->imdb_id)
<a href="https://www.imdb.com/title/{{ $show->externalIds->imdb_id }}" target="_blank">
<img src="{{ asset('/img/imdb.png') }}" alt="" width="45">
</a>
@endif
@if($show->externalIds && $show->externalIds->wikidata_id)
<a href="https://www.wikidata.org/wiki/{{ $show->externalIds->wikidata_id }}" target="_blank">
<img src="{{ asset('/img/wikidata.png') }}" alt="" width="45">
</a>
@endif
@if($show->externalIds && $show->externalIds->tvdb_id)
<a href="https://thetvdb.com/dereferrer/series/{{ $show->externalIds->tvdb_id }}" target="_blank">
<img src="{{ asset('/img/tvdb.png') }}" alt="" width="45">
</a>
@endif
</div>
@if($show->homepage)
<div>
<a href="{{ $show->homepage }}" target="_blank">Homepage</a>
</div>
@endif
</div>
<div class="col-md-10">
<span>
Directed by
</span>
<span>
<div class="tagline">{{ $show->tagline }}</div>
<div class="overview">{{ $show->overview }}</div>
</span>
<span>
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="details-tab" data-bs-toggle="tab" data-bs-target="#details-tab-pane" type="button" role="tab" aria-controls="details-tab-pane" aria-selected="true">Details</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="cast-tab" data-bs-toggle="tab" data-bs-target="#cast-tab-pane" type="button" role="tab" aria-controls="cast-tab-pane" aria-selected="false">Cast</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="crew-tab" data-bs-toggle="tab" data-bs-target="#crew-tab-pane" type="button" role="tab" aria-controls="crew-tab-pane" aria-selected="false">Crew</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="releases-tab" data-bs-toggle="tab" data-bs-target="#releases-tab-pane" type="button" role="tab" aria-controls="releases-tab-pane" aria-selected="false">Releases</button>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="details-tab-pane" role="tabpanel" aria-labelledby="details-tab" tabindex="0">
@livewire(App\Livewire\ShowPage\Tabs\Details::class, ['show' => $show])
</div>
<div class="tab-pane fade" id="cast-tab-pane" role="tabpanel" aria-labelledby="cast-tab" tabindex="0">
@livewire(App\Livewire\ShowPage\Tabs\Cast::class, ['show' => $show])
</div>
<div class="tab-pane fade" id="crew-tab-pane" role="tabpanel" aria-labelledby="crew-tab" tabindex="0">
@livewire(App\Livewire\ShowPage\Tabs\Crew::class, ['show' => $show])
</div>
<div class="tab-pane fade" id="releases-tab-pane" role="tabpanel" aria-labelledby="releases-tab" tabindex="0">
@livewire(App\Livewire\ShowPage\Tabs\Releases::class, ['show' => $show])
</div>
</div>
</span>
</div>
</div>
@if($show->images)
<div class="row">
<div class="col-md-12">
<div class="owl-carousel owl-theme show-slider">
@foreach($show->backdrops as $image)
<div class="item">
<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/w154/{{ $image->file_path }}" alt="">
</a>
</div>
@endforeach
</div>
</div>
</div>
@endif
</div>
</div>
<div class="card">
<div class="card-header">
Seasons
<div class="float-end">
<div class="slider-controls">
</div>
</div>
</div>
<div class="card-body similar-show">
<div class="row">
@foreach($seasons as $season)
<div class="col-md-2">
<a href="">
<img src="http://image.tmdb.org/t/p/w1280/{{ $season->poster_path }}" alt="" class="img img-fluid">
{{ $season->name }} <br>
<small>{{ $season->episode_count }} episodes</small>
<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>
</div>
<div class="card">
<div class="card-header">
Similar
<div class="float-end">
<div class="slider-controls">
@endif
</div>
</div>
<!-- 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 similar-show">
<div class="card-body">
@livewire(App\Livewire\ShowPage\Similar::class, ['show' => $show])
</div>
</div>
<div class="card">
<div class="card-header">Recommended</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>
<div class="card">
<div class="card-header">Write review</div>
<div class="card-body"></div>
</div>
@foreach($comments as $comment)
<div class="card">
<div class="card-header">
@if($comment->author_avatar)
<img src="http://image.tmdb.org/t/p/w45/{{ $comment->author_avatar }}" alt="" width="25">
@endif
{{ $comment->author_name }}
<span class="rating">
{{ $comment->author_rating }}
</span>
<span class="text-muted float-end">
<small>
{{ $comment->published_at }}
</small>
</span>
</div>
<div class="card-body">
{!! $comment->content !!}
<!-- 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>
@endforeach
</div>
</div>
<div class="col-md-2">
<!-- Sidebar -->
<div class="col-lg-3">
<div class="card">
@include('layouts.user_actions')
<div class="card-body">
<div class="user-actions">
@include('layouts.user_actions')
</div>
</div>
</div>
</div>
</div>
+2 -2
View File
@@ -20,8 +20,8 @@ Route::prefix('movies')->group(function () {
Route::prefix('shows')->group(function () {
Route::get('/', [\App\Http\Controllers\ShowController::class, 'index'])->name('show.index');
Route::get('/{slug}', [\App\Http\Controllers\ShowController::class, 'show'])->name('show.show');
// Route::get('/{slug}/season/{seasonNumber}', [\App\Http\Controllers\ShowController::class, 'show'])->name('show.show');
// Route::get('/{slug}/season/{seasonNumber}/episode/{episodeNumber}', [\App\Http\Controllers\ShowController::class, 'show'])->name('show.show');
Route::get('/{slug}/season/{seasonNumber}', [\App\Http\Controllers\ShowController::class, 'season'])->name('show.season');
// Route::get('/{slug}/season/{seasonNumber}/episode/{episodeNumber}', [\App\Http\Controllers\ShowController::class, 'episode'])->name('show.show.episode');
});
Route::prefix('celebrities')->group(function () {
Binary file not shown.
Binary file not shown.