Browse Source

dev-master
テクニカル諏訪子 3 months ago
parent
commit
e61ba26d1c
  1. 25
      .env.example
  2. 9
      app/Http/Controllers/Home/Comment.php
  3. 74
      app/Http/Controllers/Home/Content.php
  4. 12
      app/Http/Controllers/Video/Prayer.php
  5. 0
      public/css/techsuwa/_variables.scss
  6. 0
      public/css/techsuwa/_variables_f.scss
  7. 0
      public/css/techsuwa/_variables_m.scss
  8. 0
      public/css/techsuwa/app.css
  9. 0
      public/css/techsuwa/app_f.css
  10. 0
      public/css/techsuwa/app_m.css
  11. 0
      public/css/techsuwa/badge.css
  12. 0
      public/css/techsuwa/badge_f.css
  13. 0
      public/css/techsuwa/badge_m.css
  14. 0
      public/css/techsuwa/bootstrap.css
  15. 0
      public/css/techsuwa/button.css
  16. 0
      public/css/techsuwa/button_f.css
  17. 0
      public/css/techsuwa/button_m.css
  18. 0
      public/css/techsuwa/check.css
  19. 0
      public/css/techsuwa/check_f.css
  20. 0
      public/css/techsuwa/check_m.css
  21. 0
      public/css/techsuwa/comments.css
  22. 0
      public/css/techsuwa/comments_f.css
  23. 0
      public/css/techsuwa/comments_m.css
  24. 0
      public/css/techsuwa/contents.css
  25. 0
      public/css/techsuwa/contents_f.css
  26. 0
      public/css/techsuwa/contents_m.css
  27. 0
      public/css/techsuwa/form.css
  28. 0
      public/css/techsuwa/form_f.css
  29. 0
      public/css/techsuwa/form_m.css
  30. 0
      public/css/techsuwa/jpserriffont.css
  31. 0
      public/css/techsuwa/jpserriffont_f.css
  32. 0
      public/css/techsuwa/jpserriffont_m.css
  33. 0
      public/css/techsuwa/logo.css
  34. 0
      public/css/techsuwa/logo_f.css
  35. 0
      public/css/techsuwa/logo_m.css
  36. 0
      public/css/techsuwa/modal.css
  37. 0
      public/css/techsuwa/modal_f.css
  38. 0
      public/css/techsuwa/modal_m.css
  39. 0
      public/css/techsuwa/navbar.css
  40. 0
      public/css/techsuwa/navbar_f.css
  41. 0
      public/css/techsuwa/navbar_m.css
  42. 0
      public/css/techsuwa/pagination.css
  43. 0
      public/css/techsuwa/pagination_f.css
  44. 0
      public/css/techsuwa/pagination_m.css
  45. 0
      public/css/techsuwa/popper.js
  46. 0
      public/css/techsuwa/scroll.css
  47. 0
      public/css/techsuwa/scroll_f.css
  48. 0
      public/css/techsuwa/scroll_m.css
  49. 0
      public/css/techsuwa/select.css
  50. 0
      public/css/techsuwa/select_f.css
  51. 0
      public/css/techsuwa/select_m.css
  52. 0
      public/css/techsuwa/sidemenu.css
  53. 0
      public/css/techsuwa/sidemenu_f.css
  54. 0
      public/css/techsuwa/sidemenu_m.css
  55. 0
      public/css/techsuwa/table.css
  56. 0
      public/css/techsuwa/table_f.css
  57. 0
      public/css/techsuwa/table_m.css
  58. BIN
      public/img/header.jpeg
  59. 78937
      public/js/app.js
  60. 1
      resources/js/app.js
  61. 42
      resources/js/bootstrap.js
  62. 150
      resources/js/components/comments.vue
  63. 76
      resources/js/components/contenttype.vue
  64. 230
      resources/js/components/deletecontent.vue
  65. 230
      resources/js/components/deletegame.vue
  66. 230
      resources/js/components/deletevideo.vue
  67. 27
      resources/js/components/gender.vue
  68. 15
      resources/views/pages/common/comments.blade.php
  69. 48
      resources/views/pages/common/contenttype.blade.php
  70. 4
      resources/views/pages/site/content/add.blade.php
  71. 4
      resources/views/pages/site/content/edit.blade.php
  72. 20
      resources/views/pages/site/video/game/all.blade.php
  73. 13
      resources/views/theme/techsuwa/component/appbar.blade.php
  74. 4
      resources/views/theme/techsuwa/component/colors.blade.php
  75. 8
      resources/views/theme/techsuwa/component/contentedit/content.blade.php
  76. 8
      resources/views/theme/techsuwa/component/contentedit/video.blade.php
  77. 2
      resources/views/theme/techsuwa/component/header.blade.php
  78. 77
      resources/views/theme/techsuwa/css/_variables.scss
  79. 21
      resources/views/theme/techsuwa/css/_variables_f.scss
  80. 21
      resources/views/theme/techsuwa/css/_variables_m.scss
  81. 19
      resources/views/theme/techsuwa/css/app.css
  82. 2
      resources/views/theme/techsuwa/css/app_f.css
  83. 2
      resources/views/theme/techsuwa/css/app_m.css
  84. 3
      resources/views/theme/techsuwa/css/badge.css
  85. 0
      resources/views/theme/techsuwa/css/badge_f.css
  86. 0
      resources/views/theme/techsuwa/css/badge_m.css
  87. 165
      resources/views/theme/techsuwa/css/button.css
  88. 11
      resources/views/theme/techsuwa/css/button_f.css
  89. 11
      resources/views/theme/techsuwa/css/button_m.css
  90. 4
      resources/views/theme/techsuwa/css/check.css
  91. 4
      resources/views/theme/techsuwa/css/check_f.css
  92. 4
      resources/views/theme/techsuwa/css/check_m.css
  93. 5
      resources/views/theme/techsuwa/css/comments.css
  94. 0
      resources/views/theme/techsuwa/css/comments_f.css
  95. 0
      resources/views/theme/techsuwa/css/comments_m.css
  96. 41
      resources/views/theme/techsuwa/css/contents.css
  97. 9
      resources/views/theme/techsuwa/css/contents_f.css
  98. 9
      resources/views/theme/techsuwa/css/contents_m.css
  99. 4
      resources/views/theme/techsuwa/css/form.css
  100. 2
      resources/views/theme/techsuwa/css/form_f.css

25
.env.example

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

9
app/Http/Controllers/Home/Comment.php

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

74
app/Http/Controllers/Home/Content.php

@ -31,33 +31,24 @@ class Content extends Engine {
);
if (isset($r->submit)) {
// JS→HTML→PHPの修正
// 一応修正
$sav = $r->publish_date;
if (is_null($r->public_status)) $r->public_status = 0;
$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)) {
$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;
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();
if (is_null($r->isMenu)) $r->isMenu = false;
if ($r->isMenu == 'on') $r->isMenu = true;
else $r->isMenu = false;
$r->isMenu = (int)$r->isMenu;
if (!is_null($r->publish_date)) $r->publish_date = strtotime($r->publish_date);
else $r->publish_date = time();
// フォームの値を保存して
$frm['title'] = $r->title;
$frm['slug'] = $r->slug;
$frm['public_status'] = $r->public_status;
$frm['publish_date'] = $r->publish_date;
$frm['isMenu'] = $r->isMenu;
$frm['isPost'] = $r->isPost;
$frm['isMenu'] = (int)!is_null($r->isMenu) && $r->isMenu == 'on';
$frm['isPost'] = (int)!is_null($r->isPost) && $r->isPost == 'on';
$frm['message'] = $r->message;
// 件名、文章又はスラッグがなければ、エラーを出て
@ -77,15 +68,17 @@ class Content extends Engine {
else {
// データベースに追加できるには、値を修正して
$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->isPost)) $frm['isPost'] = 0;
if (!isset($r->isMenu)) $frm['isMenu'] = 0;
$frm['post_date'] = ($r->isPost == 1 ? time() : 0);
$frm['sortorder'] = ($r->isPost == 0 ? $gs->sortorder+1 : 0);
$frm['isPost'] = (int)$frm['isPost'];
$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 {
// やれやれ…
$frm['publish_date'] = $sav;
@ -105,10 +98,10 @@ class Content extends Engine {
public function delete (Request $r) {
$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)) {
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) {
@ -119,32 +112,23 @@ class Content extends Engine {
$res = '';
if (isset($r->submit)) {
// JS→HTML→PHPの修正
// 一応修正
$sav = $r->publish_date;
if (is_null($r->public_status)) $r->public_status = 0;
$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)) {
$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;
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();
if (is_null($r->isMenu)) $r->isMenu = false;
if ($r->isMenu == 'on') $r->isMenu = true;
else $r->isMenu = false;
$r->isMenu = (int)$r->isMenu;
if (!is_null($r->publish_date)) $r->publish_date = strtotime($r->publish_date);
else $r->publish_date = time();
// フォームの値を保存して
$frm->title = $r->title;
$frm->public_status = $r->public_status;
$frm->publish_date = $r->publish_date;
$frm->isMenu = $r->isMenu;
$frm->isPost = $r->isPost;
$frm->isMenu = (int)!is_null($r->isMenu) && $r->isMenu == 'on';
$frm->isPost = (int)!is_null($r->isPost) && $r->isPost == 'on';
$frm->message = $r->message;
// 件名、文章又はスラッグがなければ、エラーを出て
@ -158,15 +142,17 @@ class Content extends Engine {
else {
// データベースに追加できるには、値を修正して
$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->isPost)) $frm->isPost = 0;
if (!isset($r->isMenu)) $frm->isMenu = 0;
$frm->post_date = ($r->isPost == 1 ? time() : 0);
$frm->sortorder = ($r->isPost == 0 ? $gs->sortorder+1 : 0);
$frm->isPost = (int)$frm->isPost;
$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 {
// やれやれ…
$frm->publish_date = $sav;

12
app/Http/Controllers/Video/Prayer.php

@ -42,14 +42,14 @@ class Prayer extends Engine {
$res->kvcomment = array();
$kvslug = explode('/', $res->kerotube);
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);
$res->nicocomment = array();
$res->bccomment = 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) {
$c->replyCount = 0;
@ -88,10 +88,10 @@ class Prayer extends Engine {
return view('pages.site.video.prayer', ['res' => $res, 'user' => $this->user]);
}
function getKeroCome ($slug, $tslug) {
function getPeerCome ($slug, $tslug) {
$come = [];
$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_RETURNTRANSFER, 1);
@ -119,7 +119,7 @@ class Prayer extends Engine {
$g->comments->id = $g->id;
$g->comments->name = $g->account->displayName;
$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->createdTS = 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;
}
function backupKeroComment ($slug, $com) {
function backupPeerComment ($slug, $com) {
foreach ($com['come'] as $c) {
$icon = strstr($c->icon, 'avatars/');
$icon = str_replace('avatars/', '', $icon);

0
public/css/_variables.scss → public/css/techsuwa/_variables.scss

0
public/css/_variables_f.scss → public/css/techsuwa/_variables_f.scss

0
public/css/_variables_m.scss → public/css/techsuwa/_variables_m.scss

0
public/css/app.css → public/css/techsuwa/app.css

0
public/css/app_f.css → public/css/techsuwa/app_f.css

0
public/css/app_m.css → public/css/techsuwa/app_m.css

0
public/css/badge.css → public/css/techsuwa/badge.css

0
public/css/badge_f.css → public/css/techsuwa/badge_f.css

0
public/css/badge_m.css → public/css/techsuwa/badge_m.css

0
public/css/bootstrap.css → public/css/techsuwa/bootstrap.css

0
public/css/button.css → public/css/techsuwa/button.css

0
public/css/button_f.css → public/css/techsuwa/button_f.css

0
public/css/button_m.css → public/css/techsuwa/button_m.css

0
public/css/check.css → public/css/techsuwa/check.css

0
public/css/check_f.css → public/css/techsuwa/check_f.css

0
public/css/check_m.css → public/css/techsuwa/check_m.css

0
public/css/comments.css → public/css/techsuwa/comments.css

0
public/css/comments_f.css → public/css/techsuwa/comments_f.css

0
public/css/comments_m.css → public/css/techsuwa/comments_m.css

0
public/css/contents.css → public/css/techsuwa/contents.css

0
public/css/contents_f.css → public/css/techsuwa/contents_f.css

0
public/css/contents_m.css → public/css/techsuwa/contents_m.css

0
public/css/form.css → public/css/techsuwa/form.css

0
public/css/form_f.css → public/css/techsuwa/form_f.css

0
public/css/form_m.css → public/css/techsuwa/form_m.css

0
public/css/jpserriffont.css → public/css/techsuwa/jpserriffont.css

0
public/css/jpserriffont_f.css → public/css/techsuwa/jpserriffont_f.css

0
public/css/jpserriffont_m.css → public/css/techsuwa/jpserriffont_m.css

0
public/css/logo.css → public/css/techsuwa/logo.css

0
public/css/logo_f.css → public/css/techsuwa/logo_f.css

0
public/css/logo_m.css → public/css/techsuwa/logo_m.css

0
public/css/modal.css → public/css/techsuwa/modal.css

0
public/css/modal_f.css → public/css/techsuwa/modal_f.css

0
public/css/modal_m.css → public/css/techsuwa/modal_m.css

0
public/css/navbar.css → public/css/techsuwa/navbar.css

0
public/css/navbar_f.css → public/css/techsuwa/navbar_f.css

0
public/css/navbar_m.css → public/css/techsuwa/navbar_m.css

0
public/css/pagination.css → public/css/techsuwa/pagination.css

0
public/css/pagination_f.css → public/css/techsuwa/pagination_f.css

0
public/css/pagination_m.css → public/css/techsuwa/pagination_m.css

0
public/css/popper.js → public/css/techsuwa/popper.js

0
public/css/scroll.css → public/css/techsuwa/scroll.css

0
public/css/scroll_f.css → public/css/techsuwa/scroll_f.css

0
public/css/scroll_m.css → public/css/techsuwa/scroll_m.css

0
public/css/select.css → public/css/techsuwa/select.css

0
public/css/select_f.css → public/css/techsuwa/select_f.css

0
public/css/select_m.css → public/css/techsuwa/select_m.css

0
public/css/sidemenu.css → public/css/techsuwa/sidemenu.css

0
public/css/sidemenu_f.css → public/css/techsuwa/sidemenu_f.css

0
public/css/sidemenu_m.css → public/css/techsuwa/sidemenu_m.css

0
public/css/table.css → public/css/techsuwa/table.css

0
public/css/table_f.css → public/css/techsuwa/table_f.css

0
public/css/table_m.css → public/css/techsuwa/table_m.css

BIN
public/img/header.jpeg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 220 KiB

78937
public/js/app.js

File diff suppressed because one or more lines are too long

1
resources/js/app.js

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

42
resources/js/bootstrap.js

@ -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
// });

150
resources/js/components/comments.vue

@ -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>

76
resources/js/components/contenttype.vue

@ -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>

230
resources/js/components/deletecontent.vue

@ -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>

230
resources/js/components/deletegame.vue

@ -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>

230
resources/js/components/deletevideo.vue

@ -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>

27
resources/js/components/gender.vue

@ -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>

15
resources/views/pages/common/comments.blade.php

@ -2,18 +2,19 @@
<h3 class="comments-count section-heading uppercase"><span>{{ $comment['total'] }} 件のコメント</span></h3>
<div style="margin: 12px 0;">
@if ($isvideo !== 'n')
<hr />
<form action="/comment/new" method="post">
@csrf
@if ($user == new stdClass())
<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" name="new-name" class="form-control" value="" placeholder="ご入力しない場合、名前は「名無しのテクニシャン」になります。" />
<input type="text" name="newname" class="form-control" value="" 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" name="new-mail" class="form-control" value="" placeholder="返信される場合、メールに通知を送ります。" />
<input type="text" name="newmail" class="form-control" value="" placeholder="返信される場合、メールに通知を送ります。" />
</div>
</div>
@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>
</div>
</div>
<input type="hidden" name="user_id" value="{{ $user['user_id'] }}" />
@endif
<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" name="new-message" rows="4"></textarea>
<textarea class="form-control" name="newmessage" rows="4"></textarea>
</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="col">
<input type="submit" class="btn btn-block btn-primary" value="送信" />
</div>
</div>
</span>
</form>
@endif
<hr />
@if ($comment['total'] == 0) コメントがありません。
@else
@foreach ($comment['come'] as $i => $c)

48
resources/views/pages/common/contenttype.blade.php

@ -0,0 +1,48 @@
<div class="row body">
<div class="col-md-3"><b>種類</b></div>
<</