You've already forked lubo_comment_query
							
							添加建设内容
This commit is contained in:
		
							
								
								
									
										35
									
								
								app/Http/Controllers/ProgramConstructController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								app/Http/Controllers/ProgramConstructController.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| <?php | ||||
| 
 | ||||
| namespace App\Http\Controllers; | ||||
| 
 | ||||
| use App\Models\Programs; | ||||
| use Illuminate\Http\Request; | ||||
| use Illuminate\Routing\Controller as BaseController; | ||||
| 
 | ||||
| class ProgramConstructController extends BaseController | ||||
| { | ||||
|     public function construct(Request $request) { | ||||
|         $keyword = $request->get("keyword", ""); | ||||
|         $programs = Programs::query()->with(["appends", "video_pivots.video"])->where("status", "=", 0)->limit(15)->orderByDesc("created_at")->get(); | ||||
|         return view("program.construct.index", [ | ||||
|             "keyword" => $keyword, | ||||
|             "programs"=>$programs, | ||||
|         ]); | ||||
|     } | ||||
| 
 | ||||
|     public function edit(Request $request, Programs $program) { | ||||
|         return view("program.construct.create", [ | ||||
|             "program"=>$program | ||||
|         ]); | ||||
|     } | ||||
| 
 | ||||
|     public function submit(Request $request, Programs $program) { | ||||
|         $updatePayload = $request->only(["name", "difficulty", "desc"]); | ||||
|         $program->status = $request->post("status", 0); | ||||
|         $program->created_at = $request->post("created_at"); | ||||
|         $program->update($updatePayload); | ||||
|         return view("program.construct.create", [ | ||||
|             "program"=>$program | ||||
|         ]); | ||||
|     } | ||||
| } | ||||
| @@ -10,8 +10,8 @@ class ProgramQueryController extends BaseController | ||||
| { | ||||
|     public function index(Request $request) { | ||||
|         $keyword = $request->get("keyword", ""); | ||||
|         $programs = Programs::query()->with(["appends", "video_pivots.video"])->limit(15)->orderByDesc("created_at")->get(); | ||||
|         return view("program", [ | ||||
|         $programs = Programs::query()->with(["appends", "video_pivots.video"])->where("status", "=", 1)->limit(15)->orderByDesc("created_at")->get(); | ||||
|         return view("program.index", [ | ||||
|             "keyword" => $keyword, | ||||
|             "programs"=>$programs, | ||||
|         ]); | ||||
|   | ||||
							
								
								
									
										45
									
								
								app/Http/Controllers/ProgramVideoConstructController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								app/Http/Controllers/ProgramVideoConstructController.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| <?php | ||||
| 
 | ||||
| namespace App\Http\Controllers; | ||||
| 
 | ||||
| use App\Models\Programs; | ||||
| use App\Models\ProgramVideos; | ||||
| use Illuminate\Http\Request; | ||||
| use Illuminate\Routing\Controller as BaseController; | ||||
| use Illuminate\Support\Facades\Storage; | ||||
| 
 | ||||
| class ProgramVideoConstructController extends BaseController | ||||
| { | ||||
|     public function index(Request $request, Programs $program) { | ||||
|         return view("program.construct.video.index", [ | ||||
|             "program" => $program, | ||||
|             "videos" => $program->video_pivots, | ||||
|         ]); | ||||
|     } | ||||
| 
 | ||||
|     public function edit(Request $request, ProgramVideos $program_video) { | ||||
|         return view("program.construct.video.create", [ | ||||
|             "program_video" => $program_video | ||||
|         ]); | ||||
|     } | ||||
| 
 | ||||
|     public function submit(Request $request, ProgramVideos $program_video) { | ||||
|         $updatePayload = $request->only(["start_part", "start_time", "stop_part", "stop_time"]); | ||||
|         if ($request->hasFile("start_image")) { | ||||
|             $file = $request->file("start_image"); | ||||
|             $path = $file->store("lubo_file"); | ||||
|             $full_path = Storage::url($path); | ||||
|             $program_video->start_image = str_replace("jerryyan.top", "jerryyan.net", $full_path); | ||||
|         } | ||||
|         if ($request->hasFile("stop_image")) { | ||||
|             $file = $request->file("stop_image"); | ||||
|             $path = $file->store("lubo_file"); | ||||
|             $full_path = Storage::url($path); | ||||
|             $program_video->stop_image = str_replace("jerryyan.top", "jerryyan.net", $full_path); | ||||
|         } | ||||
|         $program_video->update($updatePayload); | ||||
|         return view("program.construct.video.create", [ | ||||
|             "program_video" => $program_video | ||||
|         ]); | ||||
|     } | ||||
| } | ||||
| @@ -8,6 +8,8 @@ use Illuminate\Support\Carbon; | ||||
| 
 | ||||
| class ProgramVideos extends Model | ||||
| { | ||||
|     protected $fillable = ["start_part", "start_time", "stop_part", "stop_time"]; | ||||
|     protected $dateFormat = 'U'; | ||||
|     public function program(): \Illuminate\Database\Eloquent\Relations\BelongsTo | ||||
|     { | ||||
|         return $this->belongsTo(Programs::class, "program_id", "id"); | ||||
| @@ -21,7 +23,20 @@ class ProgramVideos extends Model | ||||
|     public function startSec(): Attribute | ||||
|     { | ||||
|         return Attribute::get(function ($_, $attributes) { | ||||
|             if (!$attributes['start_time']) { | ||||
|                 return ""; | ||||
|             } | ||||
|             return Carbon::createFromFormat("H:i:s", $attributes['start_time'])->secondsSinceMidnight(); | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     public function stopSec(): Attribute | ||||
|     { | ||||
|         return Attribute::get(function ($_, $attributes) { | ||||
|             if (!$attributes['stop_time']) { | ||||
|                 return ""; | ||||
|             } | ||||
|             return Carbon::createFromFormat("H:i:s", $attributes['stop_time'])->secondsSinceMidnight(); | ||||
|         }); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -6,6 +6,8 @@ use Illuminate\Database\Eloquent\Model; | ||||
| 
 | ||||
| class Programs extends Model | ||||
| { | ||||
|     protected $fillable = ["name", "difficulty", "desc"]; | ||||
|     protected $dateFormat = 'U'; | ||||
|     public function appends(): \Illuminate\Database\Eloquent\Relations\HasMany | ||||
|     { | ||||
|         return $this->hasMany(ProgramAppends::class, "program_id", "id")->orderByDesc("is_original"); | ||||
|   | ||||
| @@ -15,5 +15,8 @@ | ||||
|         "lodash": "^4.17.19", | ||||
|         "postcss": "^8.1.14", | ||||
|         "tailwindcss": "^3.1.6" | ||||
|     }, | ||||
|     "dependencies": { | ||||
|         "@tailwindcss/forms": "^0.5.2" | ||||
|     } | ||||
| } | ||||
|   | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										48
									
								
								resources/views/program/construct/create.blade.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								resources/views/program/construct/create.blade.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| <html lang="zh"> | ||||
| <head> | ||||
|     <meta charset="UTF-8"> | ||||
|     <title>录播节目修改</title> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||
|     <link href="{{ asset('css/app.css') }}" rel="stylesheet"/> | ||||
| </head> | ||||
| <body> | ||||
| @include("common.header") | ||||
| <form class="w-full lg:w-1/2 lg:ml-6 border-2" action="" method="post" enctype="multipart/form-data"> | ||||
|     <input type="hidden" name="id" value="{{$program->id}}"> | ||||
|     <label class="block my-2"> | ||||
|         节目名称 | ||||
|         <input class="form-input border-0 border-b-2 w-full" type="text" name="name" value="{{$program->name}}"> | ||||
|     </label> | ||||
|     <label class="block my-2"> | ||||
|         节目难度 | ||||
|         <input class="form-input border-0 border-b-2 w-full" type="text" name="difficulty" value="{{$program->difficulty}}"> | ||||
|     </label> | ||||
|     <label class="block my-2"> | ||||
|         节目要求 | ||||
|         <input class="form-input border-0 border-b-2 w-full" type="text" name="desc" value="{{$program->desc}}"> | ||||
|     </label> | ||||
|     <label class="block my-2"> | ||||
|         节目开打时间 | ||||
|         <input class="form-input border-0 border-b-2 w-full" type="datetime-local" step="1" name="created_at" value="{{$program->created_at}}"> | ||||
|     </label> | ||||
|     <label class="block my-2"> | ||||
|         是否结束维护 | ||||
|         <input class="form-checkbox" type="checkbox" name="status" value="1" @if($program->status == 1) checked @endif> | ||||
|     </label> | ||||
|     <div class="block my-2 text-center"> | ||||
|         <input class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" type="submit"> | ||||
|     </div> | ||||
|     <div class="block my-2"> | ||||
|         <a href="{{route("program.construct.video.list", ["program"=>$program->id])}}" | ||||
|            class="block px-6 py-2 inline-block rounded-full bg-cyan-600 text-white"> | ||||
|             关联视频列表 | ||||
|         </a> | ||||
|     </div> | ||||
| </form> | ||||
| <div class="w-full lg:w-1/2 lg:ml-6 flex justify-between px-4"> | ||||
|     <a class="block px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" href="{{route("program.construct.edit", ["program"=>$program->id - 1])}}">上一个</a> | ||||
|     <a class="block px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" href="{{route("program.construct.edit", ["program"=>$program->id + 1])}}">下一个</a> | ||||
| </div> | ||||
| @include("common.footer") | ||||
| </body> | ||||
| </html> | ||||
| @@ -7,25 +7,23 @@ | ||||
| </head> | ||||
| <body> | ||||
| @include("common.header") | ||||
| <h3>搜索功能待开放,数据待补充完整</h3> | ||||
| <!--<form action=""> | ||||
|         <label for="keyword">查找节目关键词,空格隔开查找多个关键词</label> | ||||
|         <input type="text" name="keyword" id="keyword" value="{{$keyword}}"> | ||||
|         <input type="submit"> | ||||
|     </form>--> | ||||
| <table border> | ||||
| <table class="table-auto border-collapse w-full lg:border lg:border-black"> | ||||
|     <thead> | ||||
|     <tr> | ||||
|     <tr class="border border-black sticky bg-white lg:static top-0 left-0 right-0"> | ||||
|         <td>节目名称</td> | ||||
|         <td>点播及追加</td> | ||||
|         <td>视频地址及位置</td> | ||||
|         <td>结束时的画面</td> | ||||
|         <td>节目开始</td> | ||||
|         <td>节目结束时的画面</td> | ||||
|     </tr> | ||||
|     </thead> | ||||
|     <tbody> | ||||
|     @foreach($programs as $program) | ||||
|         <tr> | ||||
|             <td>{{$program->name}}</td> | ||||
|             <td> | ||||
|                 <a href="{{route("program.construct.edit", ["program"=>$program->id])}}">编辑</a> | ||||
|                 <span title="节目">{{$program->name}}</span> | ||||
|                 <span title="要求">{{$program->desc}}</span> | ||||
|             </td> | ||||
|             <td> | ||||
|                 @foreach($program->appends as $append) | ||||
|                     @if($append->is_original) | ||||
| @@ -66,7 +64,11 @@ | ||||
|                         href="https://www.bilibili.com/video/{{$video_pivot->video_bvid}}?p={{$video_pivot->start_part}}&t={{$video_pivot->start_sec}}" | ||||
|                         title="P{{$video_pivot->start_part}}#{{$video_pivot->start_time}}" | ||||
|                     > | ||||
|                         @if($video_pivot->start_image) | ||||
|                             <img width="300" src="{{$video_pivot->start_image}}" alt="开始时的画面"> | ||||
|                         @else | ||||
|                             节目开始位置 | ||||
|                         @endif | ||||
|                     </a> | ||||
|                 @endforeach | ||||
|             </td> | ||||
							
								
								
									
										62
									
								
								resources/views/program/construct/video/create.blade.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								resources/views/program/construct/video/create.blade.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | ||||
| <html lang="zh"> | ||||
| <head> | ||||
|     <meta charset="UTF-8"> | ||||
|     <title>录播节目关联视频位置修改</title> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||
|     <link href="{{ asset('css/app.css') }}" rel="stylesheet"/> | ||||
| </head> | ||||
| <body> | ||||
| @include("common.header") | ||||
| <form class="w-full lg:w-1/2 lg:ml-6 border-2" action="" method="post" enctype="multipart/form-data"> | ||||
|     <input type="hidden" name="id" value="{{$program_video->id}}"> | ||||
|     <label class="block my-2"> | ||||
|         BVID | ||||
|         <input class="form-input border-0 border-b-2 w-full" disabled type="text" name="video_bvid" value="{{$program_video->video_bvid}}"> | ||||
|     </label> | ||||
|     <label class="block my-2"> | ||||
|         开始P数 | ||||
|         <input class="form-input border-0 border-b-2 w-full" type="number" name="start_part" value="{{$program_video->start_part}}"> | ||||
|     </label> | ||||
|     <label class="block my-2"> | ||||
|         开始时间 | ||||
|         <input class="form-input border-0 border-b-2 w-full" step="1" type="time" name="start_time" value="{{$program_video->start_time}}"> | ||||
|     </label> | ||||
|     <label class="block my-2"> | ||||
|         开始图像 | ||||
|         @if($program_video->start_image) | ||||
|             <img src="{{$program_video->start_image}}" alt="开始图片"> | ||||
|         @endif | ||||
|         <input class="form-input border-0 border-b-2 w-full" type="file" name="start_image"> | ||||
|     </label> | ||||
|     <label class="block my-2"> | ||||
|         结束P数 | ||||
|         <input class="form-input border-0 border-b-2 w-full" type="number" name="stop_part" value="{{$program_video->stop_part}}"> | ||||
|     </label> | ||||
|     <label class="block my-2"> | ||||
|         结束时间 | ||||
|         <input class="form-input border-0 border-b-2 w-full" step="1" type="time" name="stop_time" value="{{$program_video->stop_time}}"> | ||||
|     </label> | ||||
|     <label class="block my-2"> | ||||
|         结束图像 | ||||
|         @if($program_video->stop_image) | ||||
|             <img src="{{$program_video->stop_image}}" alt="结束图片"> | ||||
|         @endif | ||||
|         <input class="form-input border-0 border-b-2 w-full" type="file" name="stop_image"> | ||||
|     </label> | ||||
|     <div class="block my-2 text-center"> | ||||
|         <input class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" type="submit"> | ||||
|     </div> | ||||
|     <div class="block my-2"> | ||||
|         <a class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" target="_blank" | ||||
|            href="https://www.bilibili.com/video/{{$program_video->video_bvid}}?p={{$program_video->start_part}}&t={{$program_video->start_sec}}" | ||||
|            title="P{{$program_video->start_part}}#{{$program_video->start_time}}" | ||||
|         >打开至开始位置</a> | ||||
|         <a class="px-6 py-2 inline-block rounded-full bg-cyan-600 text-white" target="_blank" | ||||
|            href="https://www.bilibili.com/video/{{$program_video->video_bvid}}?p={{$program_video->stop_part}}&t={{$program_video->stop_sec}}" | ||||
|            title="P{{$program_video->stop_part}}#{{$program_video->stop_time}}" | ||||
|         >打开至结束位置</a> | ||||
|     </div> | ||||
| </form> | ||||
| @include("common.footer") | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										54
									
								
								resources/views/program/construct/video/index.blade.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								resources/views/program/construct/video/index.blade.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | ||||
| <html lang="zh"> | ||||
| <head> | ||||
|     <meta charset="UTF-8"> | ||||
|     <title>录播节目查询</title> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||
|     <link href="{{ asset('css/app.css') }}" rel="stylesheet"/> | ||||
| </head> | ||||
| <body> | ||||
| @include("common.header") | ||||
| <table class="table-auto border-collapse w-full lg:border lg:border-black"> | ||||
|     <thead> | ||||
|     <tr class="border border-black sticky bg-white lg:static top-0 left-0 right-0"> | ||||
|         <td>BVID</td> | ||||
|         <td>节目开始时间</td> | ||||
|         <td>节目开始时的画面</td> | ||||
|         <td>节目结束时的画面</td> | ||||
|         <td>操作</td> | ||||
|     </tr> | ||||
|     </thead> | ||||
|     <tbody> | ||||
|     @foreach($videos as $video_pivot) | ||||
|         <tr> | ||||
|             <td> | ||||
|                 <a class="text-purple-600 underline" target="_blank" | ||||
|                    href="https://www.bilibili.com/video/{{$video_pivot->video_bvid}}?p={{$video_pivot->start_part}}&t={{$video_pivot->start_sec}}" | ||||
|                    title="P{{$video_pivot->start_part}}#{{$video_pivot->start_time}}" | ||||
|                 >{{$video_pivot->video_bvid}}</a> | ||||
|             </td> | ||||
|             <td>P{{$video_pivot->start_part}} {{$video_pivot->start_time}}</td> | ||||
|             <td> | ||||
|                 @if($video_pivot->start_image) | ||||
|                     <img width="300" src="{{$video_pivot->start_image}}" alt="开始时的画面"> | ||||
|                 @else | ||||
|                     <div>暂无</div> | ||||
|                 @endif | ||||
|             </td> | ||||
|             <td> | ||||
|                 @if($video_pivot->stop_image) | ||||
|                     <img width="300" src="{{$video_pivot->stop_image}}" alt="结束时的画面"> | ||||
|                 @else | ||||
|                     <div>暂无</div> | ||||
|                 @endif | ||||
|             </td> | ||||
|             <td> | ||||
|                 <a class="text-blue-600 underline" | ||||
|                    href="{{route("program.construct.video.edit", ["program_video" => $video_pivot->id])}}">编辑</a> | ||||
|             </td> | ||||
|         </tr> | ||||
|     @endforeach | ||||
|     </tbody> | ||||
| </table> | ||||
| @include("common.footer") | ||||
| </body> | ||||
| </html> | ||||
							
								
								
									
										132
									
								
								resources/views/program/index.blade.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								resources/views/program/index.blade.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,132 @@ | ||||
| <html lang="zh"> | ||||
| <head> | ||||
|     <meta charset="UTF-8"> | ||||
|     <title>录播节目查询</title> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||
|     <link href="{{ asset('css/app.css') }}" rel="stylesheet"/> | ||||
| </head> | ||||
| <body> | ||||
| @include("common.header") | ||||
| <h3>搜索功能待开放,数据待补充完整</h3> | ||||
| <!--<form action=""> | ||||
|         <label for="keyword">查找节目关键词,空格隔开查找多个关键词</label> | ||||
|         <input type="text" name="keyword" id="keyword" value="{{$keyword}}"> | ||||
|         <input type="submit"> | ||||
|     </form>--> | ||||
| <table class="table-auto border-collapse w-full lg:border lg:border-black"> | ||||
|     <thead> | ||||
|     <tr class="border border-black sticky bg-white lg:static top-0 left-0 right-0"> | ||||
|         <td>节目名称</td> | ||||
|         <td>点播及追加</td> | ||||
|         <td>节目开始</td> | ||||
|         <td>节目结束</td> | ||||
|     </tr> | ||||
|     </thead> | ||||
|     <tbody> | ||||
|     @foreach($programs as $program) | ||||
|         <tr> | ||||
|             <td> | ||||
|                 <span title="节目">{{$program->name}}</span> | ||||
|                 <span title="难度">{{$program->difficulty}}</span> | ||||
|                 <span title="要求">{{$program->desc}}</span> | ||||
|             </td> | ||||
|             <td> | ||||
|                 @foreach($program->appends as $append) | ||||
|                     @if($append->is_original) | ||||
|                         <div> | ||||
|                             @switch($append->platform_id) | ||||
|                                 @case(1) | ||||
|                                     <img class="w-4 h-4 inline-block" src="https://cdn.jerryyan.net/luboimg/bilibili.ico" alt="B站"> | ||||
|                                     <a class="underline" href="https://space.bilibili.com/{{$append->from_mid}}" target="_blank">{{$append->from}}</a> | ||||
|                                     @break | ||||
|                                 @case(2) | ||||
|                                     <img class="w-4 h-4 inline-block" src="https://cdn.jerryyan.net/luboimg/ixigua.ico" alt="西瓜视频"> | ||||
|                                     <a class="underline" href="https://www.ixigua.com/home/{{$append->from_mid}}/" target="_blank">{{$append->from}}</a> | ||||
|                                     @break | ||||
|                                 @case(3) | ||||
|                                     <img class="w-4 h-4 inline-block" src="https://cdn.jerryyan.net/luboimg/douyin.ico" alt="抖音"> | ||||
|                                     {{$append->from}} | ||||
|                                     @break | ||||
|                                 @default | ||||
|                                     {{$append->from}} | ||||
|                                     @break | ||||
|                             @endswitch | ||||
|                             老板点播 | ||||
|                             <span title="一分10块">{{$append->price}}分</span> | ||||
|                             @if($append->append) | ||||
|                                 <span>({{$append->append}})</span> | ||||
|                             @endif | ||||
|                         </div> | ||||
|                     @else | ||||
|                         <div> | ||||
|                             @switch($append->platform_id) | ||||
|                                 @case(1) | ||||
|                                     <img class="w-4 h-4 inline-block" src="https://cdn.jerryyan.net/luboimg/bilibili.ico" alt="B站"> | ||||
|                                     <a class="underline" href="https://space.bilibili.com/{{$append->from_mid}}" target="_blank">{{$append->from}}</a> | ||||
|                                     @break | ||||
|                                 @case(2) | ||||
|                                     <img class="w-4 h-4 inline-block" src="https://cdn.jerryyan.net/luboimg/ixigua.ico" alt="西瓜视频"> | ||||
|                                     <a class="underline" href="https://www.ixigua.com/home/{{$append->from_mid}}/" target="_blank">{{$append->from}}</a> | ||||
|                                     @break | ||||
|                                 @case(3) | ||||
|                                     <img class="w-4 h-4 inline-block" src="https://cdn.jerryyan.net/luboimg/douyin.ico" alt="抖音"> | ||||
|                                     {{$append->from}} | ||||
|                                     @break | ||||
|                                 @default | ||||
|                                     {{$append->from}} | ||||
|                                     @break | ||||
|                             @endswitch | ||||
|                             老板追加:{{$append->name}} | ||||
|                             <span title="一分10块">{{$append->price}}分</span> | ||||
|                             @if($append->append) | ||||
|                                 <span>({{$append->append}})</span> | ||||
|                             @endif | ||||
|                         </div> | ||||
|                     @endif | ||||
|                 @endforeach | ||||
|             </td> | ||||
|             <td> | ||||
|                 @foreach($program->video_pivots as $video_pivot) | ||||
|                     <a | ||||
|                         target="_blank" | ||||
|                         href="https://www.bilibili.com/video/{{$video_pivot->video_bvid}}?p={{$video_pivot->start_part}}&t={{$video_pivot->start_sec}}" | ||||
|                         title="P{{$video_pivot->start_part}}#{{$video_pivot->start_time}}" | ||||
|                     > | ||||
|                         @if($video_pivot->start_image) | ||||
|                             <img width="300" src="{{$video_pivot->start_image}}" alt="开始时的画面"> | ||||
|                         @else | ||||
|                             节目开始位置 | ||||
|                         @endif | ||||
|                     </a> | ||||
|                 @endforeach | ||||
|             </td> | ||||
|             <td> | ||||
|                 @foreach($program->video_pivots as $video_pivot) | ||||
|                     @if($video_pivot->stop_part) | ||||
|                     <a | ||||
|                         target="_blank" | ||||
|                         href="https://www.bilibili.com/video/{{$video_pivot->video_bvid}}?p={{$video_pivot->stop_part}}&t={{$video_pivot->stop_sec}}" | ||||
|                         title="P{{$video_pivot->stop_part}}#{{$video_pivot->stop_time}}" | ||||
|                     > | ||||
|                         @if($video_pivot->start_image) | ||||
|                             <img width="300" src="{{$video_pivot->stop_image}}" alt="结束时的画面"> | ||||
|                         @else | ||||
|                             节目结束位置 | ||||
|                         @endif | ||||
|                     </a> | ||||
|                     @else | ||||
|                         @if($video_pivot->stop_image) | ||||
|                             <img width="300" src="{{$video_pivot->stop_image}}" alt="结束时的画面"> | ||||
|                         @else | ||||
|                             <div>暂无</div> | ||||
|                         @endif | ||||
|                     @endif | ||||
|                 @endforeach | ||||
|             </td> | ||||
|         </tr> | ||||
|     @endforeach | ||||
|     </tbody> | ||||
| </table> | ||||
| @include("common.footer") | ||||
| </body> | ||||
| </html> | ||||
| @@ -12,10 +12,21 @@ use Illuminate\Support\Facades\Route; | ||||
| | contains the "web" middleware group. Now create something great! | ||||
| | | ||||
| */ | ||||
| 
 | ||||
| Route::get('/', "\\App\\Http\\Controllers\\CommentQueryController@index"); | ||||
| Route::get('/programs', "\\App\\Http\\Controllers\\ProgramQueryController@index"); | ||||
| Route::get('/danmakus', "\\App\\Http\\Controllers\\DanmakuQueryController@index"); | ||||
| Route::get('/danmakus/{bvid}', "\\App\\Http\\Controllers\\DanmakuQueryController@specific_search"); | ||||
| Route::get('/upload', "\\App\\Http\\Controllers\\FileController@index"); | ||||
| Route::post('/upload', "\\App\\Http\\Controllers\\FileController@upload"); | ||||
| // 对外列表
 | ||||
| Route::get('/', ["\\App\\Http\\Controllers\\CommentQueryController","index"]); | ||||
| Route::get('/programs', ["\\App\\Http\\Controllers\\ProgramQueryController","index"]); | ||||
| Route::get('/danmakus', ["\\App\\Http\\Controllers\\DanmakuQueryController","index"]); | ||||
| Route::get('/danmakus/{bvid}', ["\\App\\Http\\Controllers\\DanmakuQueryController","specific_search"]); | ||||
| Route::get('/upload', ["\\App\\Http\\Controllers\\FileController","index"]); | ||||
| Route::post('/upload', ["\\App\\Http\\Controllers\\FileController","upload"]); | ||||
| // 建设部分
 | ||||
| Route::get('/programs/construct', ["\\App\\Http\\Controllers\\ProgramConstructController","construct"])->name("program.construct.list"); | ||||
| Route::get('/programs/construct/{program}', ["\\App\\Http\\Controllers\\ProgramConstructController","edit"])->name("program.construct.edit"); | ||||
| Route::post('/programs/construct/{program}', ["\\App\\Http\\Controllers\\ProgramConstructController", "submit"])->name("program.construct.submit"); | ||||
| Route::get("/programs/construct/{program}/video", ["\\App\\Http\\Controllers\\ProgramVideoConstructController","index"])->name("program.construct.video.list"); | ||||
| Route::get("/programs/construct/video/{program_video}", ["\\App\\Http\\Controllers\\ProgramVideoConstructController","edit"])->name("program.construct.video.edit"); | ||||
| Route::post("/programs/construct/video/{program_video}", ["\\App\\Http\\Controllers\\ProgramVideoConstructController","submit"])->name("program.construct.video.submit"); | ||||
| Route::get('/programs/construct/{program}/append', ["\\App\\Http\\Controllers\\ProgramAppendConstructController","construct"])->name("program.construct.append.list"); | ||||
| Route::post('/programs/construct/{program}/append', ["\\App\\Http\\Controllers\\ProgramAppendConstructController","create"])->name("program.construct.append.create"); | ||||
| Route::get('/programs/construct/{program}/append/{program_append}', ["\\App\\Http\\Controllers\\ProgramAppendConstructController","edit"])->name("program.construct.append.edit"); | ||||
| Route::post('/programs/construct/{program}/append/{program_append}', ["\\App\\Http\\Controllers\\ProgramAppendConstructController","submit"])->name("program.construct.append.submit"); | ||||
|   | ||||
| @@ -8,5 +8,7 @@ module.exports = { | ||||
|     theme: { | ||||
|         extend: {}, | ||||
|     }, | ||||
|     plugins: [], | ||||
|     plugins: [ | ||||
|         require('@tailwindcss/forms') | ||||
|     ], | ||||
| } | ||||
|   | ||||
							
								
								
									
										12
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								yarn.lock
									
									
									
									
									
								
							| @@ -994,6 +994,13 @@ | ||||
|     "@nodelib/fs.scandir" "2.1.5" | ||||
|     fastq "^1.6.0" | ||||
|  | ||||
| "@tailwindcss/forms@^0.5.2": | ||||
|   version "0.5.2" | ||||
|   resolved "https://registry.npmmirror.com/@tailwindcss/forms/-/forms-0.5.2.tgz#4ef45f9916dcb37838cbe7fecdcc4ba7a7c2ab59" | ||||
|   integrity sha512-pSrFeJB6Bg1Mrg9CdQW3+hqZXAKsBrSG9MAfFLKy1pVA4Mb4W7C0k7mEhlmS2Dfo/otxrQOET7NJiJ9RrS563w== | ||||
|   dependencies: | ||||
|     mini-svg-data-uri "^1.2.3" | ||||
|  | ||||
| "@trysound/sax@0.2.0": | ||||
|   version "0.2.0" | ||||
|   resolved "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" | ||||
| @@ -3515,6 +3522,11 @@ mini-css-extract-plugin@^1.6.2: | ||||
|     schema-utils "^3.0.0" | ||||
|     webpack-sources "^1.1.0" | ||||
|  | ||||
| mini-svg-data-uri@^1.2.3: | ||||
|   version "1.4.4" | ||||
|   resolved "https://registry.npmmirror.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939" | ||||
|   integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg== | ||||
|  | ||||
| minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: | ||||
|   version "1.0.1" | ||||
|   resolved "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user