ゲームの追加・編集・削除機能性
このコミットが含まれているのは:
コミット
1a3fd47640
|
@ -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('');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
use Illuminate\Http\Request;
|
||||
// use Illuminate\Support\Facades\Log;
|
||||
|
||||
use App\Http\Controllers\AuthController;
|
||||
|
@ -39,4 +40,34 @@ class VideoController extends Controller {
|
|||
$r = new Prayer($this->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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div class="col">
|
||||
<button @click="show = true" class="btn btn-block btn-danger">ゲームの削除</button>
|
||||
<button @click="show = true" class="btn btn-block btn-danger">削除</button>
|
||||
<span v-if="show">
|
||||
<vue-draggable-resizable style="border: 0px solid #232629;" :drag-handle="'.drag-handle'" class-name-handle="resize-handle" class="disco" :x="-500" :y="10" :z="99999999">
|
||||
<div style="width: 100%; position: relative;">
|
||||
|
@ -42,7 +42,7 @@
|
|||
},
|
||||
watch: { text (x) { localStorage.shotanote = x; } },
|
||||
methods: {
|
||||
del () { axios.post('/api/game/del', { slug: this.slug }).then(() => { window.location.href = '/'; }); },
|
||||
del () { axios.post('/api/game/del', { slug: this.slug }).then(() => { window.location.href = '/video'; }); },
|
||||
onResize: function (x, y, width, height) {
|
||||
this.x = x
|
||||
this.y = y
|
||||
|
|
|
@ -163,7 +163,7 @@
|
|||
<div class="col"><a href="/video/{{ $current }}/edit" class="btn btn-block btn-warning">動画の編集</a></div>
|
||||
@endif
|
||||
@if ($current != '' && $slug != '' && $slug == $current && $user->perm['blg_delpost'])
|
||||
<delete-video slug="$current" />
|
||||
<delete-video slug="{{ $current }}" />
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<table class="table table-hover table-dark">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">ゲーム名</th>
|
||||
<th scope="col" width="70%">ゲーム名</th>
|
||||
@if (isset($user->perm) && ($user->perm['blg_editpost'] || $user->perm['blg_delpost']))
|
||||
<th scope="col"></th>
|
||||
<th scope="col"></th>
|
||||
|
@ -24,7 +24,7 @@
|
|||
<td scope="row"><a href="/video/{{ $r->slug }}">{{ $r->name }}</a></td>
|
||||
@if (isset($user->perm) && ($user->perm['blg_editpost'] || $user->perm['blg_delpost']))
|
||||
<td scope="row"><a href="/video/game/{{$r->slug}}/edit" class="btn btn-block btn-warning">編集</a></td>
|
||||
<td scope="row"><a href="/video/game/{{$r->slug}}/delete" class="btn btn-block btn-danger">削除</a></td>
|
||||
<td scope="row"><delete-game slug="{{ $r->slug }}" /></td>
|
||||
@endif
|
||||
</tr>
|
||||
@endforeach
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
@extends('layouts.site')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="within">
|
||||
<div class="bar">ゲームの追加</div>
|
||||
<div class="back">
|
||||
@if ($err)
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ $err }}
|
||||
</div>
|
||||
@endif
|
||||
<form method="POST" action="/video/game/add">
|
||||
@csrf
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>ゲーム名</b></div>
|
||||
<div class="col"><input id="name" name="name" type="text" class="form-control" value="{{ $frm['name'] }}" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>スラッグ</b></div>
|
||||
<div class="col"><input id="slug" name="slug" type="text" class="form-control" value="{{ $frm['slug'] }}" /></div>
|
||||
</div>
|
||||
<div class="row body" style="margin-top: 24px;">
|
||||
<div class="col"><input name="submit" type="submit" class="btn btn-success btn-block" value="送信" /></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
|
@ -0,0 +1,27 @@
|
|||
@extends('layouts.site')
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="within">
|
||||
<div class="bar">ゲームの追加</div>
|
||||
<div class="back">
|
||||
@if ($err)
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ $err }}
|
||||
</div>
|
||||
@endif
|
||||
<form method="POST" action="/video/game/{{ $frm->slug }}/edit">
|
||||
@csrf
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>ゲーム名</b></div>
|
||||
<div class="col"><input id="name" name="name" type="text" class="form-control" value="{{ $frm->name }}" /></div>
|
||||
</div>
|
||||
<div class="col"><input id="slug" name="slug" type="hidden" class="form-control" value="{{ $frm->slug }}" /></div>
|
||||
<div class="row body" style="margin-top: 24px;">
|
||||
<div class="col"><input name="submit" type="submit" class="btn btn-success btn-block" value="送信" /></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
|
@ -21,4 +21,14 @@ Route::get('/video', 'VideoController@index');
|
|||
Route::get('/video/{slug}', 'VideoController@table');
|
||||
Route::get('/video/play/{vid}', 'VideoController@prayer');
|
||||
|
||||
Route::get('/video/game/add', 'VideoController@addGame');
|
||||
Route::post('/video/game/add', 'VideoController@addGame');
|
||||
Route::get('/video/game/{slug}/edit', 'VideoController@editGame');
|
||||
Route::post('/video/game/{slug}/edit', 'VideoController@editGame');
|
||||
|
||||
Route::get('/video/play/add', 'VideoController@addVideo');
|
||||
Route::post('/video/play/add', 'VideoController@addVideo');
|
||||
Route::get('/video/play/{slug}/edit', 'VideoController@editVideo');
|
||||
Route::post('/video/play/{slug}/edit', 'VideoController@editVideo');
|
||||
|
||||
Route::get('/{slug}', 'HomeController@page');
|
||||
|
|
新しいイシューから参照