Files

478 lines
29 KiB
PHP
Raw Permalink Normal View History

2025-01-26 21:36:05 +02:00
@extends('layouts.app')
@section('content')
2025-08-07 23:01:58 +03:00
<div class="container-fluid movie-page py-4">
<div class="row">
<!-- Main Content -->
<div class="col-lg-9">
<!-- Movie Header -->
<div class="card mb-4">
2025-01-26 21:36:05 +02:00
<div class="card-body">
<div class="row">
2025-08-07 23:01:58 +03:00
<!-- Poster and Actions -->
<div class="col-md-3">
<div class="movie-poster mb-3">
<img src="http://image.tmdb.org/t/p/w342/{{ $movie->poster_path }}"
alt="{{ $movie->title }}"
class="img-fluid rounded shadow-sm"
title="{{ $movie->title }} @if($movie->release_date)({{ $movie->release_date->format('Y') }})@endif">
</div>
2025-01-26 21:36:05 +02:00
2025-08-07 23:01:58 +03:00
<!-- Watch Providers -->
@if($movie->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($movie->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($movie->externalIds && $movie->externalIds->tmdb_id)
<a href="{{ $movie->externalIds->tmdb_id }}" class="btn btn-sm btn-outline-secondary">
<img src="{{ asset('/img/tmdb.webp') }}" alt="TMDB" height="20">
</a>
@endif
@if($movie->externalIds && $movie->externalIds->imdb_id)
<a href="{{ $movie->externalIds->imdb_id }}" class="btn btn-sm btn-outline-secondary">
<img src="{{ asset('/img/imdb.png') }}" alt="IMDB" height="20">
</a>
@endif
</div>
2025-02-16 21:11:07 +02:00
</div>
2025-08-07 23:01:58 +03:00
<!-- Trailer Button -->
2025-02-16 21:11:07 +02:00
@if($movie->trailer->first())
2025-08-07 23:01:58 +03:00
<a href="https://www.youtube.com/watch?v={{ $movie->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>
2025-02-16 21:11:07 +02:00
@endif
2025-01-26 21:36:05 +02:00
</div>
2025-08-07 23:01:58 +03:00
<!-- Movie Info -->
<div class="col-md-9">
<h1 class="movie-title mb-2">
{{ $movie->title }}
@if($movie->release_date)
<span class="text-muted">({{ $movie->release_date->format('Y') }})</span>
@endif
</h1>
@if($movie->tagline)
<p class="tagline text-muted mb-3">{{ $movie->tagline }}</p>
@endif
2025-08-16 12:45:17 +03:00
@if($movie->director->count())
<div class="directors mb-3">
<span class="text-muted">Directed by</span>
@foreach($movie->director as $director)
<a href="#" class="text-decoration-none">{{ $director->name }}</a>@if(!$loop->last), @endif
@endforeach
</div>
@endif
2025-08-07 23:01:58 +03:00
<div class="overview mb-4">
<h5 class="mb-2">Overview</h5>
<p class="text-muted">{{ $movie->overview }}</p>
</div>
<!-- Tabs -->
<div class="movie-tabs">
<ul class="nav nav-tabs" id="movieTabs" role="tablist">
2025-01-26 21:36:05 +02:00
<li class="nav-item" role="presentation">
2025-08-07 23:01:58 +03:00
<button class="nav-link active" id="details-tab" data-bs-toggle="tab" data-bs-target="#details" type="button" role="tab">Details</button>
2025-01-26 21:36:05 +02:00
</li>
2025-02-16 21:11:07 +02:00
<li class="nav-item" role="presentation">
2025-08-07 23:01:58 +03:00
<button class="nav-link" id="videos-tab" data-bs-toggle="tab" data-bs-target="#videos" type="button" role="tab">Videos</button>
2025-02-16 21:11:07 +02:00
</li>
2025-01-26 21:36:05 +02:00
<li class="nav-item" role="presentation">
2025-08-07 23:01:58 +03:00
<button class="nav-link" id="cast-tab" data-bs-toggle="tab" data-bs-target="#cast" type="button" role="tab">Cast</button>
2025-01-26 21:36:05 +02:00
</li>
<li class="nav-item" role="presentation">
2025-08-07 23:01:58 +03:00
<button class="nav-link" id="crew-tab" data-bs-toggle="tab" data-bs-target="#crew" type="button" role="tab">Crew</button>
2025-01-26 21:36:05 +02:00
</li>
<li class="nav-item" role="presentation">
2025-08-07 23:01:58 +03:00
<button class="nav-link" id="releases-tab" data-bs-toggle="tab" data-bs-target="#releases" type="button" role="tab">Releases</button>
2025-01-26 21:36:05 +02:00
</li>
2025-08-11 21:40:50 +03:00
<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>
2025-01-26 21:36:05 +02:00
</ul>
2025-08-07 23:01:58 +03:00
<div class="tab-content p-3 border border-top-0 rounded-bottom" id="movieTabsContent">
<div class="tab-pane fade show active" id="details" role="tabpanel">
2025-01-26 21:36:05 +02:00
@livewire(App\Livewire\MoviePage\Tabs\Details::class, ['movie' => $movie])
</div>
2025-08-07 23:01:58 +03:00
<div class="tab-pane fade" id="videos" role="tabpanel">
2025-02-16 21:11:07 +02:00
@livewire(App\Livewire\MoviePage\Tabs\Videos::class, ['movie' => $movie])
</div>
2025-08-07 23:01:58 +03:00
<div class="tab-pane fade" id="cast" role="tabpanel">
2025-01-26 21:36:05 +02:00
@livewire(App\Livewire\MoviePage\Tabs\Cast::class, ['movie' => $movie])
</div>
2025-08-07 23:01:58 +03:00
<div class="tab-pane fade" id="crew" role="tabpanel">
2025-01-28 02:10:44 +02:00
@livewire(App\Livewire\MoviePage\Tabs\Crew::class, ['movie' => $movie])
</div>
2025-08-07 23:01:58 +03:00
<div class="tab-pane fade" id="releases" role="tabpanel">
2025-01-29 22:33:09 +02:00
@livewire(App\Livewire\MoviePage\Tabs\Releases::class, ['movie' => $movie])
</div>
2025-08-11 21:40:50 +03:00
<div class="tab-pane fade" id="images" role="tabpanel">
@livewire(App\Livewire\MoviePage\Tabs\Images::class, ['movie' => $movie])
</div>
2025-01-26 21:36:05 +02:00
</div>
2025-08-07 23:01:58 +03:00
</div>
2025-01-26 21:36:05 +02:00
</div>
</div>
</div>
</div>
2025-08-07 23:01:58 +03:00
2025-08-11 21:40:50 +03:00
<!-- Movie Collection -->
@if($movie->collections()->exists())
<div class="card mb-4">
<div class="card-header bg-white">
<h5 class="mb-0">Movie Collection</h5>
</div>
<div class="card-body">
@livewire(App\Livewire\MoviePage\Collection::class, ['movie' => $movie])
</div>
</div>
@endif
2025-08-07 23:01:58 +03:00
<!-- Similar Movies -->
2025-09-06 14:41:10 +03:00
@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>
2025-08-07 23:01:58 +03:00
</div>
2025-09-06 14:41:10 +03:00
@endif
2025-08-07 23:01:58 +03:00
<!-- Recommendations -->
2025-09-06 14:41:10 +03:00
@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>
2025-08-07 23:01:58 +03:00
</div>
2025-09-06 14:41:10 +03:00
@endif
2025-08-07 23:01:58 +03:00
<!-- Reviews Section -->
<div class="card mb-4">
<div class="card-header bg-white">
<h5 class="mb-0">Reviews</h5>
</div>
2025-02-16 21:11:07 +02:00
<div class="card-body">
@if(Auth::check())
2025-08-07 23:01:58 +03:00
<form action="{{ route('movie.comment.store', $movie->slug) }}" method="POST" class="mb-4">
2025-02-16 21:11:07 +02:00
@csrf
<div class="form-group">
2025-08-07 23:01:58 +03:00
<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 movie..."></textarea>
2025-02-16 21:11:07 +02:00
@error('content')
2025-08-07 23:01:58 +03:00
<div class="text-danger mt-1">{{ $message }}</div>
2025-02-16 21:11:07 +02:00
@enderror
</div>
2025-08-07 23:01:58 +03:00
<div class="mt-2">
<button type="submit" class="btn btn-primary">
<span class="iconify me-1" data-icon="mdi-send"></span>
Post Review
</button>
2025-02-16 21:11:07 +02:00
</div>
</form>
@else
<div class="alert alert-info">
2025-08-07 23:01:58 +03:00
<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.
2025-02-16 21:11:07 +02:00
</div>
@endif
2025-08-07 23:01:58 +03:00
<!-- 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">
@if($comment->author_name)
{{ $comment->author_name }}
@else
<a href="#" class="text-decoration-none">{{ $comment->author->name }}</a>
@endif
</h6>
<small class="text-muted">
{{ \Carbon\Carbon::createFromTimeString($comment->published_at)->diffForHumans() }}
</small>
</div>
@if($comment->tmdb_id)
<span class="badge bg-success ms-2">
<a href="https://www.themoviedb.org/review/{{ $comment->tmdb_id }}" class="text-white text-decoration-none">TMDB</a>
</span>
@endif
</div>
<div class="review-content">
{!! $comment->content !!}
</div>
</div>
</div>
@endforeach
</div>
2025-02-16 21:11:07 +02:00
</div>
2025-01-26 21:36:05 +02:00
</div>
</div>
2025-08-07 23:01:58 +03:00
<!-- Sidebar -->
2025-10-09 00:22:54 +03:00
<div class="col-lg-3 right-sidebar">
<!-- User Actions Card -->
<div class="card mb-4 action-card">
<div class="card-header">
<h5 class="mb-0"><span class="iconify" data-icon="mdi:bookmark-outline"></span> Your Actions</h5>
</div>
2025-08-07 23:01:58 +03:00
<div class="card-body">
<div class="user-actions">
2025-08-16 15:38:07 +03:00
@if(auth()->check())
2025-10-09 00:22:54 +03:00
<a href="#" class="d-flex align-items-center justify-content-between mb-3 text-decoration-none mark-as-seen-btn mark-action {{ auth()->check() ? ($movie->wasListedBy('watched', auth()->user()) ? 'seen' : '') : '' }}"
2025-08-16 15:38:07 +03:00
data-id="{{ $movie->id }}"
data-type="movie"
data-list="watched">
2025-10-09 00:22:54 +03:00
<span>
<span class="iconify me-2" data-icon="mdi:eye-check-outline" data-width="20"></span>
Mark as seen
</span>
<span class="badge rounded-pill">
<span class="iconify" data-icon="mdi:check-circle" data-width="16"></span>
</span>
2025-08-16 15:38:07 +03:00
</a>
@else
2025-10-09 00:22:54 +03:00
<a href="{{ route('login') }}?msg=login-to-mark-as-seen" class="d-flex align-items-center justify-content-between mb-3 text-decoration-none mark-as-seen-btn"
2025-08-16 15:38:07 +03:00
data-id="{{ $movie->id }}"
data-type="movie"
data-list="watched">
2025-10-09 00:22:54 +03:00
<span>
<span class="iconify me-2" data-icon="mdi:eye-check-outline" data-width="20"></span>
Mark as seen
</span>
<span class="badge rounded-pill">
<span class="iconify" data-icon="mdi:login" data-width="16"></span>
2025-09-06 14:41:10 +03:00
</span>
</a>
@endif
2025-10-09 00:22:54 +03:00
@if(auth()->check())
<a href="#" class="d-flex align-items-center justify-content-between 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>
<span class="iconify me-2" data-icon="mdi:thumb-up-outline" data-width="20"></span>
Like
</span>
<span class="badge rounded-pill">
<span class="iconify" data-icon="mdi:heart" data-width="16"></span>
</span>
</a>
@else
<a href="{{ route('login') }}?msg=login-to-like" class="d-flex align-items-center justify-content-between mb-3 text-decoration-none like-btn"
data-id="{{ $movie->id }}"
data-type="movie"
data-list="liked">
<span>
<span class="iconify me-2" data-icon="mdi:thumb-up-outline" data-width="20"></span>
Like
</span>
<span class="badge rounded-pill">
<span class="iconify" data-icon="mdi:login" data-width="16"></span>
</span>
</a>
@endif
@if(auth()->check())
<div class="dropdown mb-3">
<a href="#" class="d-flex align-items-center justify-content-between text-decoration-none add-to-list-btn dropdown-toggle" id="listDropdown" data-bs-toggle="dropdown" aria-expanded="false">
<span>
<span class="iconify me-2" data-icon="mdi:playlist-check" data-width="20"></span>
Add to list
</span>
</a>
<ul class="dropdown-menu" aria-labelledby="listDropdown">
@foreach($userLists as $list)
<li>
<a class="dropdown-item list-action" href="#"
data-list="{{ $list->slug }}"
data-id="{{ $movie->id }}"
data-type="movie">
<span class="iconify me-2" data-icon="mdi:playlist-plus"></span>
{{ $list->name }}
</a>
</li>
@endforeach
@if($userLists->isEmpty())
<li><div class="dropdown-item text-muted">No custom lists found</div></li>
@endif
<li><hr class="dropdown-divider"></li>
<li>
<a class="dropdown-item" href="{{ route('profile.list.create', Auth::user()->slug) }}">
<span class="iconify me-2" data-icon="mdi:playlist-plus"></span>
Create new list
</a>
</li>
</ul>
</div>
@endif
<div class="rating-section mt-4">
<h6 class="mb-3">Rate this movie:</h6>
@include('layouts.rating')
</div>
</div>
</div>
</div>
<!-- Movie Info Card -->
<div class="card mb-4 info-card">
<div class="card-header">
<h5 class="mb-0"><span class="iconify" data-icon="mdi:information-outline"></span> Movie Info</h5>
</div>
<div class="card-body p-0">
<ul class="list-group list-group-flush movie-info-list">
@if($movie->release_date)
<li class="list-group-item d-flex justify-content-between align-items-center">
<span class="info-label"><span class="iconify me-2" data-icon="mdi:calendar"></span> Release Date</span>
<span class="info-value">{{ $movie->release_date->format('M d, Y') }}</span>
</li>
@endif
@if($movie->runtime)
<li class="list-group-item d-flex justify-content-between align-items-center">
<span class="info-label"><span class="iconify me-2" data-icon="mdi:clock-outline"></span> Runtime</span>
<span class="info-value">{{ $movie->runtime }} min</span>
</li>
@endif
@if($movie->budget)
<li class="list-group-item d-flex justify-content-between align-items-center">
<span class="info-label"><span class="iconify me-2" data-icon="mdi:cash"></span> Budget</span>
<span class="info-value">${{ number_format($movie->budget) }}</span>
</li>
@endif
@if($movie->revenue)
<li class="list-group-item d-flex justify-content-between align-items-center">
<span class="info-label"><span class="iconify me-2" data-icon="mdi:cash-multiple"></span> Revenue</span>
<span class="info-value">${{ number_format($movie->revenue) }}</span>
</li>
@endif
@if($movie->vote_average)
<li class="list-group-item d-flex justify-content-between align-items-center">
<span class="info-label"><span class="iconify me-2" data-icon="mdi:star"></span> Rating</span>
<span class="info-value">{{ number_format($movie->vote_average, 1) }}/10</span>
</li>
@endif
@if($movie->vote_count)
<li class="list-group-item d-flex justify-content-between align-items-center">
<span class="info-label"><span class="iconify me-2" data-icon="mdi:account-group"></span> Votes</span>
<span class="info-value">{{ number_format($movie->vote_count) }}</span>
</li>
@endif
@if($movie->status)
<li class="list-group-item d-flex justify-content-between align-items-center">
<span class="info-label"><span class="iconify me-2" data-icon="mdi:information"></span> Status</span>
<span class="info-value">{{ $movie->status }}</span>
</li>
@endif
</ul>
</div>
</div>
<!-- Trending Movies Card -->
<div class="card mb-4 trending-card">
<div class="card-header">
<h5 class="mb-0"><span class="iconify" data-icon="mdi:trending-up"></span> Trending Movies</h5>
</div>
<div class="card-body p-0">
<div class="trending-movies">
@for($i = 0; $i < 5; $i++)
<div class="movie-item p-3">
<div class="d-flex">
<img src="https://picsum.photos/seed/movie{{ $i }}/100/150" class="rounded shadow-sm" alt="Movie poster">
<div class="movie-info ms-3">
<h6 class="mb-1">Popular Movie Title</h6>
<div class="rating mb-2">
<span class="iconify text-warning" data-icon="mdi:star"></span>
<span>{{ number_format(rand(70, 95) / 10, 1) }}</span>
</div>
<a href="#" class="btn btn-sm btn-outline-primary">View</a>
</div>
</div>
</div>
@endfor
</div>
</div>
</div>
<!-- Quick Links Card -->
<div class="card quick-links-card">
<div class="card-header">
<h5 class="mb-0"><span class="iconify" data-icon="mdi:link-variant"></span> Quick Links</h5>
</div>
<div class="card-body p-0">
<div class="quick-links">
<ul>
<li>
<a href="#">
<span class="iconify" data-icon="mdi:movie-open"></span>
Browse All Movies
</a>
</li>
<li>
<a href="#">
<span class="iconify" data-icon="mdi:television-classic"></span>
TV Shows
</a>
</li>
<li>
<a href="#">
<span class="iconify" data-icon="mdi:account-group"></span>
Celebrities
</a>
</li>
<li>
<a href="#">
<span class="iconify" data-icon="mdi:forum"></span>
Discussion Forums
</a>
</li>
<li>
<a href="#">
<span class="iconify" data-icon="mdi:help-circle"></span>
Help & Support
</a>
</li>
</ul>
2025-08-07 23:01:58 +03:00
</div>
2025-01-26 21:36:05 +02:00
</div>
</div>
</div>
</div>
</div>
@endsection