動画の追加・編集の機能性
このコミットが含まれているのは:
コミット
1f6e8223d3
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Http\Controllers\Video;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Http\Request;
|
||||
// use Illuminate\Support\Facades\Log;
|
||||
|
||||
class VideoTable {
|
||||
|
@ -15,18 +16,133 @@ class VideoTable {
|
|||
|
||||
public function index ($slug) {
|
||||
$slg = DB::table('vid_game')->select('id', 'name')->where('slug', $slug)->first();
|
||||
if (!$slg) return view('pages.site.notfound', ['menu' => $this->menu, 'user' => $this->user]);
|
||||
$res = DB::table('vid_video')->where('game_id', $slg->id)->orderBy('id', 'desc')->get();
|
||||
if (!$res) return view('pages.site.notfound', ['menu' => $this->menu, 'user' => $this->user]);
|
||||
|
||||
foreach ($res as $r) {
|
||||
$r->gametitle = explode('】', $r->title);
|
||||
$r->title = $r->gametitle[1];
|
||||
$r->title = (isset($r->gametitle[1]) ? $r->gametitle[1] : '');
|
||||
$r->gametitle = $r->gametitle[0];
|
||||
$r->gametitle = str_replace('【'.$slg->name, '', $r->gametitle);
|
||||
|
||||
if ($r->gametitle == '') $r->gametitle = '初代';
|
||||
}
|
||||
|
||||
if (!$res) return notfound($this->menu, $this->user, $res);
|
||||
return view('pages.site.video.videotable', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user]);
|
||||
}
|
||||
|
||||
public function add (Request $r) {
|
||||
if ($this->user && $this->user->perm['blg_addpost']) {
|
||||
$game = DB::table('vid_game')->get();
|
||||
$err = '';
|
||||
$res = '';
|
||||
$frm = array('title' => '', 'vid' => '', 'game_id' => '', 'url' => '', 'youtube' => '', 'twitter' => '', 'nicovideo' => '', 'bitchute' => '');
|
||||
|
||||
if (isset($r->submit)) {
|
||||
if (empty($err)) { if ($r->url == '' && $r->youtube == '' && $r->twitter == '' && $r->nicovideo == '' && $r->bitchute == '') $err = '1以上の動画URLをご入力下さい。'; }
|
||||
|
||||
// フォームの値を保存して
|
||||
$frm['title'] = $r->title;
|
||||
$frm['vid'] = $r->vid;
|
||||
$frm['game_id'] = $r->game_id;
|
||||
$frm['url'] = ($r->url ?: '');
|
||||
$frm['youtube'] = ($r->youtube ?: '');
|
||||
$frm['twitter'] = ($r->twitter ?: '');
|
||||
$frm['nicovideo'] = ($r->nicovideo ?: '');
|
||||
$frm['bitchute'] = ($r->bitchute ?: '');
|
||||
|
||||
// 件名、文章又はスラッグがなければ、エラーを出て
|
||||
$verify = array('件名' => $r->title, 'スラッグ' => $r->vid);
|
||||
$incomplete = array();
|
||||
if (empty($err)) {
|
||||
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)) { if ($r->game_id == 0) $err = 'ゲームをご選択下さい。'; }
|
||||
|
||||
// スラッグが既に存在したら、エラーを出て
|
||||
if (empty($err)) {
|
||||
$sl = DB::table('vid_video')->select('vid')->where('vid', $r->vid)->first();
|
||||
if ($sl && $sl->vid == $r->vid) $err = 'このスラッグがもう存在しています。';
|
||||
}
|
||||
|
||||
// エラーがあったら、フォームに戻って。なければ、データベースに保存したり、ページ又はポストへ移転して
|
||||
if (!empty($err)) return view('pages.site.video.play.add', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm, 'game' => $game]);
|
||||
else {
|
||||
// できたの?
|
||||
if ($res = DB::table('vid_video')->insert($frm)) return redirect('/video/play/'.$r->vid);
|
||||
else {
|
||||
// やれやれ…
|
||||
return view('pages.site.video.play.add', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm, 'game' => $game]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return view('pages.site.video.play.add', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm, 'game' => $game]);
|
||||
}
|
||||
|
||||
return view('pages.site.notallowed', ['menu' => $this->menu, 'user' => $this->user]);
|
||||
}
|
||||
|
||||
public function delete (Request $r) {
|
||||
if ($this->user->perm['blg_delpost']) {
|
||||
$get = DB::table('vid_video')->select('game_id')->where('vid', $r->slug)->first();
|
||||
$red = DB::table('vid_game')->select('slug')->where('id', $get->game_id)->first();
|
||||
DB::table('vid_video')->where('vid', $r->slug)->delete();
|
||||
return $red->slug;
|
||||
}
|
||||
|
||||
return '許可がありません。';
|
||||
}
|
||||
|
||||
public function edit (Request $r) {
|
||||
if ($this->user && $this->user->perm['blg_addpost']) {
|
||||
$game = DB::table('vid_game')->get();
|
||||
$frm = DB::table('vid_video')->where('vid', $r->vid)->first();
|
||||
if (!$frm) return view('pages.site.notfound', ['menu' => $this->menu, 'user' => $this->user]);
|
||||
$err = '';
|
||||
$res = '';
|
||||
|
||||
if (isset($r->submit)) {
|
||||
if (empty($err)) { if ($r->url == '' && $r->youtube == '' && $r->twitter == '' && $r->nicovideo == '' && $r->bitchute == '') $err = '1以上の動画URLをご入力下さい。'; }
|
||||
|
||||
// フォームの値を保存して
|
||||
$frm->title = $r->title;
|
||||
$frm->vid = $r->vid;
|
||||
$frm->game_id = $r->game_id;
|
||||
$frm->url = ($r->url ?: '');
|
||||
$frm->youtube = ($r->youtube ?: '');
|
||||
$frm->twitter = ($r->twitter ?: '');
|
||||
$frm->nicovideo = ($r->nicovideo ?: '');
|
||||
$frm->bitchute = ($r->bitchute ?: '');
|
||||
|
||||
// 件名、文章又はスラッグがなければ、エラーを出て
|
||||
$verify = array('件名' => $r->title, 'スラッグ' => $r->vid);
|
||||
$incomplete = array();
|
||||
if (empty($err)) {
|
||||
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)) { if ($r->game_id == 0) $err = 'ゲームをご選択下さい。'; }
|
||||
|
||||
// エラーがあったら、フォームに戻って。なければ、データベースに保存したり、ページ又はポストへ移転して
|
||||
if (!empty($err)) return view('pages.site.video.play.edit', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm, 'game' => $game]);
|
||||
else {
|
||||
// できたの?
|
||||
if ($res = DB::table('vid_video')->where('vid', $r->vid)->update((array)$frm)) return redirect('/video/play/'.$r->vid);
|
||||
else {
|
||||
// やれやれ…
|
||||
return view('pages.site.video.play.edit', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm, 'game' => $game]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return view('pages.site.video.play.edit', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm, 'game' => $game]);
|
||||
}
|
||||
|
||||
return view('pages.site.notallowed', ['menu' => $this->menu, 'user' => $this->user]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
@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/add">
|
||||
@csrf
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>件名</b></div>
|
||||
<div class="col"><input id="title" name="title" type="text" class="form-control" value="{{ $frm['title'] }}" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>スラッグ</b></div>
|
||||
<div class="col"><input id="vid" name="vid" type="text" class="form-control" value="{{ $frm['vid'] }}" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>ゲーム</b></div>
|
||||
<div class="col">
|
||||
<select id="game_id" name="game_id" class="form-control">
|
||||
<option value="0"></option>
|
||||
@foreach ($game as $g)
|
||||
<option value="{{ $g->id }}" @if ($frm['game_id'] == $g->id) selected @endif>{{ $g->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>URL</b></div>
|
||||
<div class="col"><input id="url" name="url" type="text" class="form-control" value="{{ $frm['url'] }}" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>ユーチューブ</b></div>
|
||||
<div class="col"><input id="youtube" name="youtube" type="text" class="form-control" value="{{ $frm['youtube'] }}" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>ツイッター</b></div>
|
||||
<div class="col"><input id="twitter" name="twitter" type="text" class="form-control" value="{{ $frm['twitter'] }}" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>ニコニコ動画</b></div>
|
||||
<div class="col"><input id="nicovideo" name="nicovideo" type="text" class="form-control" value="{{ $frm['nicovideo'] }}" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>ビットチュート</b></div>
|
||||
<div class="col"><input id="bitchute" name="bitchute" type="text" class="form-control" value="{{ $frm['bitchute'] }}" /></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,58 @@
|
|||
@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/{{ $frm->vid }}/edit">
|
||||
@csrf
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>件名</b></div>
|
||||
<div class="col"><input id="title" name="title" type="text" class="form-control" value="{{ $frm->title }}" /></div>
|
||||
</div>
|
||||
<div class="col"><input id="vid" name="vid" type="hidden" class="form-control" value="{{ $frm->vid }}" /></div>
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>ゲーム</b></div>
|
||||
<div class="col">
|
||||
<select id="game_id" name="game_id" class="form-control">
|
||||
<option value="0"></option>
|
||||
@foreach ($game as $g)
|
||||
<option value="{{ $g->id }}" @if ($frm->game_id == $g->id) selected @endif>{{ $g->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>URL</b></div>
|
||||
<div class="col"><input id="url" name="url" type="text" class="form-control" value="{{ $frm->url }}" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>ユーチューブ</b></div>
|
||||
<div class="col"><input id="youtube" name="youtube" type="text" class="form-control" value="{{ $frm->youtube }}" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>ツイッター</b></div>
|
||||
<div class="col"><input id="twitter" name="twitter" type="text" class="form-control" value="{{ $frm->twitter }}" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>ニコニコ動画</b></div>
|
||||
<div class="col"><input id="nicovideo" name="nicovideo" type="text" class="form-control" value="{{ $frm->nicovideo }}" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>ビットチュート</b></div>
|
||||
<div class="col"><input id="bitchute" name="bitchute" type="text" class="form-control" value="{{ $frm->bitchute }}" /></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
|
新しいイシューから参照