diff --git a/app/Http/Controllers/Video/Game.php b/app/Http/Controllers/Video/Game.php index 4086473..bb1377d 100644 --- a/app/Http/Controllers/Video/Game.php +++ b/app/Http/Controllers/Video/Game.php @@ -2,20 +2,110 @@ namespace App\Http\Controllers\Video; use Illuminate\Support\Facades\DB; +use Illuminate\Http\Request; // use Illuminate\Support\Facades\Log; class Game { private $menu; private $user; + private $suc; + private $err; public function __construct ($m, $u) { $this->menu = $m; $this->user = $u; + $this->suc = ''; + $this->err = ''; } public function index () { $res = DB::table('vid_game')->get(); if (!$res) return notfound($this->menu, $this->user, $res); - return view('pages.site.video.game', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user]); + + return view('pages.site.video.game', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $this->err, 'suc' => $this->suc]); + } + + public function add (Request $r) { + if ($this->user && $this->user->perm['blg_addpost']) { + $err = ''; + $res = ''; + $frm = array('name' => '', 'slug' => ''); + + if (isset($r->submit)) { + // フォームの値を保存して + $frm['platform_id'] = 0; + $frm['name'] = $r->name; + $frm['slug'] = $r->slug; + + // 件名、文章又はスラッグがなければ、エラーを出て + $verify = array('ゲーム名' => $r->name, 'スラッグ' => $r->slug); + $incomplete = array(); + foreach ($verify as $k => $v) { if (is_null($v) || empty($v) || !isset($v)) $incomplete[] = $k; } + if (count($incomplete) > 0) $err = implode('、', $incomplete).'をご入力下さい。'; + + // スラッグが既に存在したら、エラーを出て + $sl = DB::table('vid_game')->select('slug')->where('slug', $r->slug)->first(); + if ($sl && $sl->slug == $r->slug) $err = 'このスラッグがもう存在しています。'; + + // エラーがあったら、フォームに戻って。なければ、データベースに保存したり、ページ又はポストへ移転して + if (!empty($err)) return view('pages.site.video.game.add', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm]); + else { + // できたの? + if ($res = DB::table('vid_game')->insert($frm)) return redirect('/video/'.$r->slug); + else { + // やれやれ… + return view('pages.site.video.game.add', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm]); + } + } + } + + return view('pages.site.video.game.add', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm]); + } + + return redirect(''); + } + + public function delete (Request $r) { + if ($this->user->perm['blg_delpost']) { + return DB::table('vid_game')->where('slug', $r->slug)->delete(); + } + + return '許可がありません。'; + } + + public function edit (Request $r) { + if ($this->user && $this->user->perm['blg_addpost']) { + $frm = DB::table('vid_game')->where('slug', $r->slug)->first(); + $err = ''; + $res = ''; + + if (isset($r->submit)) { + // フォームの値を保存して + $frm->name = $r->name; + $frm->slug = $r->slug; + + // 件名、文章又はスラッグがなければ、エラーを出て + $verify = array('ゲーム名' => $r->name, 'スラッグ' => $r->slug); + $incomplete = array(); + foreach ($verify as $k => $v) { if (is_null($v) || empty($v) || !isset($v)) $incomplete[] = $k; } + if (count($incomplete) > 0) $err = implode('、', $incomplete).'をご入力下さい。'; + + // エラーがあったら、フォームに戻って。なければ、データベースに保存したり、ページ又はポストへ移転して + if (!empty($err)) return view('pages.site.video.game.edit', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm]); + else { + // できたの? + if ($res = DB::table('vid_game')->where('slug', $r->slug)->update((array)$frm)) return redirect('/video/'.$r->slug); + else { + // やれやれ… + $err = '編集失敗…'; + return view('pages.site.video.game.edit', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm]); + } + } + } + + return view('pages.site.video.game.edit', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm]); + } + + return redirect(''); } } diff --git a/app/Http/Controllers/VideoController.php b/app/Http/Controllers/VideoController.php index 362bb45..7b38fde 100644 --- a/app/Http/Controllers/VideoController.php +++ b/app/Http/Controllers/VideoController.php @@ -1,6 +1,7 @@ menu, $this->cook, $this->user); return $r->index($vid); } + + public function addGame (Request $rr) { + $r = new Game($this->menu, $this->user); + return $r->add($rr); + } + + public function delGame (Request $rr) { + $r = new Game($this->menu, $this->user); + return $r->delete($rr); + } + + public function editGame (Request $rr) { + $r = new Game($this->menu, $this->user); + return $r->edit($rr); + } + + public function addVideo (Request $rr) { + $r = new VideoTable($this->menu, $this->user); + return $r->add($rr); + } + + public function delVideo (Request $rr) { + $r = new VideoTable($this->menu, $this->user); + return $r->delete($rr); + } + + public function editVideo (Request $rr) { + $r = new VideoTable($this->menu, $this->user); + return $r->edit($rr); + } } diff --git a/resources/js/components/deletegame.vue b/resources/js/components/deletegame.vue index 9f0e5e5..13add00 100644 --- a/resources/js/components/deletegame.vue +++ b/resources/js/components/deletegame.vue @@ -1,6 +1,6 @@