このコミットが含まれているのは:
テクニカル諏訪子 2021-06-29 09:31:36 +09:00
コミット e61ba26d1c
130個のファイルの変更146行の追加80622行の削除

ファイルの表示

@ -1,7 +1,7 @@
APP_NAME=Laravel APP_NAME=076Server
APP_ENV=local APP_ENV=local
APP_KEY= APP_KEY=
APP_DEBUG=true APP_DEBUG=false
APP_URL=http://localhost APP_URL=http://localhost
THEME="techsuwa" THEME="techsuwa"
@ -33,15 +33,16 @@ MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}" MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID= GMO_KEY=""
AWS_SECRET_ACCESS_KEY= GMO_SECRET=""
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
PUSHER_APP_ID= CONOHA_DENANT_ID=""
PUSHER_APP_KEY= CONOHA_DENANT_NAME=""
PUSHER_APP_SECRET= CONOHA_USER_NAME=""
PUSHER_APP_CLUSTER=mt1 CONOHA_USER_PASS=""
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" YOUTUBE_API=""
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" LBRY_URI=""
PEER_URI=""
PEER_USER=""
PEER_PASS=""

ファイルの表示

@ -7,7 +7,6 @@ use Illuminate\Http\Request;
class Comment { class Comment {
public function add (Request $r) { public function add (Request $r) {
$com = $r->comment;
if ($r->isvideo == 'f') $id = DB::table('blg_content')->select('id')->where('slug', $r->slug)->first()->id; if ($r->isvideo == 'f') $id = DB::table('blg_content')->select('id')->where('slug', $r->slug)->first()->id;
$shadow = DB::table('blg_blacklist')->where('ipaddress', getIp())->first(); $shadow = DB::table('blg_blacklist')->where('ipaddress', getIp())->first();
if ($shadow && !$shadow->isShadow) return array('status' => '0101FF', 'message' => '失礼しますが、あなたはBANされていましたので、コメントを保存できません。'); if ($shadow && !$shadow->isShadow) return array('status' => '0101FF', 'message' => '失礼しますが、あなたはBANされていましたので、コメントを保存できません。');
@ -16,9 +15,9 @@ class Comment {
'user_id' => ($r->user_id != 0 ?: null), 'user_id' => ($r->user_id != 0 ?: null),
'post_id' => ($r->isvideo == 'f' ? $id : 0), 'post_id' => ($r->isvideo == 'f' ? $id : 0),
'video_id' => ($r->isvideo == 't' ? $r->slug : ''), 'video_id' => ($r->isvideo == 't' ? $r->slug : ''),
'name' => (isset($com['name']) ? $com['name'] : null), 'name' => (isset($r->newname) ? $r->newname : null),
'email' => (isset($com['mail']) ? $com['mail'] : null), 'email' => (isset($r->newmail) ? $r->newmail : null),
'message' => $com['text'], 'message' => $r->newmessage,
'created' => time(), 'created' => time(),
'ipaddress' => getIp(), 'ipaddress' => getIp(),
'isShadow' => ($shadow ? 0 : 1) 'isShadow' => ($shadow ? 0 : 1)
@ -39,6 +38,6 @@ class Comment {
$res->isvideo = $r->isvideo; $res->isvideo = $r->isvideo;
} }
return array('status' => '010100', 'message' => 'OK', 'result' => $res); return redirect('/'.($r->isvideo == 't' ? 'video/play' : 'blog').'/'.$r->slug.'#comment-'.$add);
} }
} }

ファイルの表示

@ -31,33 +31,24 @@ class Content extends Engine {
); );
if (isset($r->submit)) { if (isset($r->submit)) {
// JS→HTML→PHPの修正 // 一応修正
$sav = $r->publish_date; $sav = $r->publish_date;
if (is_null($r->public_status)) $r->public_status = 0; if (is_null($r->public_status)) $r->public_status = 0;
$r->public_status = (int)$r->public_status; $r->public_status = (int)$r->public_status;
if (is_null($r->isPost)) $r->isPost = 0;
$r->isPost = (int)$r->isPost;
if ($r->public_status == 1 && !is_null($r->publish_date)) { if ($r->public_status == 1 && is_null($r->publish_date)) $r->public_status = 0;
$r->publish_date = str_replace('年', '-', $r->publish_date);
$r->publish_date = str_replace('月', '-', $r->publish_date);
$r->publish_date = str_replace('日', '', $r->publish_date);
$r->publish_date = strtotime($r->publish_date);
}
else if ($r->public_status == 1 && is_null($r->publish_date)) $r->public_status = 0;
else if ($r->public_status != 1 && is_null($r->publish_date)) $r->publish_date = time(); else if ($r->public_status != 1 && is_null($r->publish_date)) $r->publish_date = time();
if (is_null($r->isMenu)) $r->isMenu = false;
if ($r->isMenu == 'on') $r->isMenu = true; if (!is_null($r->publish_date)) $r->publish_date = strtotime($r->publish_date);
else $r->isMenu = false; else $r->publish_date = time();
$r->isMenu = (int)$r->isMenu;
// フォームの値を保存して // フォームの値を保存して
$frm['title'] = $r->title; $frm['title'] = $r->title;
$frm['slug'] = $r->slug; $frm['slug'] = $r->slug;
$frm['public_status'] = $r->public_status; $frm['public_status'] = $r->public_status;
$frm['publish_date'] = $r->publish_date; $frm['publish_date'] = $r->publish_date;
$frm['isMenu'] = $r->isMenu; $frm['isMenu'] = (int)!is_null($r->isMenu) && $r->isMenu == 'on';
$frm['isPost'] = $r->isPost; $frm['isPost'] = (int)!is_null($r->isPost) && $r->isPost == 'on';
$frm['message'] = $r->message; $frm['message'] = $r->message;
// 件名、文章又はスラッグがなければ、エラーを出て // 件名、文章又はスラッグがなければ、エラーを出て
@ -77,15 +68,17 @@ class Content extends Engine {
else { else {
// データベースに追加できるには、値を修正して // データベースに追加できるには、値を修正して
$gs = DB::table('blg_content')->select('sortorder')->orderBy('sortorder', 'desc')->first(); $gs = DB::table('blg_content')->select('sortorder')->orderBy('sortorder', 'desc')->first();
if (!isset($r->publish_date)) $frm['publish_date'] = ($r->isPost == 1 ? time() : 0); if (!isset($r->publish_date)) $frm['publish_date'] = ((int)$r->isPost == 1 ? time() : 0);
if (!isset($r->public_status)) $frm['public_status'] = 0; if (!isset($r->public_status)) $frm['public_status'] = 0;
if (!isset($r->isPost)) $frm['isPost'] = 0; if (!isset($r->isPost)) $frm['isPost'] = 0;
if (!isset($r->isMenu)) $frm['isMenu'] = 0; if (!isset($r->isMenu)) $frm['isMenu'] = 0;
$frm['post_date'] = ($r->isPost == 1 ? time() : 0); $frm['isPost'] = (int)$frm['isPost'];
$frm['sortorder'] = ($r->isPost == 0 ? $gs->sortorder+1 : 0); $frm['isMenu'] = (int)$frm['isMenu'];
$frm['post_date'] = ((int)$r->isPost == 1 ? time() : 0);
$frm['sortorder'] = ((int)$r->isPost == 0 ? $gs->sortorder+1 : 0);
// できたの? // できたの?
if ($res = DB::table('blg_content')->insert($frm)) return redirect(($r->isPost == 1 ? '/blog/' : '/').$r->slug); if ($res = DB::table('blg_content')->insert($frm)) return redirect(($frm['isPost'] == 1 ? '/blog/' : '/').$r->slug);
else { else {
// やれやれ… // やれやれ…
$frm['publish_date'] = $sav; $frm['publish_date'] = $sav;
@ -105,10 +98,10 @@ class Content extends Engine {
public function delete (Request $r) { public function delete (Request $r) {
$chk = DB::table('blg_content')->select('isPost')->where('slug', $r->slug)->first(); $chk = DB::table('blg_content')->select('isPost')->where('slug', $r->slug)->first();
if (($this->valid['blg_delpost'] && $chk->isPost == 1) || ($this->valid['blg_delpage'] && $chk->isPost == 0)) { if (($this->valid['blg_delpost'] && $chk->isPost == 1) || ($this->valid['blg_delpage'] && $chk->isPost == 0)) {
return DB::table('blg_content')->where('slug', $r->slug)->delete(); if (DB::table('blg_content')->where('slug', $r->slug)->delete()) return redirect('/');
} }
return '許可がありません。'; return view('pages.site.notallowed');
} }
public function edit (Request $r) { public function edit (Request $r) {
@ -119,32 +112,23 @@ class Content extends Engine {
$res = ''; $res = '';
if (isset($r->submit)) { if (isset($r->submit)) {
// JS→HTML→PHPの修正 // 一応修正
$sav = $r->publish_date; $sav = $r->publish_date;
if (is_null($r->public_status)) $r->public_status = 0; if (is_null($r->public_status)) $r->public_status = 0;
$r->public_status = (int)$r->public_status; $r->public_status = (int)$r->public_status;
if (is_null($r->isPost)) $r->isPost = 0;
$r->isPost = (int)$r->isPost;
if ($r->public_status == 1 && !is_null($r->publish_date)) { if ($r->public_status == 1 && is_null($r->publish_date)) $r->public_status = 0;
$r->publish_date = str_replace('年', '-', $r->publish_date);
$r->publish_date = str_replace('月', '-', $r->publish_date);
$r->publish_date = str_replace('日', '', $r->publish_date);
$r->publish_date = strtotime($r->publish_date);
}
else if ($r->public_status == 1 && is_null($r->publish_date)) $r->public_status = 0;
else if ($r->public_status != 1 && is_null($r->publish_date)) $r->publish_date = time(); else if ($r->public_status != 1 && is_null($r->publish_date)) $r->publish_date = time();
if (is_null($r->isMenu)) $r->isMenu = false;
if ($r->isMenu == 'on') $r->isMenu = true; if (!is_null($r->publish_date)) $r->publish_date = strtotime($r->publish_date);
else $r->isMenu = false; else $r->publish_date = time();
$r->isMenu = (int)$r->isMenu;
// フォームの値を保存して // フォームの値を保存して
$frm->title = $r->title; $frm->title = $r->title;
$frm->public_status = $r->public_status; $frm->public_status = $r->public_status;
$frm->publish_date = $r->publish_date; $frm->publish_date = $r->publish_date;
$frm->isMenu = $r->isMenu; $frm->isMenu = (int)!is_null($r->isMenu) && $r->isMenu == 'on';
$frm->isPost = $r->isPost; $frm->isPost = (int)!is_null($r->isPost) && $r->isPost == 'on';
$frm->message = $r->message; $frm->message = $r->message;
// 件名、文章又はスラッグがなければ、エラーを出て // 件名、文章又はスラッグがなければ、エラーを出て
@ -158,15 +142,17 @@ class Content extends Engine {
else { else {
// データベースに追加できるには、値を修正して // データベースに追加できるには、値を修正して
$gs = DB::table('blg_content')->select('sortorder')->orderBy('sortorder', 'desc')->first(); $gs = DB::table('blg_content')->select('sortorder')->orderBy('sortorder', 'desc')->first();
if (!isset($r->publish_date)) $frm->publish_date = ($r->isPost == 1 ? time() : 0); if (!isset($r->publish_date)) $frm->publish_date = ((int)$r->isPost == 1 ? time() : 0);
if (!isset($r->public_status)) $frm->public_status = 0; if (!isset($r->public_status)) $frm->public_status = 0;
if (!isset($r->isPost)) $frm->isPost = 0; if (!isset($r->isPost)) $frm->isPost = 0;
if (!isset($r->isMenu)) $frm->isMenu = 0; if (!isset($r->isMenu)) $frm->isMenu = 0;
$frm->post_date = ($r->isPost == 1 ? time() : 0); $frm->isPost = (int)$frm->isPost;
$frm->sortorder = ($r->isPost == 0 ? $gs->sortorder+1 : 0); $frm->isMenu = (int)$frm->isMenu;
$frm->post_date = ((int)$r->isPost == 1 ? time() : 0);
$frm->sortorder = ((int)$r->isPost == 0 ? $gs->sortorder+1 : 0);
// できたの? // できたの?
if ($res = DB::table('blg_content')->where('slug', $r->slug)->update((array)$frm)) return redirect(($r->isPost == 1 ? '/blog/' : '/').$r->slug); if ($res = DB::table('blg_content')->where('slug', $r->slug)->update((array)$frm)) return redirect(($frm->isPost == 1 ? '/blog/' : '/').$r->slug);
else { else {
// やれやれ… // やれやれ…
$frm->publish_date = $sav; $frm->publish_date = $sav;

ファイルの表示

@ -42,14 +42,14 @@ class Prayer extends Engine {
$res->kvcomment = array(); $res->kvcomment = array();
$kvslug = explode('/', $res->kerotube); $kvslug = explode('/', $res->kerotube);
if (isset($kvslug[5])) { if (isset($kvslug[5])) {
$res->kvcomment = $this->getKeroCome($kvslug[5], ''); $res->kvcomment = $this->getPeerCome($kvslug[5], '');
} }
if ($res->ytcomment) $res->ytcomment = $this->backupYTComment($slugger, $res->ytcomment); if ($res->ytcomment) $res->ytcomment = $this->backupYTComment($slugger, $res->ytcomment);
$res->nicocomment = array(); $res->nicocomment = array();
$res->bccomment = array(); $res->bccomment = array();
$res->lbcomment = array(); $res->lbcomment = array();
if ($res->kvcomment) $res->kvcomment = $this->backupKeroComment($slugger, $res->kvcomment); if ($res->kvcomment) $res->kvcomment = $this->backupPeerComment($slugger, $res->kvcomment);
foreach ($comments as $k => $c) { foreach ($comments as $k => $c) {
$c->replyCount = 0; $c->replyCount = 0;
@ -88,10 +88,10 @@ class Prayer extends Engine {
return view('pages.site.video.prayer', ['res' => $res, 'user' => $this->user]); return view('pages.site.video.prayer', ['res' => $res, 'user' => $this->user]);
} }
function getKeroCome ($slug, $tslug) { function getPeerCome ($slug, $tslug) {
$come = []; $come = [];
$ch = curl_init(); $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, env('KERO_URI').'/api/v1/videos/'.$slug.'/comment-threads'); curl_setopt($ch, CURLOPT_URL, env('PEER_URI').'/api/v1/videos/'.$slug.'/comment-threads');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
@ -119,7 +119,7 @@ class Prayer extends Engine {
$g->comments->id = $g->id; $g->comments->id = $g->id;
$g->comments->name = $g->account->displayName; $g->comments->name = $g->account->displayName;
$g->comments->channel = $g->account->url; $g->comments->channel = $g->account->url;
$g->comments->icon = env('KERO_URI').$g->account->avatar->path; $g->comments->icon = env('PEER_URI').$g->account->avatar->path;
$g->comments->message = strip_tags($g->text, array('<br />')); $g->comments->message = strip_tags($g->text, array('<br />'));
$g->comments->createdTS = strtotime($g->createdAt); $g->comments->createdTS = strtotime($g->createdAt);
$g->comments->created = date('Y年m月d日 H:i:s', strtotime($g->createdAt)); $g->comments->created = date('Y年m月d日 H:i:s', strtotime($g->createdAt));
@ -235,7 +235,7 @@ class Prayer extends Engine {
return $com; return $com;
} }
function backupKeroComment ($slug, $com) { function backupPeerComment ($slug, $com) {
foreach ($com['come'] as $c) { foreach ($com['come'] as $c) {
$icon = strstr($c->icon, 'avatars/'); $icon = strstr($c->icon, 'avatars/');
$icon = str_replace('avatars/', '', $icon); $icon = str_replace('avatars/', '', $icon);

ファイルの表示

ファイルの表示

ファイルの表示

ファイルの表示

ファイルの表示

ファイルの表示

ファイルの表示

ファイルの表示

ファイルの表示

ファイルの表示

ファイルの表示

ファイルの表示

ファイルの表示

ファイルの表示

ファイルの表示

ファイルの表示

ファイルの表示

ファイルの表示

バイナリ
public/img/header.jpeg

バイナリファイルは表示されません。

変更前

幅:  |  高さ:  |  サイズ: 46 KiB

変更後

幅:  |  高さ:  |  サイズ: 220 KiB

78937
public/js/app.js vendored

長すぎる行があるためファイル差分は表示されません

1
resources/js/app.js vendored
ファイルの表示

@ -1 +0,0 @@
require('./bootstrap');

ファイルの表示

@ -1,42 +0,0 @@
window._ = require('lodash');
/**
* We'll load the axios HTTP library which allows us to easily issue requests
* to our Laravel back-end. This library automatically handles sending the
* CSRF token as a header based on the value of the "XSRF" token cookie.
*/
window.Vue = require('vue');
window.axios = require('axios');
try {
window.$ = window.jQuery = require('jquery');
require('bootstrap');
} catch (e) {}
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
Vue.component('content-type', require('./components/contenttype.vue').default);
Vue.component('delete-content', require('./components/deletecontent.vue').default);
Vue.component('delete-video', require('./components/deletevideo.vue').default);
Vue.component('delete-game', require('./components/deletegame.vue').default);
const app = new Vue({ el: '#app' });
/**
* Echo exposes an expressive API for subscribing to channels and listening
* for events that are broadcast by Laravel. Echo and event broadcasting
* allows your team to easily build robust real-time web applications.
*/
// import Echo from 'laravel-echo';
// window.Pusher = require('pusher-js');
// window.Echo = new Echo({
// broadcaster: 'pusher',
// key: process.env.MIX_PUSHER_APP_KEY,
// cluster: process.env.MIX_PUSHER_APP_CLUSTER,
// forceTLS: true
// });

ファイルの表示

@ -1,150 +0,0 @@
<template>
<div id="comments" class="comments-area clearfix">
<h3 class="comments-count section-heading uppercase"><span>{{ comment.total }} 件のコメント</span></h3>
<div style="margin: 12px 0;">
<span v-if="isvideo !== 'n'">
<hr />
<div v-if="err" class="alert alert-danger">{{ err }}</div>
<span v-if="Object.keys(user).length === 0">
<div class="form-group row">
<div class="col-md-4 col-lg-3">名前</div>
<div class="input-group col-md col-lg">
<input type="text" id="new-name" class="form-control" v-model="newComment.name" placeholder="ご入力しない場合、名前は「名無しのテクニシャン」になります。" />
</div>
</div>
<div class="form-group row">
<div class="col-md-4 col-lg-3">メールアドレス</div>
<div class="input-group col-md col-lg">
<input type="text" id="new-mail" class="form-control" v-model="newComment.mail" placeholder="返信される場合、メールに通知を送ります。" />
</div>
</div>
</span>
<span v-else>
<div class="form-group row">
<div class="col-md-4 col-lg-3">名前</div>
<div class="input-group col-md col-lg">
<a :href="`/profile/${user.user_id}`" :style="user.showcol"><img style="width: 24px; height: 24px;" :src="user.avatar" :alt="`${user.showname}さんのアイコン`"> {{ user.showname }}</a>
</div>
</div>
</span>
<div class="row">
<div class="col-md-4 col-lg-3">本文 <span class="badge badge-danger">必須</span></div>
<div class="col-md col-lg">
<textarea class="form-control" id="new-message" rows="4" v-on:keyup.ctrl.13="send" v-model="newComment.text"></textarea>
</div>
</div>
<div class="row" style="margin-top: 16px;">
<div class="col">
<button type="button" class="btn btn-block btn-primary" @click="send">送信</button>
</div>
</div>
</span>
</div>
<div v-if="comment.total === 0">コメントがありません</div>
<span v-else>
<ul class="commentlist" v-for="(c, i) in comment.come" :key="`comment-${i}`">
<li class="comment even thread-even depth-1" :id="`li-comment-${c.id}`">
<div class="commentnumber">{{ Number(i)+1 }}({{ c.src }})</div>
<div :id="`comment-${c.id}`" :ref="`comment-${c.id}`">
<div>
<cite class="fn">
<span v-if="c.isvideo === 'n'">
<img style="height: 24px;" :src="c.icon" :alt="`${c.name}さんのアイコン`">
<a :href="c.channel" style="overflow-wrap: break-word;">{{ (c.name || '名無しのテクニシャン') }}</a>
</span>
<span v-else>
<span v-if="c.user_id"><a :href="`/profile/${c.user_id}`" :style="c.showcol"><img style="width: 24px; height: 24px;" :src="c.avatar" :alt="`${c.showname}さんのアイコン`"> {{ c.showname }}</a></span>
<span v-else>{{ (c.name || '名無しのテクニシャン') }}</span>
</span>
</cite> <span class="says">より:</span>
<span class="comment-meta commentmetadata" :id="`#comment-${c.id}`"> <a :href="`#comment-${c.id}`">{{ c.created }}</a></span>
</div>
<p style="white-space: pre-wrap; word-wrap: break-word; width: 500px;" v-html="c.message"></p>
<div class="reply">返信{{ c.replyCount }}</div>
</div>
</li>
<span v-if="c.replies">
<ul class="commentlist" v-for="(r, j) in c.replies" :key="`comment-${i}-reply-${j}`">
<li class="comment even thread-even depth-2" :id="`li-comment-${r.id}`">
<div class="commentnumber">{{ i+1 }}/{{ j+1 }}({{ c.src }})</div>
<div :id="`comment-${r.id}`">
<div>
<cite class="fn">
<span v-if="c.isvideo !== 'f'">
<img style="height: 24px;" :src="r.icon" :alt="`${r.name}さんのアイコン`">
<a :href="r.channel">{{ (r.name || '名無しのテクニシャン') }}</a>
</span>
<span v-else>
<span v-if="r.user_id"><a :href="`/profile/${r.user_id}`" :style="r.showcol"><img style="width: 24px; height: 24px;" :src="r.avatar" :alt="`${r.showname}さんのアイコン`"> {{ r.showname }}</a></span>
<span v-else>{{ (r.name || '名無しのテクニシャン') }}</span>
</span>
</cite> <span class="says">より:</span>
<span class="comment-meta commentmetadata" :id="`#comment-${r.id}`"> <a :href="`#comment-${r.id}`">{{ r.created }}</a></span>
</div>
<p style="white-space: pre-wrap; word-wrap: break-word; width: 500px;" v-html="r.message"></p>
</div>
</li>
</ul>
</span>
</ul>
</span>
</div>
</template>
<script>
export default {
props: { user: Object, slug: '', isvideo: '', comments: Object },
data: function () { return { comment: this.comments, newComment: {}, err: '', loading: true, sending: false } },
created: function () { this.reset(); },
methods: {
reset () {
this.loading = false;
this.newComment.name = '';
this.newComment.mail = '';
this.newComment.text = '';
},
send () {
this.err = '';
this.sending = true;
axios.post('/api/comment/new', {
user_id: this.user.user_id,
comment: this.newComment,
isvideo: this.isvideo,
slug: this.slug
}).then(res => {
this.sending = false;
if (res.data.status === '010100') { this.comment.come.unshift(res.data.result); this.comment.total++; this.reset(); }
else this.err = 'エラーコード【' + res.data.status + '】' + res.data.message;
}).catch(err => {
this.sending = false;
this.err = 'サーバーエラーコード【' + err.response.status + '】' + err.response.data.message;
});
}
}
}
</script>
<style scoped>
.fn {
font-size: 16px;
font-style: normal;
color: #20ec77;
}
.comment-meta a {
color: #bdc3c7;
}
.commentlist p {
margin: 0 0 10px;
padding: 10px 0 40px 0;
font-size: 20px;
}
.commentnumber {
float: left;
margin-right: 5px;
font-size: 16px;
}
ul {
list-style: none;
}
</style>

ファイルの表示

@ -1,76 +0,0 @@
<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>

ファイルの表示

@ -1,230 +0,0 @@
<template>
<div class="col">
<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;">
<div class="drag-handle-left"></div>
<div class="drag-handle">投稿の削除</div>
<div class="drag-handle-right" @click="show = false"></div>
</div>
<div class="konsole_left"></div>
<div style="text-align: center; font-size: 18px; padding-top: 10px;">本当に現在の投稿を削除しますか</div>
<div style="text-align:right; line-height: 15; padding: 10px;">
<button type="button" class="btn btn2 btn-popup" @click="show = false">キャンセル</button>
<button type="button" class="btn btn2 btn-popup" @click="del">削除</button>
</div>
<div class="konsole_right"></div>
<div class="konsole_bottom_left"></div>
<div class="konsole_bottom"></div>
<div class="konsole_bottom_right"></div>
</vue-draggable-resizable>
</span>
</div>
</template>
<script>
import VueDraggableResizable from 'vue-draggable-resizable';
import 'vue-draggable-resizable/dist/VueDraggableResizable.css';
Vue.component('vue-draggable-resizable', VueDraggableResizable);
export default {
props: { slug: '' },
data: function () {
return {
show: false,
width: 0,
height: 0,
x: 0,
y: 0
}
},
watch: { text (x) { localStorage.shotanote = x; } },
methods: {
del () { axios.post('/api/content/del', { slug: this.slug }).then(() => { window.location.href = '/'; }); },
onResize: function (x, y, width, height) {
this.x = x
this.y = y
this.width = width
this.height = height
},
onDrag: function (x, y) {
this.x = x
this.y = y
}
}
}
</script>
<style scoped>
.konsole {
width: 600px;
height: 358px;
margin: auto;
color: #fcfcfc;
}
::-webkit-scrollbar-thumb:hover {
background: #452886;
}
.drag-handle-left {
height: 30px;
width: 30px;
background: url('/img/bash/discord_top_left.png') no-repeat;
position: absolute;
top: 0;
left: 0;
}
.drag-handle {
cursor: default;
height: 30px;
background: url('/img/bash/top_bg.png') repeat-x;
width: auto;
margin-left: 30px;
margin-right: 28px;
padding-top: 7px;
padding-right: 0px;
text-align: center;
font-weight: bold;
}
.drag-handle-right {
height: 30px;
width: 28px;
background: url('/img/bash/top_right.png') no-repeat;
position: absolute;
top: 0;
right: 0;
}
.drag-handle-right:hover {
background: url('/img/bash/top_right_hover.png') no-repeat;
cursor: default;
}
.drag-handle-max {
height: 30px;
width: 23px;
background: url('/img/bash/top_max.png') no-repeat;
position: absolute;
top: 0;
right: 28px;
}
.drag-handle-max:hover {
background: url('/img/bash/top_max_hover.png') no-repeat;
cursor: default;
}
.drag-handle-min {
height: 30px;
width: 23px;
background: url('/img/bash/top_min.png') no-repeat;
position: absolute;
top: 0;
right: 51px;
}
.drag-handle-min:hover {
background: url('/img/bash/top_min_hover.png') no-repeat;
cursor: default;
}
.konsole_left {
width: 2px;
background: url('/img/bash/left_bg.png') repeat-y;
position: absolute;
top: 30px;
left: 0;
height: 167px;
}
.konsole_right {
width: 2px;
background: url('/img/bash/right_bg.png') repeat-y;
position: absolute;
height: 167px;
top: 30px;
right: 0;
}
.disco { background-color: #252a35; }
.noter, .noter:active, .noter:focus {
background: transparent;
border: 0;
min-height: 360px;
width: 290px;
resize: none;
}
.btn2 {
width: 120px;
border: 1px solid #4d4d4d;
}
.btn2:hover {
cursor: default;
border: 1px solid #3daee9;
}
.btn-popup {
color: #fcfcfc;
background-color: #252a35;
}
.vdr {
background-size: cover;
backdrop-filter: blur(17px);
font-family: "Lucida Console", Monospace, "DejaVu Sans Mono", "Courier New", MiscFixed;
font-size: 12px;
/* white-space: pre; */
color: #fcfcfc;
overflow: hidden;
position: absolute;
top: 30px;
left: 2px;
height: 200px !important;
width: 500px !important;
padding: 0;
}
.resize-handle-mr {
width: 2px;
background: url('/img/bash/right_bg.png') repeat-y;
position: absolute;
height: 325px;
top: 30px;
right: 0;
}
.konsole_bottom_left {
width: 3px;
height: 3px;
background: url('/img/bash/bottom_left.png') no-repeat;
position: absolute;
bottom: 0;
left: 0;
}
.konsole_bottom {
height: 2px;
background: url('/img/bash/bottom_bg.png') repeat-x;
position: absolute;
bottom: 0;
left: 2px;
width: 495px;
}
.konsole_bottom_right {
height: 3px;
width: 3px;
background: url('/img/bash/bottom_right.png') no-repeat;
position: absolute;
right: 0;
bottom: 0;
}
</style>

ファイルの表示

@ -1,230 +0,0 @@
<template>
<div class="col">
<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;">
<div class="drag-handle-left"></div>
<div class="drag-handle">ゲームの削除</div>
<div class="drag-handle-right" @click="show = false"></div>
</div>
<div class="konsole_left"></div>
<div style="text-align: center; font-size: 18px; padding-top: 10px;">本当に現在のゲームを削除しますか</div>
<div style="text-align:right; line-height: 15; padding: 10px;">
<button type="button" class="btn btn2 btn-popup" @click="show = false">キャンセル</button>
<button type="button" class="btn btn2 btn-popup" @click="del">削除</button>
</div>
<div class="konsole_right"></div>
<div class="konsole_bottom_left"></div>
<div class="konsole_bottom"></div>
<div class="konsole_bottom_right"></div>
</vue-draggable-resizable>
</span>
</div>
</template>
<script>
import VueDraggableResizable from 'vue-draggable-resizable';
import 'vue-draggable-resizable/dist/VueDraggableResizable.css';
Vue.component('vue-draggable-resizable', VueDraggableResizable);
export default {
props: { slug: '' },
data: function () {
return {
show: false,
width: 0,
height: 0,
x: 0,
y: 0
}
},
watch: { text (x) { localStorage.shotanote = x; } },
methods: {
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
this.width = width
this.height = height
},
onDrag: function (x, y) {
this.x = x
this.y = y
}
}
}
</script>
<style scoped>
.konsole {
width: 600px;
height: 358px;
margin: auto;
color: #fcfcfc;
}
::-webkit-scrollbar-thumb:hover {
background: #452886;
}
.drag-handle-left {
height: 30px;
width: 30px;
background: url('/img/bash/discord_top_left.png') no-repeat;
position: absolute;
top: 0;
left: 0;
}
.drag-handle {
cursor: default;
height: 30px;
background: url('/img/bash/top_bg.png') repeat-x;
width: auto;
margin-left: 30px;
margin-right: 28px;
padding-top: 7px;
padding-right: 0px;
text-align: center;
font-weight: bold;
}
.drag-handle-right {
height: 30px;
width: 28px;
background: url('/img/bash/top_right.png') no-repeat;
position: absolute;
top: 0;
right: 0;
}
.drag-handle-right:hover {
background: url('/img/bash/top_right_hover.png') no-repeat;
cursor: default;
}
.drag-handle-max {
height: 30px;
width: 23px;
background: url('/img/bash/top_max.png') no-repeat;
position: absolute;
top: 0;
right: 28px;
}
.drag-handle-max:hover {
background: url('/img/bash/top_max_hover.png') no-repeat;
cursor: default;
}
.drag-handle-min {
height: 30px;
width: 23px;
background: url('/img/bash/top_min.png') no-repeat;
position: absolute;
top: 0;
right: 51px;
}
.drag-handle-min:hover {
background: url('/img/bash/top_min_hover.png') no-repeat;
cursor: default;
}
.konsole_left {
width: 2px;
background: url('/img/bash/left_bg.png') repeat-y;
position: absolute;
top: 30px;
left: 0;
height: 167px;
}
.konsole_right {
width: 2px;
background: url('/img/bash/right_bg.png') repeat-y;
position: absolute;
height: 167px;
top: 30px;
right: 0;
}
.disco { background-color: #252a35; }
.noter, .noter:active, .noter:focus {
background: transparent;
border: 0;
min-height: 360px;
width: 290px;
resize: none;
}
.btn2 {
width: 120px;
border: 1px solid #4d4d4d;
}
.btn2:hover {
cursor: default;
border: 1px solid #3daee9;
}
.btn-popup {
color: #fcfcfc;
background-color: #252a35;
}
.vdr {
background-size: cover;
backdrop-filter: blur(17px);
font-family: "Lucida Console", Monospace, "DejaVu Sans Mono", "Courier New", MiscFixed;
font-size: 12px;
/* white-space: pre; */
color: #fcfcfc;
overflow: hidden;
position: absolute;
top: 30px;
left: 2px;
height: 200px !important;
width: 500px !important;
padding: 0;
}
.resize-handle-mr {
width: 2px;
background: url('/img/bash/right_bg.png') repeat-y;
position: absolute;
height: 325px;
top: 30px;
right: 0;
}
.konsole_bottom_left {
width: 3px;
height: 3px;
background: url('/img/bash/bottom_left.png') no-repeat;
position: absolute;
bottom: 0;
left: 0;
}
.konsole_bottom {
height: 2px;
background: url('/img/bash/bottom_bg.png') repeat-x;
position: absolute;
bottom: 0;
left: 2px;
width: 495px;
}
.konsole_bottom_right {
height: 3px;
width: 3px;
background: url('/img/bash/bottom_right.png') no-repeat;
position: absolute;
right: 0;
bottom: 0;
}
</style>

ファイルの表示

@ -1,230 +0,0 @@
<template>
<div class="col">
<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;">
<div class="drag-handle-left"></div>
<div class="drag-handle">動画の削除</div>
<div class="drag-handle-right" @click="show = false"></div>
</div>
<div class="konsole_left"></div>
<div style="text-align: center; font-size: 18px; padding-top: 10px;">本当に現在の動画を削除しますか</div>
<div style="text-align:right; line-height: 15; padding: 10px;">
<button type="button" class="btn btn2 btn-popup" @click="show = false">キャンセル</button>
<button type="button" class="btn btn2 btn-popup" @click="del">削除</button>
</div>
<div class="konsole_right"></div>
<div class="konsole_bottom_left"></div>
<div class="konsole_bottom"></div>
<div class="konsole_bottom_right"></div>
</vue-draggable-resizable>
</span>
</div>
</template>
<script>
import VueDraggableResizable from 'vue-draggable-resizable';
import 'vue-draggable-resizable/dist/VueDraggableResizable.css';
Vue.component('vue-draggable-resizable', VueDraggableResizable);
export default {
props: { slug: '' },
data: function () {
return {
show: false,
width: 0,
height: 0,
x: 0,
y: 0
}
},
watch: { text (x) { localStorage.shotanote = x; } },
methods: {
del () { axios.post('/api/video/del', { slug: this.slug }).then(res => { window.location.href = '/video/' + res.data; }); },
onResize: function (x, y, width, height) {
this.x = x
this.y = y
this.width = width
this.height = height
},
onDrag: function (x, y) {
this.x = x
this.y = y
}
}
}
</script>
<style scoped>
.konsole {
width: 600px;
height: 358px;
margin: auto;
color: #fcfcfc;
}
::-webkit-scrollbar-thumb:hover {
background: #452886;
}
.drag-handle-left {
height: 30px;
width: 30px;
background: url('/img/bash/discord_top_left.png') no-repeat;
position: absolute;
top: 0;
left: 0;
}
.drag-handle {
cursor: default;
height: 30px;
background: url('/img/bash/top_bg.png') repeat-x;
width: auto;
margin-left: 30px;
margin-right: 28px;
padding-top: 7px;
padding-right: 0px;
text-align: center;
font-weight: bold;
}
.drag-handle-right {
height: 30px;
width: 28px;
background: url('/img/bash/top_right.png') no-repeat;
position: absolute;
top: 0;
right: 0;
}
.drag-handle-right:hover {
background: url('/img/bash/top_right_hover.png') no-repeat;
cursor: default;
}
.drag-handle-max {
height: 30px;
width: 23px;
background: url('/img/bash/top_max.png') no-repeat;
position: absolute;
top: 0;
right: 28px;
}
.drag-handle-max:hover {
background: url('/img/bash/top_max_hover.png') no-repeat;
cursor: default;
}
.drag-handle-min {
height: 30px;
width: 23px;
background: url('/img/bash/top_min.png') no-repeat;
position: absolute;
top: 0;
right: 51px;
}
.drag-handle-min:hover {
background: url('/img/bash/top_min_hover.png') no-repeat;
cursor: default;
}
.konsole_left {
width: 2px;
background: url('/img/bash/left_bg.png') repeat-y;
position: absolute;
top: 30px;
left: 0;
height: 167px;
}
.konsole_right {
width: 2px;
background: url('/img/bash/right_bg.png') repeat-y;
position: absolute;
height: 167px;
top: 30px;
right: 0;
}
.disco { background-color: #252a35; }
.noter, .noter:active, .noter:focus {
background: transparent;
border: 0;
min-height: 360px;
width: 290px;
resize: none;
}
.btn2 {
width: 120px;
border: 1px solid #4d4d4d;
}
.btn2:hover {
cursor: default;
border: 1px solid #3daee9;
}
.btn-popup {
color: #fcfcfc;
background-color: #252a35;
}
.vdr {
background-size: cover;
backdrop-filter: blur(17px);
font-family: "Lucida Console", Monospace, "DejaVu Sans Mono", "Courier New", MiscFixed;
font-size: 12px;
/* white-space: pre; */
color: #fcfcfc;
overflow: hidden;
position: absolute;
top: 30px;
left: 2px;
height: 200px !important;
width: 500px !important;
padding: 0;
}
.resize-handle-mr {
width: 2px;
background: url('/img/bash/right_bg.png') repeat-y;
position: absolute;
height: 325px;
top: 30px;
right: 0;
}
.konsole_bottom_left {
width: 3px;
height: 3px;
background: url('/img/bash/bottom_left.png') no-repeat;
position: absolute;
bottom: 0;
left: 0;
}
.konsole_bottom {
height: 2px;
background: url('/img/bash/bottom_bg.png') repeat-x;
position: absolute;
bottom: 0;
left: 2px;
width: 495px;
}
.konsole_bottom_right {
height: 3px;
width: 3px;
background: url('/img/bash/bottom_right.png') no-repeat;
position: absolute;
right: 0;
bottom: 0;
}
</style>

ファイルの表示

@ -1,27 +0,0 @@
<template>
<fieldset class="form-group">
<div tabindex="-1" role="group">
<div id="gender" role="radiogroup" tabindex="-1" class="btn-group-toggle btn-group" variant="primary">
<label :class="`btn btn-fumei${check == 0 ? '-check' : ''}`">
<input id="gender0" name="gender" type="radio" autocomplete="off" class="" v-model="check" value="0" />
<span>不明</span>
</label>
<label :class="`btn btn-danshi${check == 1 ? '-check' : ''}`">
<input id="gender1" name="gender" type="radio" autocomplete="off" class="" v-model="check" value="1" />
<span>男性</span>
</label>
<label :class="`btn btn-joshi${check == 2 ? '-check' : ''}`">
<input id="gender2" name="gender" type="radio" autocomplete="off" class="" v-model="check" value="2" />
<span>女性</span>
</label>
</div>
</div>
</fieldset>
</template>
<script>
export default {
props: { sel: 0 },
data: function () { return { check: this.sel } }
}
</script>

ファイルの表示

@ -2,18 +2,19 @@
<h3 class="comments-count section-heading uppercase"><span>{{ $comment['total'] }} 件のコメント</span></h3> <h3 class="comments-count section-heading uppercase"><span>{{ $comment['total'] }} 件のコメント</span></h3>
<div style="margin: 12px 0;"> <div style="margin: 12px 0;">
@if ($isvideo !== 'n') @if ($isvideo !== 'n')
<hr /> <form action="/comment/new" method="post">
@csrf
@if ($user == new stdClass()) @if ($user == new stdClass())
<div class="form-group row"> <div class="form-group row">
<div class="col-md-4 col-lg-3">名前</div> <div class="col-md-4 col-lg-3">名前</div>
<div class="input-group col-md col-lg"> <div class="input-group col-md col-lg">
<input type="text" name="new-name" class="form-control" value="" placeholder="ご入力しない場合、名前は「名無しのテクニシャン」になります。" /> <input type="text" name="newname" class="form-control" value="" placeholder="ご入力しない場合、名前は「名無しのテクニシャン」になります。" />
</div> </div>
</div> </div>
<div class="form-group row"> <div class="form-group row">
<div class="col-md-4 col-lg-3">メールアドレス</div> <div class="col-md-4 col-lg-3">メールアドレス</div>
<div class="input-group col-md col-lg"> <div class="input-group col-md col-lg">
<input type="text" name="new-mail" class="form-control" value="" placeholder="返信される場合、メールに通知を送ります。" /> <input type="text" name="newmail" class="form-control" value="" placeholder="返信される場合、メールに通知を送ります。" />
</div> </div>
</div> </div>
@else @else
@ -23,20 +24,24 @@
<a href="/profile/{{ $user['user_id'] }}" style="{{ $user['showcol'] }}"><img style="width: 24px; height: 24px;" src="{{ $user['avatar'] }}" alt="{{ $user['showname'] }}さんのアイコン`"> {{ $user['showname'] }}</a> <a href="/profile/{{ $user['user_id'] }}" style="{{ $user['showcol'] }}"><img style="width: 24px; height: 24px;" src="{{ $user['avatar'] }}" alt="{{ $user['showname'] }}さんのアイコン`"> {{ $user['showname'] }}</a>
</div> </div>
</div> </div>
<input type="hidden" name="user_id" value="{{ $user['user_id'] }}" />
@endif @endif
<div class="row"> <div class="row">
<div class="col-md-4 col-lg-3">本文 <span class="badge badge-danger">必須</span></div> <div class="col-md-4 col-lg-3">本文 <span class="badge badge-danger">必須</span></div>
<div class="col-md col-lg"> <div class="col-md col-lg">
<textarea class="form-control" name="new-message" rows="4"></textarea> <textarea class="form-control" name="newmessage" rows="4"></textarea>
</div> </div>
</div> </div>
<input type="hidden" name="isvideo" value="{{ $isvideo }}" />
<input type="hidden" name="slug" value="{{ $slug }}" />
<div class="row" style="margin-top: 16px;"> <div class="row" style="margin-top: 16px;">
<div class="col"> <div class="col">
<input type="submit" class="btn btn-block btn-primary" value="送信" /> <input type="submit" class="btn btn-block btn-primary" value="送信" />
</div> </div>
</div> </div>
</span> </form>
@endif @endif
<hr />
@if ($comment['total'] == 0) コメントがありません。 @if ($comment['total'] == 0) コメントがありません。
@else @else
@foreach ($comment['come'] as $i => $c) @foreach ($comment['come'] as $i => $c)

ファイルの表示

@ -0,0 +1,48 @@
<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" @if ($ip == 1) checked @endif />
<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" @if ($ip == 0) checked @endif />
<label class="form-check-label" for="type-page">ページ</label>
</div>
</div>
</div>
<div style="font-weight: bolder;">ポスト</div>
<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">
<option value="0" @if ($is == 0) selected @endif >公開</option>
<option value="1" @if ($is == 1) selected @endif >スケジュールを設定</option>
<option value="2" @if ($is == 2) selected @endif >限定公開</option>
<option value="3" @if ($is == 3) selected @endif >非公開</option>
<option value="4" @if ($is == 4) selected @endif >下書き</option>
</select>
</div>
</div>
<div style="font-weight: bold;">スケジュールの場合</div>
<div class="row body">
<div class="col-md-3"><b>公開日時</b></div>
<div class="col">
<?php
$pd = date('Y-m-d\TH:i', ($pd != 0 && is_int($pd) ? $pd : (is_string($pd) ? strtotime($pd) : time())));
$max = new \DateTime($pd);
$max = $max->modify('+1 year')->format('Y-m-d\TH:i');
?>
<input type="datetime-local" name="publish_date" id="publish_date" value="{{ date('Y-m-d\TH:i', strtotime($pd)) }}" min="{{ date('Y-m-d\TH:i', strtotime($pd)) }}" max="{{ date('Y-m-d\TH:i', strtotime($max)) }}" />
</div>
</div>
<div style="font-weight: bolder;">ページ</div>
<div class="row body">
<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" @if ($im) checked @endif />
<label class="form-check-label" for="menu">メニューに表示する</label>
</div>
</div>
</div>

ファイルの表示

@ -20,9 +20,7 @@
<div class="col-md-3"><b>スラッグ</b></div> <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 class="col"><input id="slug" name="slug" type="text" class="form-control" value="{{ $frm['slug'] }}" /></div>
</div> </div>
<div> @include('pages.common.contenttype', ['ip' => $frm['isPost'], 'is' => $frm['public_status'], 'pd' => $frm['publish_date'], 'im' => $frm['isMenu']])
<content-type p="{{$frm['public_status']}}" c="{{$frm['isPost']}}" d="{{$frm['publish_date']}}" m="{{$frm['isMenu']}}" />
</div>
<b>文章</b> <b>文章</b>
<div class="row body"> <div class="row body">
<div class="col"><textarea id="message" name="message" rows="16" class="form-control">{{ $frm['message'] }}</textarea></div> <div class="col"><textarea id="message" name="message" rows="16" class="form-control">{{ $frm['message'] }}</textarea></div>

ファイルの表示

@ -17,9 +17,7 @@
<div class="col"><input id="title" name="title" type="text" class="form-control" value="{{ $frm->title }}" /></div> <div class="col"><input id="title" name="title" type="text" class="form-control" value="{{ $frm->title }}" /></div>
</div> </div>
<div class="col"><input id="slug" name="slug" type="hidden" class="form-control" value="{{ $frm->slug }}" /></div> <div class="col"><input id="slug" name="slug" type="hidden" class="form-control" value="{{ $frm->slug }}" /></div>
<div> @include('pages.common.contenttype', ['ip' => $frm->isPost, 'is' => $frm->public_status, 'pd' => $frm->publish_date, 'im' => $frm->isMenu])
<content-type p="{{$frm->public_status}}" c="{{$frm->isPost}}" d="{{$frm->publish_date}}" m="{{$frm->isMenu}}" />
</div>
<b>文章</b> <b>文章</b>
<div class="row body"> <div class="row body">
<div class="col"><textarea id="message" name="message" rows="16" class="form-control">{{ $frm->message }}</textarea></div> <div class="col"><textarea id="message" name="message" rows="16" class="form-control">{{ $frm->message }}</textarea></div>

ファイルの表示

@ -8,18 +8,26 @@
<thead> <thead>
<tr> <tr>
<th scope="col" width="70%">ゲーム名</th> <th scope="col" width="70%">ゲーム名</th>
@if (isset($user->perm) && ($user->perm['blg_editpost'] || $user->perm['blg_delpost'])) @if (isset(getUser()->perm) && (getUser()->perm['blg_editpost'] || getUser()->perm['blg_delpost']))
<th scope="col"></th> <th scope="col"></th>
<th scope="col"></th> <th scope="col"></th>
@endif @endif
</tr> </tr>
</thead> </thead>
@foreach ($res as $k => $r) @foreach ($res as $k => $r)
<tr> <tr>
<td scope="row"><a href="/video/{{ $r->slug }}">{{ $r->name }}</a></td> <td scope="row"><a href="/video/{{ $r->slug }}">{{ $r->name }}</a></td>
@if (isset($user->perm) && ($user->perm['blg_editpost'] || $user->perm['blg_delpost'])) @if (isset(getUser()->perm) && (getUser()->perm['blg_editpost'] || getUser()->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}}/edit" class="btn btn-block btn-warning">編集</a></td>
<td scope="row"><delete-game slug="{{ $r->slug }}" /></td> <td scope="row">
<div class="col">
<form action="/game/del" method="post">
@csrf
<input type="hidden" name="slug" value="{{ $r->slug }}" />
<input type="submit" class="btn btn-block btn-danger" value="削除" />
</form>
</div>
</td>
@endif @endif
</tr> </tr>
@endforeach @endforeach

ファイルの表示

@ -1,13 +0,0 @@
<div class="row">
<div class="col-md" style="padding-bottom: 32px;">
<div class="within" style="background-color: #31363b;">
<div class="logo-br">
<span class="logo-sns"><a href="https://www.youtube.com/user/UltimatePisman" alt="ユーチューブ"><img src="/img/youtube.png" alt="ユーチューブのロゴ"/></a></span>
<span class="logo-sns"><a href="https://www.nicovideo.jp/user/14848316" alt="ニコニコ動画"><img src="/img/niconico.png" alt="ニコニコ動画のロゴ" /></a></span>
<span class="logo-sns"><a href="https://odysee.com/@TechnicalSuwako:d" alt="オディシー"><img src="/img/odysee.png" alt="オディシーのロゴ" /></a></span>
<span class="logo-sns"><a href="https://social.076.ne.jp/TechnicalSuwako" alt="マストドン"><img src="/img/mastodon.png" alt="マストドンのロゴ" /></a></span>
<span class="logo-sns"><a href="https://matrix.to/#/!larmrZSQCaOLueeHdI:matrix.076.ne.jp" alt="マトリックス"><img src="/img/matrix.png" alt="マトリックスのロゴ" /></a></span>
</div>
</div>
</div>
</div>

ファイルの表示

@ -2,7 +2,7 @@
<meta name="msapplication-TileColor" content="#3daee9"> <meta name="msapplication-TileColor" content="#3daee9">
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png"> <meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
<meta name="theme-color" content="#3daee9"> <meta name="theme-color" content="#3daee9">
<link rel="stylesheet" href="{{ asset('css/bootstrap.css') }}"/> <link rel="stylesheet" href="{{ asset('css/'.env('THEME').'/bootstrap.css') }}"/>
@foreach (getCss() as $c) @foreach (getCss() as $c)
<link href="{{ asset('css/'.$c.'.css') }}" rel="stylesheet"> <link href="{{ asset('css/'.env('THEME').'/'.$c.'.css') }}" rel="stylesheet">
@endforeach @endforeach

ファイルの表示

@ -4,7 +4,13 @@
<div class="col"><a href="/content/{{ $current }}/edit" class="btn btn-block btn-warning">投稿の編集</a></div> <div class="col"><a href="/content/{{ $current }}/edit" class="btn btn-block btn-warning">投稿の編集</a></div>
@endif @endif
@if ($current != '' && $slug != '' && $slug == $current && ($user->perm['blg_delpost'] || $user->perm['blg_delpage'])) @if ($current != '' && $slug != '' && $slug == $current && ($user->perm['blg_delpost'] || $user->perm['blg_delpage']))
<delete-content slug="{{ $current }}" /> <div class="col">
<form action="/content/del" method="post">
@csrf
<input type="hidden" name="slug" value="{{ $current }}" />
<input type="submit" class="btn btn-block btn-danger" value="投稿の削除" />
</form>
</div>
@endif @endif
</div> </div>
@endif @endif

ファイルの表示

@ -4,7 +4,13 @@
<div class="col"><a href="/video/{{ $current }}/edit" class="btn btn-block btn-warning">動画の編集</a></div> <div class="col"><a href="/video/{{ $current }}/edit" class="btn btn-block btn-warning">動画の編集</a></div>
@endif @endif
@if ($current != '' && $slug != '' && $slug == $current && $user->perm['blg_delpost']) @if ($current != '' && $slug != '' && $slug == $current && $user->perm['blg_delpost'])
<delete-video slug="{{ $current }}" /> <div class="col">
<form action="/video/del" method="post">
@csrf
<input type="hidden" name="slug" value="{{ $current }}" />
<input type="submit" class="btn btn-block btn-danger" value="動画の削除" />
</form>
</div>
@endif @endif
</div> </div>
@endif @endif

ファイルの表示

@ -1,6 +1,6 @@
<div class="row" style="padding: 32px 0;"> <div class="row" style="padding: 32px 0;">
<div class="col"> <div class="col">
<img class="img-fluid logo-img" src="/img/header.jpg" alt="ヘッダー" /> <img class="img-fluid logo-img" src="/img/header.jpeg" alt="ヘッダー" />
<div class="logo-c">テクニカル諏訪子</div> <div class="logo-c">テクニカル諏訪子</div>
</div> </div>
</div> </div>

ファイルの表示

@ -1,77 +0,0 @@
//
//// メイン
$suwa00: #f1d0ff;
$suwa01: #e4b4f8;
$suwa02: #d898f3;
$suwa03: #cb81ea;
$suwa04: #b16cce;
$suwa05: #a05ebd;
$suwa06: #9b59b6;
$suwa07: #61237c;
$suwa08: #46195a;
$suwa09: #341242;
$suwa10: #220a2c;
$evil0: #916ead;
$evil1: #6b4386;
$evil2: #5d2b8b;
$evil3: #6c29b9;
$evil4: #57229c;
$evil5: #51047d;
$evil6: #2d1a46;
////
$dan1: #9ed6ff;
$dan2: #3daee9;
$dan3: #1d99f3;
$dan4: #205e7d;
////
$ng1: #f58276;
$ng2: #da4453;
$ng3: #e74c3c;
$ng4: #ff3636;
$ng5: #ed1515;
$ng6: #c0392b;
$ng7: #611e24;
//// グレ
$grey1: #d6dfe4;
$grey2: #bdc3c7;
$grey3: #7f8c8d;
$grey4: #727272;
$grey5: #495051;
////
$black1: #232629;
$black2: #31363b;
$black3: #4d4d4d;
////
$yellow1: #c9ce3b;
$yellow2: #ffdd00;
$yellow3: #fdbc4b;
$yellow4: #f39c1f;
$yellow5: #f67400;
////
$white1: #fcfcfc;
$white2: #eff0f1;
//// ピンク
$jo1: #ffe6f9;
$jo2: #e93de9;
$jo3: #f31de8;
$jo4: #7d2069;
////
$ok1: #20ec77;
$ok2: #2ecc71;
$ok3: #11d116;
$ok4: #27ae60;
$ok5: #145d33;
////
$kawaii1: #cb81ea;
$kawaii2: #9b59b6;
$kawaii3: #61237c;

ファイルの表示

@ -1,21 +0,0 @@
//
//// メイン
$suwa00: #ffe6f9;
$suwa01: #e599e5;
$suwa02: #ea81e8;
$suwa03: #e93de9;
$suwa04: #f31de8;
$suwa05: #ea00ff;
$suwa06: #db34d3;
$suwa07: #b459b6;
$suwa08: #7d2069;
$suwa09: #502c50;
$suwa10: #5e345c;
$evil0: #ad6ea8;
$evil1: #864386;
$evil2: #832b8b;
$evil3: #b929ad;
$evil4: #9c2296;
$evil5: #7d0469;
$evil6: #421a46;

ファイルの表示

@ -1,21 +0,0 @@
//
//// メイン
$suwa00: #9ed6ff;
$suwa01: #8bb6d6;
$suwa02: #6ec0fb;
$suwa03: #3daee9;
$suwa04: #1d99f3;
$suwa05: #0094ff;
$suwa06: #3498db;
$suwa07: #2980b9;
$suwa08: #205e7d;
$suwa09: #2c3e50;
$suwa10: #34495e;
$evil0: #6e93ad;
$evil1: #436a86;
$evil2: #2b6b8b;
$evil3: #2980b9;
$evil4: #22699c;
$evil5: #04547d;
$evil6: #1a3746;

ファイルの表示

@ -1,19 +0,0 @@
#app {
font-family: monospace;
font-size: large;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: left;
margin-top: 48px;
margin-left: 0px;
}
body {
font-family: 'jpserriffont';
text-align: center;
color: #fcfcfc;
background-color: #232629;
}
a { color: #b16cce; }
a:hover { color: #cb81ea; }

ファイルの表示

@ -1,2 +0,0 @@
a { color: #f31de8; }
a:hover { color: #e93de9; }

ファイルの表示

@ -1,2 +0,0 @@
a { color: #1d99f3; }
a:hover { color: #3daee9; }

ファイルの表示

@ -1,3 +0,0 @@
.badge-danger { color: #fff; background-color: #dc3545; }
.badge-light { color: #212529; background-color: #f8f9fa; }
.badge { font-size: 100%; }

ファイルの表示

ファイルの表示

ファイルの表示

@ -1,165 +0,0 @@
.btn, btn:hover {
margin: 0 2px;
border: 2px solid;
}
.btn {
border-left-color: #fcfcfc;
border-top-color: #fcfcfc;
}
.btn:hover {
border-left-color: #7f8c8d;
border-top-color: #7f8c8d;
}
.btn-fumei, .btn-fumei.disabled, .btn-fumei:disabled {
background: radial-gradient(ellipse at top, #61237c, transparent), radial-gradient(ellipse at bottom, #232629, transparent);
color: #fcfcfc;
background-color: #9b59b6;
border-bottom-color: #cb81ea;
border-right-color: #cb81ea;
}
.btn-fumei:hover {
color: #fcfcfc;
background-color: #61237c;
border-color: transparent;
border-bottom-color: #9b59b6;
border-right-color: #9b59b6;
}
.btn-fumei-check {
color: #fcfcfc;
background-color: #61237c;
border-color: transparent;
border-bottom-color: #9b59b6;
border-right-color: #9b59b6;
box-shadow: 0px 0px 7px 3px #9b59b6;
}
.btn-danshi, .btn-danshi.disabled, .btn-danshi:disabled {
background: radial-gradient(ellipse at top, #3daee9, transparent), radial-gradient(ellipse at bottom, #232629, transparent);
color: #fcfcfc;
background-color: #fcfcfc;
border-bottom-color: #9ed6ff;
border-right-color: #9ed6ff;
}
.btn-danshi:hover {
color: #fcfcfc;
background-color: #205e7d;
border-color: transparent;
border-bottom-color: #1d99f3;
border-right-color: #1d99f3;
}
.btn-danshi-check {
color: #fcfcfc;
background-color: #205e7d;
border-color: transparent;
border-bottom-color: #1d99f3;
border-right-color: #1d99f3;
box-shadow: 0px 0px 7px 3px #1d99f3;
}
.btn-joshi, .btn-joshi.disabled, .btn-joshi:disabled {
background: radial-gradient(ellipse at top, #e93de9, transparent), radial-gradient(ellipse at bottom, #232629, transparent);
color: #fcfcfc;
background-color: #fcfcfc;
border-bottom-color: #ffe6f9;
border-right-color: #ffe6f9;
}
.btn-joshi:hover {
color: #fcfcfc;
background-color: #7d2069;
border-color: transparent;
border-bottom-color: #f31de8;
border-right-color: #f31de8;
}
.btn-joshi-check {
color: #fcfcfc;
background-color: #7d2069;
border-color: transparent;
border-bottom-color: #f31de8;
border-right-color: #f31de8;
box-shadow: 0px 0px 7px 3px #f31de8;
}
.btn-primary, .btn-primary.disabled, .btn-primary:disabled {
background: radial-gradient(ellipse at top, #cb81ea, transparent), radial-gradient(ellipse at bottom, #232629, transparent);
color: #fcfcfc;
border-bottom-color: #f1d0ff;
border-right-color: #f1d0ff;
}
.btn-primary:hover {
color: #fcfcfc;
background-color: #46195a;
border-color: transparent;
border-bottom-color: #b16cce;
border-right-color: #b16cce;
}
.btn-secondary, .btn-secondary.disabled, .btn-secondary:disabled {
background: radial-gradient(ellipse at top, #7f8c8d, transparent), radial-gradient(ellipse at bottom, #232629, transparent);
color: #fcfcfc;
border-bottom-color: #d6dfe4;
border-right-color: #d6dfe4;
}
.btn-secondary:hover {
color: #fcfcfc;
background-color: #495051;
border-color: transparent;
border-bottom-color: #bdc3c7;
border-right-color: #bdc3c7;
}
.btn-success, .btn-success.disabled, .btn-success:disabled, .alert-success {
background: radial-gradient(ellipse at top, #2ecc71, transparent), radial-gradient(ellipse at bottom, #232629, transparent);
color: #fcfcfc;
border-bottom-color: #20ec77;
border-right-color: #20ec77;
}
.btn-success:hover {
color: #fcfcfc;
background-color: #145d33;
border-color: transparent;
border-bottom-color: #27ae60;
border-right-color: #27ae60;
}
.btn-danger, .btn-danger.disabled, .btn-danger:disabled, .alert-danger {
background: radial-gradient(ellipse at top, #e74c3c, transparent), radial-gradient(ellipse at bottom, #232629, transparent);
color: #fcfcfc;
border-bottom-color: #f58276;
border-right-color: #f58276;
}
.btn-danger:hover {
color: #fcfcfc;
background-color: #611e24;
border-color: transparent;
border-bottom-color: #e74c3c;
border-right-color: #e74c3c;
}
.btn-warning, .btn-warning.disabled, .btn-warning:disabled, .alert-warning {
background: radial-gradient(ellipse at top, #fdbc4b, transparent), radial-gradient(ellipse at bottom, #232629, transparent);
color: #fcfcfc;
border-bottom-color: #c9ce3b;
border-right-color: #c9ce3b;
}
.btn-warning:hover {
color: #fcfcfc;
background-color: #f67400;
border-color: transparent;
border-bottom-color: #fdbc4b;
border-right-color: #fdbc4b;
}

ファイルの表示

@ -1,11 +0,0 @@
.btn-primary, .btn-primary.disabled, .btn-primary:disabled {
background: radial-gradient(ellipse at top, #e93de9, transparent), radial-gradient(ellipse at bottom, #232629, transparent);
border-bottom-color: #ffe6f9;
border-right-color: #ffe6f9;
}
.btn-primary:hover {
background-color: #7d2069;
border-bottom-color: #f31de8;
border-right-color: #f31de8;
}

ファイルの表示

@ -1,11 +0,0 @@
.btn-primary, .btn-primary.disabled, .btn-primary:disabled {
background: radial-gradient(ellipse at top, #3daee9, transparent), radial-gradient(ellipse at bottom, #232629, transparent);
border-bottom-color: #9ed6ff;
border-right-color: #9ed6ff;
}
.btn-primary:hover {
background-color: #205e7d;
border-bottom-color: #1d99f3;
border-right-color: #1d99f3;
}

ファイルの表示

@ -1,4 +0,0 @@
.custom-control-input:checked ~ .custom-control-label::before,
.custom-radio .custom-control-input:checked ~ .custom-control-label::before,
.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before
{ color: #fcfcfc; background-color: #cb81ea; border-color: #b16cce; }

ファイルの表示

@ -1,4 +0,0 @@
.custom-control-input:checked ~ .custom-control-label::before,
.custom-radio .custom-control-input:checked ~ .custom-control-label::before,
.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before
{ background-color: #e93de9; border-color: #f31de8; }

ファイルの表示

@ -1,4 +0,0 @@
.custom-control-input:checked ~ .custom-control-label::before,
.custom-radio .custom-control-input:checked ~ .custom-control-label::before,
.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before
{ background-color: #3daee9; border-color: #1d99f3; }

ファイルの表示

@ -1,5 +0,0 @@
.fn { font-size: 16px; font-style: normal; color: #20ec77; }
.comment-meta a { color: #bdc3c7; }
.commentlist p { margin: 0 0 10px; padding: 10px 0 40px 0; font-size: 20px; }
.commentnumber { float: left; margin-right: 5px; font-size: 16px; }
ul { list-style: none; }

ファイルの表示

ファイルの表示

ファイルの表示

@ -1,41 +0,0 @@
.bar { background: linear-gradient(to bottom, #57229c 0%, #6b4386 34%, #2d1a46 100%); }
.bara { background: linear-gradient(180deg, #a05ebd 0, #e4b4f8 34%, #51047d 100%); }
.bar, .bara {
text-align: center;
color: #fcfcfc;
padding: 5px;
font-size: 20px;
border-bottom: solid 2px #cb81ea;
cursor: pointer;
transition: background 0.3s, color 0.3s;
}
.bar > a { color: #fcfcfc; }
.bar > a:hover { text-decoration: none; }
.bar:hover { color: #fcfcfc; background: linear-gradient(to bottom, #6c29b9 0%, #916ead 34%, #5d2b8b 100%); }
.indexborder { border: 2px solid #cb81ea; box-shadow: 0px 0px 7px 3px #b16cce; padding: 8px; background-color: #232629; }
.meta { padding: 5px; text-align: left; background-color: #341242; border-bottom: solid 2px #cb81ea; }
.comment { border-top: solid 2px #cb81ea; }
.back, .comment { padding: 4px; background-color: #31363b; text-align: left; }
.commentloop { padding: 10px 4px 40px 4px; }
.commentloop > .name { color: #11d116; }
.within { margin: 0 auto; border: 2px solid #cb81ea; box-shadow: 0px 0px 7px 3px #b16cce; }
.wny { border: solid 2px #ed1515; box-shadow: 0px 0px 20px 10px #ff3636; }
.bny, .cny { background-color: #da4453; border-bottom: solid 2px #ed1515; }
.mny { background-color: #c0392b; border-bottom: solid 2px #ed1515; }
.kero-section {
width: 100%;
font-size: 150%;
font-weight: bolder;
text-align: center;
padding: 4px;
margin: 8px 0;
background: linear-gradient(to bottom, #cb81ea 0%, #57229c 34%, #d898f3 100%);
color: #fcfcfc;
border-bottom-color: #f1d0ff;
border-right-color: #f1d0ff;
border-bottom-color: #f1d0ff;
border-right-color: #f1d0ff;
border-width: 1px;
border-radius: 25px;
cursor: default;
}

ファイルの表示

@ -1,9 +0,0 @@
.bar { background: linear-gradient(to bottom, #9c2296 0%, #864386 34%, #421a46 100%); }
.bara { background: linear-gradient(180deg, #ea00ff 0, #e599e5 34%, #7d0469 100%); }
.bar, .bara { border-bottom: solid 2px #e93de9; }
.bar:hover { background: linear-gradient(to bottom, #b929ad 0%, #ad6ea8 34%, #832b8b 100%); }
.indexborder { border: 2px solid #e93de9; box-shadow: 0px 0px 7px 3px #f31de8; }
.meta { background-color: #502c50; border-bottom: solid 2px #e93de9; }
.comment { border-top: solid 2px #e93de9; }
.within { border: 2px solid #e93de9; box-shadow: 0px 0px 7px 3px #f31de8; }
.kero-section { background: linear-gradient(to bottom, #e93de9 0%, #9c2296 34%, #ea81e8 100%); border-bottom-color: #ffe6f9; border-right-color: #ffe6f9; border-bottom-color: #ffe6f9; border-right-color: #ffe6f9; }

ファイルの表示

@ -1,9 +0,0 @@
.bar { background: linear-gradient(to bottom, #22699c 0%, #436a86 34%, #1a3746 100%); }
.bara { background: linear-gradient(180deg, #0094ff 0, #8bb6d6 34%, #04547d 100%); }
.bar, .bara { border-bottom: solid 2px #3daee9; }
.bar:hover { background: linear-gradient(to bottom, #2980b9 0%, #6e93ad 34%, #2b6b8b 100%); }
.indexborder { border: 2px solid #3daee9; box-shadow: 0px 0px 7px 3px #1d99f3; }
.meta { background-color: #2c3e50; border-bottom: solid 2px #3daee9; }
.comment { border-top: solid 2px #3daee9; }
.within { border: 2px solid #3daee9; box-shadow: 0px 0px 7px 3px #1d99f3; }
.kero-section { background: linear-gradient(to bottom, #3daee9 0%, #22699c 34%, #6ec0fb 100%); border-bottom-color: #9ed6ff; border-right-color: #9ed6ff; border-bottom-color: #9ed6ff; border-right-color: #9ed6ff; }

ファイルの表示

@ -1,4 +0,0 @@
.form-control, .form-control:focus { background-color: #232629; color: #fcfcfc; }
.form-control { border: 1px solid #220a2c; }
.form-control:focus { border: 1px solid #cb81ea; }
.form-control:disabled, .form-control[readonly] { background-color: #232629; }

ファイルの表示

@ -1,2 +0,0 @@
.form-control { border: 1px solid #5e345c; }
.form-control:focus { border: 1px solid #e93de9; }

変更されたファイルが多すぎるため、一部のファイルは表示されません さらに表示