Browse Source

Merge pull request #1912 from visuddhinanda/laravel

✨ video template
visuddhinanda 2 years ago
parent
commit
f6a8446e40

+ 4 - 1
app/Http/Api/MdRender.php

@@ -263,7 +263,10 @@ class MdRender{
              *
              */
             //TODO 判断$channelId里面的是否都是uuid
-            $channelInfo = Channel::whereIn('uid',$channelId)->get();
+            $channelInfo = [];
+            foreach ($channelId as $key => $id) {
+                $channelInfo[] = Channel::where('uid',$id)->first();
+            }
             $tplRender = new TemplateRender($props,
                                         $channelInfo,
                                         $this->options['mode'],

+ 41 - 2
app/Http/Api/TemplateRender.php

@@ -89,6 +89,9 @@ class TemplateRender{
             case 'qa':
                 $result = $this->render_qa();
                 break;
+            case 'v':
+                $result = $this->render_video();
+                break;
             default:
                 # code...
                 $result = [
@@ -870,8 +873,8 @@ class TemplateRender{
 
     private  function render_qa(){
 
-        $id = $this->get_param($this->param,"id",2);
-        $style = $this->get_param($this->param,"style",5);
+        $id = $this->get_param($this->param,"id",1);
+        $style = $this->get_param($this->param,"style",2);
 
         $props = [
                     "type" => 'qa',
@@ -908,6 +911,42 @@ class TemplateRender{
         }
         return $output;
     }
+
+    private  function render_video(){
+
+        $url = $this->get_param($this->param,"url",1);
+        $style = $this->get_param($this->param,"style",2,'modal');
+        $title = $this->get_param($this->param,"title",3);
+
+        $props = [
+                    "url" => $url,
+                    'title' => $title,
+                    'style' => $style,
+                ];
+
+        switch ($this->format) {
+            case 'react':
+                $output = [
+                    'props'=>base64_encode(\json_encode($props)),
+                    'html'=>"",
+                    'text'=>$props['title'],
+                    'tag'=>'span',
+                    'tpl'=>'video',
+                    ];
+                break;
+            case 'unity':
+                $output = [
+                    'props'=>base64_encode(\json_encode($props)),
+                    'tpl'=>'video',
+                    ];
+                break;
+            default:
+                $output = $props['title'];
+                break;
+        }
+        return $output;
+    }
+
     private  function get_param(array $param,string $name,int $id,string $default=''){
         if(isset($param[$name])){
             return trim($param[$name]);

+ 5 - 3
app/Http/Controllers/AttachmentController.php

@@ -73,11 +73,11 @@ class AttachmentController extends Controller
         $file = $request->file('file');
 
        //Move Uploaded File
-        $bucket = date("Y-m");
+        $bucket = config('mint.attachments.bucket_name.permanent');
         $fileId = Str::uuid();
         $ext = $file->getClientOriginalExtension();
         $name = $fileId.'.'.$ext;
-        $filename = $file->storeAs($bucket,$name,'public');
+        $filename = $file->storeAs($bucket,$name);
         $attachment = new Attachment;
         $attachment->id = $fileId;
         $attachment->user_uid = $user['user_uid'];
@@ -92,12 +92,14 @@ class AttachmentController extends Controller
         $type = explode('/',$file->getMimeType());
         switch ($type[0]) {
             case 'image':
+                /*
                 $resize = Image::make($file)->fit(128);
                 Storage::disk('public')->put($bucket.'/'.$fileId.'_s.jpg',$resize->stream());
                 $resize = Image::make($file)->fit(256);
                 Storage::disk('public')->put($bucket.'/'.$fileId.'_m.jpg',$resize->stream());
                 $resize = Image::make($file)->fit(512);
                 Storage::disk('public')->put($bucket.'/'.$fileId.'_l.jpg',$resize->stream());
+                */
                 break;
             case 'video':
                 //$path = public_path($filename);
@@ -114,7 +116,7 @@ class AttachmentController extends Controller
             'name' => $filename,
             'size' => $file->getSize(),
             'type' => $file->getMimeType(),
-            'url' => Storage::disk('public')->url($filename),
+            'url' => Storage::url($bucket.'/'.$name),
             'uid' => $attachment->id,
             );
         return $this->ok(new AttachmentResource($attachment));

+ 1 - 1
app/Http/Controllers/CourseMemberController.php

@@ -20,7 +20,7 @@ class CourseMemberController extends Controller
     {
         //
         $result=false;
-		$indexCol = ['id','user_id','course_id','role','updated_at','created_at'];
+		$indexCol = ['id','user_id','course_id','channel_id','role','updated_at','created_at'];
 		switch ($request->get('view')) {
             case 'course':
 	            # 获取 course 内所有 成员

+ 21 - 3
app/Http/Controllers/WbwSentenceController.php

@@ -5,6 +5,9 @@ namespace App\Http\Controllers;
 use App\Models\Wbw;
 use App\Models\WbwBlock;
 use App\Models\Channel;
+use App\Models\CourseMember;
+use App\Models\Course;
+
 use Illuminate\Http\Request;
 use App\Http\Api\AuthApi;
 use App\Http\Api\ShareApi;
@@ -32,7 +35,22 @@ class WbwSentenceController extends Controller
                           $request->get('para').'-'.
                           $request->get('wordStart').'-'.
                           $request->get('wordEnd');
-                $channels = ChannelApi::getCanReadByUser($user_uid);
+                $channels = [];
+                if($request->has('course')){
+                    $studentsChannel = CourseMember::where('course_id',$request->get('course'))
+                                                    ->whereNotNull('channel_id')
+                                                    ->select('channel_id')
+                                                    ->orderBy('created_at')
+                                                    ->get();
+                    foreach ($studentsChannel as $key => $channel) {
+                        $channels[] = $channel->channel_id;
+                    }
+                    $channels[] = Course::where('id',$request->get('course'))
+                                    ->value('channel_id');
+                }else{
+                    $channels = ChannelApi::getCanReadByUser($user_uid);
+                }
+
                 $channelsId = [];
                 if($request->has('exclude')){
                     //移除无需查询的channel
@@ -41,9 +59,9 @@ class WbwSentenceController extends Controller
                             $channelsId[] = $id;
                         }
                     }
-                }else if($request->has('channel')){
+                }else if($request->has('channels')){
                     //仅列出指定的channel
-                    $include = explode(',', $request->get('channel'));
+                    $include = explode(',', $request->get('channels'));
                     foreach ($channels as $key => $id) {
                         if(in_array($id, $include)){
                             $channelsId[] = $id;

+ 3 - 2
app/Http/Resources/AttachmentResource.php

@@ -18,11 +18,12 @@ class AttachmentResource extends JsonResource
         $data = [
             "id" => $this->id,
             "user_uid" => $this->user_uid,
-            "name" => $this->name,
+            "name" => $this->bucket.'/'.$this->name,
+            "filename" => $this->bucket.'/'.$this->name,
             "title" => $this->title,
             "size" => $this->size,
             "content_type" => $this->content_type,
-            "url" => Storage::disk('public')->url($this->bucket.'/'.$this->name),
+            "url" => Storage::url($this->bucket.'/'.$this->name),
             "status" => $this->status,
             "created_at" => $this->created_at,
             "updated_at" => $this->updated_at,

+ 1 - 0
app/Http/Resources/CourseMemberResource.php

@@ -22,6 +22,7 @@ class CourseMemberResource extends JsonResource
             "role"=> $this->role,
             "user"=> UserApi::getByUuid($this->user_id),
             "status"=> $this->status,
+            'channel_id'=> $this->channel_id,
             "created_at"=> $this->created_at,
             "updated_at"=> $this->updated_at,
         ];

+ 1 - 0
app/Http/Resources/CourseResource.php

@@ -37,6 +37,7 @@ class CourseResource extends JsonResource
             "content"=> $this->content,
             "content_type"=> $this->content_type,
             "cover"=> $this->cover,
+            "cover_url"=> [Storage::url($this->cover)],
             "channel_id"=>$this->channel_id,
             "join"=> $this->join,
             "request_exp"=> $this->request_exp,

+ 1 - 1
app/Tools/Markdown.php

@@ -14,7 +14,7 @@ class Markdown
             $GLOBALS['markdown.driver'] === 'str'){
             return Markdown::strdown($text);
         }else{
-            return Markdown::morus($text);
+            return Markdown::strdown($text);
         }
     }
     public static function morus_restful($text){