diff --git a/app/Http/Controllers/Admin/AdminGameController.php b/app/Http/Controllers/Admin/AdminGameController.php index 193b1af33..2c87bb470 100644 --- a/app/Http/Controllers/Admin/AdminGameController.php +++ b/app/Http/Controllers/Admin/AdminGameController.php @@ -11,34 +11,33 @@ use Illuminate\Support\Carbon; class AdminGameController extends BasePageController { /** - * @throws \Exception + * Display a listing of games */ - public function index(): void + public function index(Request $request) { - $this->setAdminPrefs(); $game = new Games(['Settings' => null]); $meta_title = $title = 'Game List'; - $gamelist = $game->getRange(); + // Get search parameter + $search = $request->input('gamesearch', ''); - $this->smarty->assign('gamelist', $gamelist); + if (!empty($search)) { + $gamelist = $game->getRange($search); + $lastSearch = $search; + } else { + $gamelist = $game->getRange(); + $lastSearch = ''; + } - $content = $this->smarty->fetch('game-list.tpl'); - - $this->smarty->assign(compact('title', 'meta_title', 'content')); - - $this->adminrender(); + return view('admin.game-list', compact('title', 'meta_title', 'gamelist', 'lastSearch')); } /** - * @return \Illuminate\Http\RedirectResponse|void - * - * @throws \Exception + * Show the form for editing a game */ public function edit(Request $request) { - $this->setAdminPrefs(); $games = new Games(['Settings' => null]); $gen = new Genres(['Settings' => null]); $meta_title = $title = 'Game Edit'; @@ -51,40 +50,48 @@ class AdminGameController extends BasePageController $game = $games->getGamesInfoById($id); if (! $game) { - $this->show404(); + abort(404, 'Game not found'); } switch ($action) { case 'submit': $coverLoc = storage_path('covers/games/').$id.'.jpg'; - if ($_FILES['cover']['size'] > 0) { - $tmpName = $_FILES['cover']['tmp_name']; - $file_info = getimagesize($tmpName); + if ($request->hasFile('cover') && $request->file('cover')->isValid()) { + $file = $request->file('cover'); + $file_info = getimagesize($file->getPathname()); if (! empty($file_info)) { - move_uploaded_file($_FILES['cover']['tmp_name'], $coverLoc); + $file->move(storage_path('covers/games/'), $id.'.jpg'); } } - $request->merge(['cover' => file_exists($coverLoc) ? 1 : 0]); - $request->merge(['releasedate' => (empty($request->input('releasedate')) || ! strtotime($request->input('releasedate'))) ? $game['releasedate'] : Carbon::parse($request->input('releasedate'))->timestamp]); + $cover = file_exists($coverLoc) ? 1 : 0; + $releasedate = (empty($request->input('releasedate')) || ! strtotime($request->input('releasedate'))) + ? $game['releasedate'] + : Carbon::parse($request->input('releasedate'))->timestamp; - $games->update($id, $request->input('title'), $request->input('asin'), $request->input('url'), $request->input('publisher'), $request->input('releasedate'), $request->input('esrb'), $request->input('cover'), $request->input('trailerurl'), $request->input('genre')); + $games->update( + $id, + $request->input('title'), + $request->input('asin'), + $request->input('url'), + $request->input('publisher'), + $releasedate, + $request->input('esrb'), + $cover, + $request->input('trailerurl'), + $request->input('genre') + ); - return redirect()->to('admin/game-list'); - - break; + return redirect()->route('admin.game-list')->with('success', 'Game updated successfully'); case 'view': default: - $this->smarty->assign('game', $game); - $this->smarty->assign('genres', $gen->getGenres(Genres::GAME_TYPE)); - break; + $genres = $gen->getGenres(Genres::GAME_TYPE); + return view('admin.game-edit', compact('title', 'meta_title', 'game', 'genres')); } } - $content = $this->smarty->fetch('game-edit.tpl'); - $this->smarty->assign(compact('title', 'meta_title', 'content')); - $this->adminrender(); + abort(404, 'Game ID required'); } } diff --git a/resources/views/admin/game-edit.blade.php b/resources/views/admin/game-edit.blade.php new file mode 100644 index 000000000..0edb360cf --- /dev/null +++ b/resources/views/admin/game-edit.blade.php @@ -0,0 +1,215 @@ +@extends('layouts.admin') + +@section('content') +
+
+ +
+

+ {{ $title }} +

+
+ + + @if(session('success')) +
+

+ {{ session('success') }} +

+
+ @endif + + @if(session('error')) +
+

+ {{ session('error') }} +

+
+ @endif + + @if(session('warning')) +
+

+ {{ session('warning') }} +

+
+ @endif + + +
+ @csrf + + + +
+ +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+
+ + +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + @if(!empty($game['cover']) && $game['cover'] == 1) +
+ Game Cover +
+ @endif + +

+ Upload a new cover image (JPG format) +

+
+ + +
+ + @if(!empty($game['cover']) && $game['cover'] == 1) + + Cover Available + + @else + + No Cover + + @endif +
+
+
+ + +
+ + + Back to Game List + +
+
+
+
+@endsection + diff --git a/resources/views/admin/game-list.blade.php b/resources/views/admin/game-list.blade.php new file mode 100644 index 000000000..e689c2365 --- /dev/null +++ b/resources/views/admin/game-list.blade.php @@ -0,0 +1,145 @@ +@extends('layouts.admin') + +@section('content') +
+
+ +
+
+

+ {{ $title }} +

+
+
+ + + @if(session('success')) +
+

+ {{ session('success') }} +

+
+ @endif + + @if(session('error')) +
+

+ {{ session('error') }} +

+
+ @endif + + @if(session('warning')) +
+

+ {{ session('warning') }} +

+
+ @endif + + +
+
+
+
+
+ +
+ +
+ + @if(!empty($lastSearch)) + + Clear + + @endif +
+
+
+ + + @if(!empty($gamelist) && count($gamelist) > 0) +
+ + + + + + + + + + + + + + + @foreach($gamelist as $game) + + + + + + + + + + + @endforeach + +
IDTitlePublisherGenreESRBRelease DateCoverActions
+ {{ $game['id'] ?? 'N/A' }} + +
+ {{ $game['title'] ?? 'N/A' }} +
+
+ {{ $game['publisher'] ?? 'N/A' }} + + {{ $game['genre'] ?? 'N/A' }} + + {{ $game['esrb'] ?? 'N/A' }} + + @if(!empty($game['releasedate'])) + {{ date('Y-m-d', $game['releasedate']) }} + @else + N/A + @endif + + @if(!empty($game['cover']) && $game['cover'] == 1) + + Yes + + @else + + No + + @endif + + + Edit + +
+
+ @else +
+ +

+ @if(!empty($lastSearch)) + No games found matching "{{ $lastSearch }}". + @else + No games found in the database. + @endif +

+
+ @endif +
+
+@endsection + diff --git a/resources/views/partials/admin-menu.blade.php b/resources/views/partials/admin-menu.blade.php index 8b0170693..2040f6f2d 100644 --- a/resources/views/partials/admin-menu.blade.php +++ b/resources/views/partials/admin-menu.blade.php @@ -67,6 +67,20 @@ + +
+ + +
+