ポスト・ページの追加機能性
このコミットが含まれているのは:
コミット
feb9070307
|
@ -72,7 +72,7 @@ class Content {
|
|||
if ($sl && $sl->slug == $r->slug) $err = 'このスラッグがもう存在しています。';
|
||||
|
||||
// エラーがあったら、フォームに戻って。なければ、データベースに保存したり、ページ又はポストへ移転して
|
||||
if (!empty($err)) return view('pages.site.contentadd', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm]);
|
||||
if (!empty($err)) return view('pages.site.content.add', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm]);
|
||||
else {
|
||||
// データベースに追加できるには、値を修正して
|
||||
$gs = DB::table('blg_content')->select('sortorder')->orderBy('sortorder', 'desc')->first();
|
||||
|
@ -84,18 +84,18 @@ class Content {
|
|||
$frm['sortorder'] = ($r->isPost == 0 ? $gs->sortorder+1 : 0);
|
||||
|
||||
// できたの?
|
||||
if ($res = $this->objSite->addContent($frm)) return redirect(($r->isPost == 1 ? '/blog/' : '/').$r->slug);
|
||||
if ($res = DB::table('blg_content')->insert($frm)) return redirect(($r->isPost == 1 ? '/blog/' : '/').$r->slug);
|
||||
else {
|
||||
// やれやれ…
|
||||
$frm['publish_date'] = $sav;
|
||||
unset($frm['post_date']);
|
||||
unset($frm['sortorder']);
|
||||
return view('pages.site.contentadd', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $res['err']]);
|
||||
return view('pages.site.content.add', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $res['err']]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return view('pages.site.contentadd', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm]);
|
||||
return view('pages.site.content.add', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm]);
|
||||
}
|
||||
|
||||
return redirect('');
|
||||
|
@ -156,7 +156,7 @@ class Content {
|
|||
if ($sl && $sl->slug == $r->slug) $err = 'このスラッグがもう存在しています。';
|
||||
|
||||
// エラーがあったら、フォームに戻って。なければ、データベースに保存したり、ページ又はポストへ移転して
|
||||
if (!empty($err)) return view('pages.site.contentadd', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm]);
|
||||
if (!empty($err)) return view('pages.site.content.add', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm]);
|
||||
else {
|
||||
// データベースに追加できるには、値を修正して
|
||||
$gs = DB::table('blg_content')->select('sortorder')->orderBy('sortorder', 'desc')->first();
|
||||
|
@ -168,18 +168,18 @@ class Content {
|
|||
$frm['sortorder'] = ($r->isPost == 0 ? $gs->sortorder+1 : 0);
|
||||
|
||||
// できたの?
|
||||
if ($res = $this->objSite->addContent($frm)) return redirect(($r->isPost == 1 ? '/blog/' : '/').$r->slug);
|
||||
if ($res = DB::table('blg_content')->where('slug', $bdl['slug'])->update($frm)) return redirect(($r->isPost == 1 ? '/blog/' : '/').$r->slug);
|
||||
else {
|
||||
// やれやれ…
|
||||
$frm['publish_date'] = $sav;
|
||||
unset($frm['post_date']);
|
||||
unset($frm['sortorder']);
|
||||
return view('pages.site.contentadd', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $res['err']]);
|
||||
return view('pages.site.content.add', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $res['err']]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return view('pages.site.contentadd', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm]);
|
||||
return view('pages.site.content.add', ['res' => $res, 'menu' => $this->menu, 'user' => $this->user, 'err' => $err, 'frm' => $frm]);
|
||||
}
|
||||
|
||||
return redirect('');
|
||||
|
|
|
@ -19,6 +19,7 @@ window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
|
|||
|
||||
Vue.component('appbar', require('./components/appbar.vue').default);
|
||||
Vue.component('comments', require('./components/comments.vue').default);
|
||||
Vue.component('content-type', require('./components/contenttype.vue').default);
|
||||
Vue.component('discord', require('./components/discord.vue').default);
|
||||
|
||||
const app = new Vue({ el: '#app' });
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
<template>
|
||||
<span>
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>種類</b></div>
|
||||
<div class="col">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" name="isPost" type="radio" id="type-post" :value="1" v-model="choice">
|
||||
<label class="form-check-label" for="type-post">ポスト</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" name="isPost" type="radio" id="type-page" :value="0" v-model="choice">
|
||||
<label class="form-check-label" for="type-page">ページ</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="choice === 1">
|
||||
<div class="row body">
|
||||
<div class="col-md-3"><b>公開設定</b></div>
|
||||
<div class="col">
|
||||
<select id="public_status" name="public_status" class="form-control" v-model="pub">
|
||||
<option :value="0">公開</option>
|
||||
<option :value="1">スケジュールを設定</option>
|
||||
<option :value="2">限定公開</option>
|
||||
<option :value="3">非公開</option>
|
||||
<option :value="4">下書き</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row body" v-if="pub === 1">
|
||||
<div class="col-md-3"><b>公開日時</b></div>
|
||||
<div class="col">
|
||||
<date-picker name="publish_date" v-model="pubdate" :config="options" id="publish_date" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row body" v-else>
|
||||
<div class="col-md-3"><b>メニュー</b></div>
|
||||
<div class="col">
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" name="isMenu" class="form-check-input" id="menu" v-model="menu">
|
||||
<label class="form-check-label" for="menu">メニューに表示する</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</span>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import datePicker from 'vue-bootstrap-datetimepicker';
|
||||
import 'pc-bootstrap4-datetimepicker/build/css/bootstrap-datetimepicker.css';
|
||||
|
||||
export default {
|
||||
components: { datePicker },
|
||||
props: { c: String, p: String, m: null, d: null },
|
||||
data: function () {
|
||||
return {
|
||||
options: { format: 'YYYY年MM月DD日 HH:mm:ss', locale: 'ja', useCurrent: true, showClear: true, showClose: true },
|
||||
choice: Number(this.c),
|
||||
pub: Number(this.p),
|
||||
menu: this.m,
|
||||
pubdate: this.d
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
choice: function (v) {
|
||||
this.choice = Number(this.choice);
|
||||
if (this.choice === 0) this.pub = 0;
|
||||
else this.menu = false;
|
||||
},
|
||||
pub: function (v) {
|
||||
this.pub = Number(this.pub);
|
||||
if (this.pub !== 1) this.pubdate = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -72,6 +72,13 @@ $black1: #232629;
|
|||
$black2: #31363b;
|
||||
$black3: #4d4d4d;
|
||||
|
||||
//// 黄
|
||||
$yellow1: #c9ce3b;
|
||||
$yellow2: #ffdd00;
|
||||
$yellow3: #fdbc4b;
|
||||
$yellow4: #f39c1f;
|
||||
$yellow5: #f67400;
|
||||
|
||||
//// 白
|
||||
$white1: #fcfcfc;
|
||||
$white2: #eff0f1;
|
||||
|
|
|
@ -170,3 +170,20 @@
|
|||
border-bottom-color: $ng3;
|
||||
border-right-color: $ng3;
|
||||
}
|
||||
|
||||
|
||||
.btn-warning, .btn-warning.disabled, .btn-warning:disabled, .alert-warning {
|
||||
background: radial-gradient(ellipse at top, $yellow3, transparent),
|
||||
radial-gradient(ellipse at bottom, $black1, transparent);
|
||||
color: $white1;
|
||||
border-bottom-color: $yellow1;
|
||||
border-right-color: $yellow1;
|
||||
}
|
||||
|
||||
.btn-warning:hover {
|
||||
color: $white1;
|
||||
background-color: $yellow5;
|
||||
border-color: transparent;
|
||||
border-bottom-color: $yellow3;
|
||||
border-right-color: $yellow3;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
@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="/content/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="slug" name="slug" type="text" class="form-control" value="{{ $frm['slug'] }}" /></div>
|
||||
</div>
|
||||
<div>
|
||||
<content-type p="{{$frm['public_status']}}" c="{{$frm['isPost']}}" d="{{$frm['publish_date']}}" m="{{$frm['isMenu']}}" />
|
||||
</div>
|
||||
<b>文章</b>
|
||||
<div class="row body">
|
||||
<div class="col"><textarea id="message" name="message" rows="16" class="form-control">{{ $frm['message'] }}</textarea></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
|
|
@ -1,62 +0,0 @@
|
|||
@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="/content/add">
|
||||
@csrf
|
||||
<div class="row body">
|
||||
<div class="col-sm-4"><b>件名</b></div>
|
||||
<div class="col"><input id="title" name="title" type="text" class="form-control" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-sm-4"><b>スラッグ</b></div>
|
||||
<div class="col"><input id="slug" name="slug" type="text" class="form-control" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-sm-4"><b>スラッグ</b></div>
|
||||
<div class="col"><input id="slug" name="slug" type="text" class="form-control" /></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-sm-4"><b>種類</b></div>
|
||||
<div class="col">
|
||||
<input id="type-post" name="isPost" type="radio" class="form-control" value="1" />
|
||||
<label for="type-post">ポスト</label>
|
||||
<input id="type-page" name="isPost" type="radio" class="form-control" value="0" />
|
||||
<label for="type-page">ページ</label>
|
||||
</div>
|
||||
</div>
|
||||
投稿はポストの場合
|
||||
<div class="row body">
|
||||
<div class="col-sm-4"><b>公開</b></div>
|
||||
<div class="col">
|
||||
<select id="publicity" name="published_at" class="">
|
||||
<option value="0">公開</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
投稿はページの場合
|
||||
<div class="row body">
|
||||
<div class="col-sm-4"><b>メニュー</b></div>
|
||||
<div class="col"><input id="menu" name="isMenu" type="checkbox" class="form-control" />メニューに表示する</div>
|
||||
</div>
|
||||
<b>文章</b>
|
||||
<div class="row body">
|
||||
<div class="col"><textarea id="message" name="message" col="16" class="form-control"></textarea></div>
|
||||
</div>
|
||||
<div class="row body">
|
||||
<div class="col-sm-4"></div>
|
||||
<div class="col"><input name="submit" type="submit" class="btn btn-success btn-block" value="投稿" /></div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
|
@ -3,8 +3,8 @@
|
|||
Route::get('/', 'HomeController@index');
|
||||
Route::get('/blog/{slug}', 'HomeController@post');
|
||||
|
||||
// Route::get('/content/add', 'HomeController@addContent');
|
||||
// Route::post('/content/add', 'HomeController@addContent');
|
||||
Route::get('/content/add', 'HomeController@addContent');
|
||||
Route::post('/content/add', 'HomeController@addContent');
|
||||
// Route::get('/content/edit', 'HomeController@editContent');
|
||||
// Route::post('/content/edit', 'HomeController@editContent');
|
||||
// Route::get('/content/del', 'HomeController@delContent');
|
||||
|
|
新しいイシューから参照