some progress

This commit is contained in:
2025-01-29 22:33:09 +02:00
parent 8de53f3ec2
commit 86eef55170
11 changed files with 157 additions and 10 deletions
@@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class CelebrityController extends Controller
{
//
}
@@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ContactController extends Controller
{
//
}
+13 -1
View File
@@ -2,6 +2,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\Comment;
use App\Models\Movie; use App\Models\Movie;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@@ -20,6 +21,17 @@ class MovieController extends Controller
->where('slug', $slug) ->where('slug', $slug)
->firstOrFail(); ->firstOrFail();
return view('movie.show', compact('movie')); // comments
$comments = Comment::where(function($query) use ($movie){
$query->where(function($query) use ($movie){
$query->where('entity_id', $movie->id)
->where('entity_type', Comment::TYPE_MOVIE);
})
->orWhere('tmdb_id', $movie->tmdb_id);
})
->paginate(15);
return view('movie.show', compact('movie', 'comments'));
} }
} }
@@ -0,0 +1,25 @@
<?php
namespace App\Livewire\MoviePage;
use App\Models\Movie;
use App\Models\MovieRecommendation;
use Livewire\Component;
class Recommendations extends Component
{
public $movie;
public $recommendations;
public function render()
{
return view('livewire.movie-page.recommendations');
}
public function mount()
{
$movie = Movie::find($this->movie->id);
$this->recommendations = Movie::whereIn('id', MovieRecommendation::where('movie_id', $this->movie->id)->pluck('recommended_movie_id'))->get();
}
}
+13
View File
@@ -0,0 +1,13 @@
<?php
namespace App\Livewire\MoviePage;
use Livewire\Component;
class Similar extends Component
{
public function render()
{
return view('livewire.movie-page.similar');
}
}
+12
View File
@@ -2,12 +2,24 @@
namespace App\Livewire\MoviePage\Tabs; namespace App\Livewire\MoviePage\Tabs;
use App\Models\Movie;
use App\Models\ReleaseDate;
use Livewire\Component; use Livewire\Component;
class Releases extends Component class Releases extends Component
{ {
public $movie;
public $releases;
public function render() public function render()
{ {
return view('livewire.movie-page.tabs.releases'); return view('livewire.movie-page.tabs.releases');
} }
public function mount()
{
$this->movie = Movie::with('releaseDates')->where('id', $this->movie->id)->first();
$this->releases = $this->movie->releaseDates;
}
} }
@@ -0,0 +1,16 @@
<div>
<div class="row">
@foreach($recommendations as $recommendation)
<div class="col-md-1">
<a href="{{ route('movie.show', $recommendation->slug) }}">
<img
src="http://image.tmdb.org/t/p/w185/{{ $recommendation->poster_path }}"
alt="{{ $recommendation->title }}"
title="{{ $recommendation->title }} ({{ $recommendation->release_date->format('Y') }})"
class="img img-fluid"
>
</a>
</div>
@endforeach
</div>
</div>
@@ -0,0 +1,3 @@
<div>
{{-- If you look to others for fulfillment, you will never truly be fulfilled. --}}
</div>
@@ -4,7 +4,9 @@
Studio Studio
</div> </div>
<div class="content"> <div class="content">
@foreach($productionCompanies as $productionCompany)
<a href="">{{ $productionCompany->name }}</a>
@endforeach
</div> </div>
</div> </div>
@@ -14,7 +16,7 @@
</div> </div>
<div class="content"> <div class="content">
@foreach($productionCountries as $productionCountry) @foreach($productionCountries as $productionCountry)
{{ $productionCountry->name }} <a href="">{{ $productionCountry->name }}</a>
@endforeach @endforeach
</div> </div>
</div> </div>
@@ -24,7 +26,7 @@
Language Language
</div> </div>
<div class="content"> <div class="content">
{{ $movie->original_language }} <a href="">{{ $movie->original_language }}</a>
</div> </div>
</div> </div>
@@ -1,3 +1,22 @@
<div> <div>
{{-- Success is as dangerous as failure. --}} <table class="table table-responsive table-stripped">
<thead>
<tr>
<th>#</th>
<th>Certification</th>
</tr>
</thead>
<tbody>
@foreach($releases as $release)
<tr>
<td>
{{ $release->iso_3166 }}
</td>
<td>
{{ $release->certification }}
</td>
</tr>
@endforeach
</tbody>
</table>
</div> </div>
+30 -5
View File
@@ -47,10 +47,10 @@
<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> <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>
<li class="nav-item" role="presentation"> <li class="nav-item" role="presentation">
<button class="nav-link" id="contact-tab" data-bs-toggle="tab" data-bs-target="#contact-tab-pane" type="button" role="tab" aria-controls="contact-tab-pane" aria-selected="false">Crew</button> <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>
<li class="nav-item" role="presentation"> <li class="nav-item" role="presentation">
<button class="nav-link" id="contact-tab" data-bs-toggle="tab" data-bs-target="#contact-tab-pane" type="button" role="tab" aria-controls="contact-tab-pane" aria-selected="false">Releases</button> <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> </li>
</ul> </ul>
<div class="tab-content" id="myTabContent"> <div class="tab-content" id="myTabContent">
@@ -60,10 +60,12 @@
<div class="tab-pane fade" id="cast-tab-pane" role="tabpanel" aria-labelledby="cast-tab" tabindex="0"> <div class="tab-pane fade" id="cast-tab-pane" role="tabpanel" aria-labelledby="cast-tab" tabindex="0">
@livewire(App\Livewire\MoviePage\Tabs\Cast::class, ['movie' => $movie]) @livewire(App\Livewire\MoviePage\Tabs\Cast::class, ['movie' => $movie])
</div> </div>
<div class="tab-pane fade" id="contact-tab-pane" role="tabpanel" aria-labelledby="contact-tab" tabindex="0"> <div class="tab-pane fade" id="crew-tab-pane" role="tabpanel" aria-labelledby="crew-tab" tabindex="0">
@livewire(App\Livewire\MoviePage\Tabs\Crew::class, ['movie' => $movie]) @livewire(App\Livewire\MoviePage\Tabs\Crew::class, ['movie' => $movie])
</div> </div>
<div class="tab-pane fade" id="disabled-tab-pane" role="tabpanel" aria-labelledby="disabled-tab" tabindex="0">...</div> <div class="tab-pane fade" id="releases-tab-pane" role="tabpanel" aria-labelledby="releases-tab" tabindex="0">
@livewire(App\Livewire\MoviePage\Tabs\Releases::class, ['movie' => $movie])
</div>
</div> </div>
</span> </span>
</div> </div>
@@ -76,12 +78,35 @@
</div> </div>
<div class="card"> <div class="card">
<div class="card-header">Recommended</div> <div class="card-header">Recommended</div>
<div class="card-body"></div> <div class="card-body">
@livewire(App\Livewire\MoviePage\Recommendations::class, ['movie' => $movie])
</div>
</div> </div>
<div class="card"> <div class="card">
<div class="card-header">Write review</div> <div class="card-header">Write review</div>
<div class="card-body"></div> <div class="card-body"></div>
</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 !!}
</div>
</div>
@endforeach
</div> </div>
<div class="col-md-2"> <div class="col-md-2">
<div class="card"> <div class="card">