Explorar o código

Merge pull request #1575 from visuddhinanda/laravel

MdRender 添加 全部渲染格式
visuddhinanda %!s(int64=2) %!d(string=hai) anos
pai
achega
c268ba47e9

+ 18 - 11
app/Console/Commands/TestMdRender.php

@@ -13,7 +13,7 @@ class TestMdRender extends Command
      * run php artisan test:md.render term unity
      * @var string
      */
-    protected $signature = 'test:md.render {item?} {--format=react}';
+    protected $signature = 'test:md.render {item?} {--format}';
 
     /**
      * The console command description.
@@ -122,18 +122,25 @@ class TestMdRender extends Command
         //$sent = MdRender::take_sentence($html);
         //print_r($sent);
 
-        foreach ($data as $key => $value) {
-            $_item = $this->argument('item');
-            if(!empty($_item) && $key !==$_item){
-                continue;
+        $formats = $this->option('format');
+        if(empty($format)){
+            $formats = ['react','unity','text','tex'];
+        }else{
+            $formats = [$formats];
+        }
+        foreach ($formats as $format) {
+            $this->info("format:{$format}");
+            foreach ($data as $key => $value) {
+                $_item = $this->argument('item');
+                if(!empty($_item) && $key !==$_item){
+                    continue;
+                }
+                echo MdRender::render($value,
+                                    ['00ae2c48-c204-4082-ae79-79ba2740d506'],
+                                    null,'read','translation',
+                                    $contentType="markdown",$format);
             }
-            $format = $this->option('format');
-            echo MdRender::render($value,
-                                  ['00ae2c48-c204-4082-ae79-79ba2740d506'],
-                                  null,'read','translation',
-                                  $contentType="markdown",$format);
         }
-
         return 0;
     }
 }

+ 133 - 33
app/Http/Api/TemplateRender.php

@@ -270,7 +270,6 @@ class TemplateRender{
         return $output;
     }
     private  function render_nissaya(){
-
         $pali =  $this->get_param($this->param,"pali",1);
         $meaning = $this->get_param($this->param,"meaning",2);
         $innerString = "";
@@ -278,12 +277,32 @@ class TemplateRender{
             "pali" => $pali,
             "meaning" => $meaning,
         ];
-        return [
-            'props'=>base64_encode(\json_encode($props)),
-            'html'=>$innerString,
-            'tag'=>'span',
-            'tpl'=>'nissaya',
-            ];
+        switch ($this->format) {
+            case 'react':
+                $output = [
+                    'props'=>base64_encode(\json_encode($props)),
+                    'html'=>$innerString,
+                    'tag'=>'span',
+                    'tpl'=>'nissaya',
+                    ];
+                break;
+            case 'unity':
+                $output = [
+                    'props'=>base64_encode(\json_encode($props)),
+                    'tpl'=>'nissaya',
+                    ];
+                break;
+            case 'text':
+                $output = $pali.'၊'.$meaning;
+                break;
+            case 'tex':
+                $output = $pali.'၊'.$meaning;
+                break;
+            default:
+                $output = $pali.'၊'.$meaning;
+                break;
+        }
+        return $output;
     }
     private  function render_exercise(){
 
@@ -294,13 +313,32 @@ class TemplateRender{
                     "title" => $title,
                     "channel" => $this->channel_id[0],
                 ];
-
-        return [
-            'props'=>base64_encode(\json_encode($props)),
-            'html'=>"",
-            'tag'=>'span',
-            'tpl'=>'exercise',
-            ];
+        switch ($this->format) {
+            case 'react':
+                $output = [
+                    'props'=>base64_encode(\json_encode($props)),
+                    'html'=>"",
+                    'tag'=>'span',
+                    'tpl'=>'exercise',
+                    ];
+                break;
+            case 'unity':
+                $output = [
+                    'props'=>base64_encode(\json_encode($props)),
+                    'tpl'=>'exercise',
+                    ];
+                break;
+            case 'text':
+                $output = $title;
+                break;
+            case 'tex':
+                $output = $title;
+                break;
+            default:
+                $output = '';
+                break;
+        }
+        return $output;
     }
     private  function render_article(){
 
@@ -318,13 +356,33 @@ class TemplateRender{
         if(!empty($title)){
             $props['title'] = $title;
         }
-        return [
-            'props'=>base64_encode(\json_encode($props)),
-            'html'=>"",
-            'text'=>$title,
-            'tag'=>'span',
-            'tpl'=>'article',
-            ];
+        switch ($this->format) {
+            case 'react':
+                $output = [
+                    'props'=>base64_encode(\json_encode($props)),
+                    'html'=>"",
+                    'text'=>$title,
+                    'tag'=>'span',
+                    'tpl'=>'article',
+                    ];
+                break;
+            case 'unity':
+                $output = [
+                    'props'=>base64_encode(\json_encode($props)),
+                    'tpl'=>'article',
+                    ];
+                break;
+            case 'text':
+                $output = $title;
+                break;
+            case 'tex':
+                $output = $title;
+                break;
+            default:
+                $output = '';
+                break;
+        }
+        return $output;
     }
     private  function render_quote(){
         $paraId = $this->get_param($this->param,"para",1);
@@ -353,12 +411,33 @@ class TemplateRender{
                 }
                 return $output;
               });
-        return [
-            'props'=>base64_encode(\json_encode($props)),
-            'html'=>$props["innerString"],
-            'tag'=>'span',
-            'tpl'=>'quote',
-            ];
+
+            switch ($this->format) {
+                case 'react':
+                    $output = [
+                        'props'=>base64_encode(\json_encode($props)),
+                        'html'=>$props["innerString"],
+                        'tag'=>'span',
+                        'tpl'=>'quote',
+                        ];
+                    break;
+                case 'unity':
+                    $output = [
+                        'props'=>base64_encode(\json_encode($props)),
+                        'tpl'=>'quote',
+                        ];
+                    break;
+                case 'text':
+                    $output = $props["innerString"];
+                    break;
+                case 'tex':
+                    $output = $props["innerString"];
+                    break;
+                default:
+                    $output = '';
+                    break;
+            }
+            return $output;
     }
     private  function render_sent(){
 
@@ -417,12 +496,33 @@ class TemplateRender{
         $text = json_decode(base64_decode($this->get_param($this->param,"text",1)));
 
         $props = ["text" => implode("\n",$text)];
-        return [
-            'props'=>base64_encode(\json_encode($props)),
-            'html'=>"mermaid",
-            'tag'=>'div',
-            'tpl'=>'mermaid',
-            ];
+
+        switch ($this->format) {
+            case 'react':
+                $output = [
+                    'props'=>base64_encode(\json_encode($props)),
+                    'html'=>"mermaid",
+                    'tag'=>'div',
+                    'tpl'=>'mermaid',
+                    ];
+                break;
+            case 'unity':
+                $output = [
+                    'props'=>base64_encode(\json_encode($props)),
+                    'tpl'=>'mermaid',
+                    ];
+                break;
+            case 'text':
+                $output = 'mermaid';
+                break;
+            case 'tex':
+                $output = 'mermaid';
+                break;
+            default:
+                $output = 'mermaid';
+                break;
+        }
+        return $output;
     }
 
     private  function get_param(array $param,string $name,int $id,string $default=''){

+ 14 - 2
app/Http/Controllers/TransferController.php

@@ -4,10 +4,11 @@ namespace App\Http\Controllers;
 
 use App\Models\Transfer;
 use App\Models\Channel;
-
+use App\Models\Article;
 use Illuminate\Http\Request;
 use App\Http\Api\AuthApi;
 use App\Http\Api\StudioApi;
+use App\Http\Api\UserApi;
 use App\Http\Resources\TransferResource;
 
 class TransferController extends Controller
@@ -107,7 +108,13 @@ class TransferController extends Controller
                 }
                 $transfer->origin_owner = $oldRes->owner_uid;
                 break;
-
+            case 'article':
+                $oldRes = Article::find($request->get('res_id'));
+                if($oldRes->owner !== $user['user_uid']){
+                    return $this->error(__('auth.failed'),[403],403);
+                }
+                $transfer->origin_owner = $oldRes->owner;
+                break;
             default:
                 # code...
                 break;
@@ -182,6 +189,11 @@ class TransferController extends Controller
                     Channel::where('uid',$transfer->res_id)
                             ->update(['owner_uid'=>$transfer->new_owner]);
                     break;
+                case 'article':
+                    $userId = UserApi::getIdByUuid($transfer->new_owner);
+                    Article::where('uid',$transfer->res_id)
+                            ->update(['owner'=>$transfer->new_owner,'owner_id'=>$userId]);
+                    break;
                 default:
                     # code...
                     break;