media list processing fix and all public lists page
This commit is contained in:
@@ -14,6 +14,17 @@ use Illuminate\Support\Str;
|
|||||||
|
|
||||||
class MediaListController extends Controller
|
class MediaListController extends Controller
|
||||||
{
|
{
|
||||||
|
public function publicLists()
|
||||||
|
{
|
||||||
|
$lists = MediaList::with('user')
|
||||||
|
->whereNotIn('name', MediaList::SPECIAL_LISTS)
|
||||||
|
->where('public', true)
|
||||||
|
->orderBy('created_at', 'desc')
|
||||||
|
->paginate(20);
|
||||||
|
|
||||||
|
return view('lists.public', compact('lists'));
|
||||||
|
}
|
||||||
|
|
||||||
public function index(string $slug)
|
public function index(string $slug)
|
||||||
{
|
{
|
||||||
$lists = MediaList::whereNotIn('name', MediaList::SPECIAL_LISTS)
|
$lists = MediaList::whereNotIn('name', MediaList::SPECIAL_LISTS)
|
||||||
@@ -50,6 +61,7 @@ class MediaListController extends Controller
|
|||||||
'name' => $request->get('name'),
|
'name' => $request->get('name'),
|
||||||
'slug' => $slug,
|
'slug' => $slug,
|
||||||
'user_id' => Auth::user()->id,
|
'user_id' => Auth::user()->id,
|
||||||
|
'public' => $request->has('public') ? true : false,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return redirect()->route('profile.list.show', [Auth::user()->slug, $slug]);
|
return redirect()->route('profile.list.show', [Auth::user()->slug, $slug]);
|
||||||
|
|||||||
@@ -30,5 +30,11 @@ class MediaList extends Model
|
|||||||
'slug',
|
'slug',
|
||||||
'poster_path',
|
'poster_path',
|
||||||
'user_id',
|
'user_id',
|
||||||
|
'public',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public function user()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(User::class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -515,6 +515,7 @@ class MovieProcessingService implements ProcessingInterface
|
|||||||
unset($tmdbList['id']);
|
unset($tmdbList['id']);
|
||||||
|
|
||||||
if (!$list) {
|
if (!$list) {
|
||||||
|
$tmdbList['slug'] = Str::slug($tmdbList['name']);
|
||||||
$list = MediaList::create($tmdbList);
|
$list = MediaList::create($tmdbList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,12 @@
|
|||||||
Forums
|
Forums
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a href="{{ route('lists.public') }}" class="nav-link d-flex align-items-center">
|
||||||
|
<span class="iconify me-1" data-icon="mdi-playlist-play"></span>
|
||||||
|
Lists
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<button id="themeSwitcher" class="nav-link d-flex align-items-center theme-switcher">
|
<button id="themeSwitcher" class="nav-link d-flex align-items-center theme-switcher">
|
||||||
<span class="iconify me-1" data-icon="mdi-weather-sunny"></span>
|
<span class="iconify me-1" data-icon="mdi-weather-sunny"></span>
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
@extends('layouts.app')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="container">
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-md-10">
|
||||||
|
<div class="card mb-4">
|
||||||
|
<div class="card-header">
|
||||||
|
<h4 class="mb-0">Public Lists</h4>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
@if($lists->count())
|
||||||
|
@foreach($lists as $list)
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-2">
|
||||||
|
@if($list->poster_path)
|
||||||
|
<img src="http://image.tmdb.org/t/p/w185{{ $list->poster_path }}" alt="{{ $list->name }}" class="img-fluid rounded">
|
||||||
|
@else
|
||||||
|
<div class="bg-secondary text-white d-flex align-items-center justify-content-center rounded" style="height: 150px;">
|
||||||
|
<span class="iconify" data-icon="mdi-playlist-play" data-width="48"></span>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<div class="col-md-10">
|
||||||
|
<h5>
|
||||||
|
<a href="{{ route('profile.list.show', [$list->user->slug, $list->slug]) }}">
|
||||||
|
{{ $list->name }}
|
||||||
|
</a>
|
||||||
|
</h5>
|
||||||
|
<p class="text-muted mb-2">
|
||||||
|
by <a href="{{ route('profile.show', $list->user->slug) }}">{{ $list->user->name }}</a>
|
||||||
|
• {{ $list->item_count }} items
|
||||||
|
• Created {{ $list->created_at->diffForHumans() }}
|
||||||
|
</p>
|
||||||
|
@if($list->description)
|
||||||
|
<p class="mb-0">{{ $list->description }}</p>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
<div class="d-flex justify-content-center">
|
||||||
|
{{ $lists->links() }}
|
||||||
|
</div>
|
||||||
|
@else
|
||||||
|
<div class="alert alert-info">
|
||||||
|
<p class="mb-0">No public lists have been created yet.</p>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
<textarea name="description" id="" cols="30" rows="10" class="form-control"></textarea>
|
<textarea name="description" id="" cols="30" rows="10" class="form-control"></textarea>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for=""><input type="checkbox" checked> Public</label>
|
<label for=""><input type="checkbox" name="public" checked> Public</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="float-end">
|
<div class="float-end">
|
||||||
<input type="submit" class="btn btn-primary" value="Save!">
|
<input type="submit" class="btn btn-primary" value="Save!">
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ Route::prefix('forums')->group(function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Route::prefix('lists')->group(function () {
|
Route::prefix('lists')->group(function () {
|
||||||
|
Route::get('/', [\App\Http\Controllers\MediaListController::class, 'publicLists'])->name('lists.public');
|
||||||
Route::get('/{listSlug}/{itemId}/{itemType}', [\App\Http\Controllers\MediaListController::class, 'toggleListItem'])->name('list.toggle');
|
Route::get('/{listSlug}/{itemId}/{itemType}', [\App\Http\Controllers\MediaListController::class, 'toggleListItem'])->name('list.toggle');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user