Explorar el Código

Merge pull request #1780 from visuddhinanda/laravel

新建文章限制title长度128
visuddhinanda hace 2 años
padre
commit
09f26e1fd8

+ 147 - 0
app/Console/Commands/ImportArticle.php

@@ -0,0 +1,147 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Illuminate\Console\Command;
+use Illuminate\Support\Facades\Http;
+use Illuminate\Support\Facades\Log;
+use App\Http\Api\StudioApi;
+use App\Models\Article;
+
+class ImportArticle extends Command
+{
+    /**
+     * The name and signature of the console command.
+     * php artisan import:article --token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJuYmYiOjE2OTc3Mjg2ODUsImV4cCI6MTcyOTI2NDY4NSwidWlkIjoiYmE1NDYzZjMtNzJkMS00NDEwLTg1OGUtZWFkZDEwODg0NzEzIiwiaWQiOjR9.fiXhnY2LczZ9kKVHV0FfD3AJPZt-uqM5wrDe4EhToVexdd007ebPFYssZefmchfL0mx9nF0rgHSqjNhx4P0yDA --studio=visuddhinanda --anthology=eb9e3f7f-b942-4ca4-bd6f-b7876b59a523
+     * @var string
+     */
+    protected $signature = 'import:article {--token=} {--studio=} {--anthology=}';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = '导入缅文tipitaka sarupa文章';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     * 分两个步骤导入
+     * 1. 导入文章到文集
+     * 2. 重新生成目录结构
+     * @return int
+     */
+    public function handle()
+    {
+        if (!$this->confirm('Do you wish to continue?')) {
+            return 0;
+        }
+        $token = $this->option('token');
+        $studioName = $this->option('studio');
+        $anthologyId = $this->option('anthology');
+
+        //先获取文章列表,建立全部目录
+        $head = array();
+        $strFileName = __DIR__."/tipitaka-sarupa.csv";
+        if(!file_exists($strFileName)){
+            $this->error($strFileName.'文件不存在');
+            return 1;
+        }
+
+        if (($fp = fopen($strFileName, "r")) === false) {
+            $this->error("can not open csv {$strFileName}");
+            return 0;
+        }
+        $this->info('打开csv文件成功');
+
+        $studioId = StudioApi::getIdByName($studioName);
+        if(!$studioId){
+            $this->error("can not found studio name {$studioName}");
+            return 0;
+        }
+        //导入文章
+        $url = config('app.url').'/api/v2/article';
+        $inputRow = 0;
+        fseek($fp, 0);
+        $count = 0;
+        $success = 0;
+        $fail = 0;
+        while (($data = fgetcsv($fp, 0, ',')) !== false) {
+            if($inputRow>0){
+                $id = $data[0];
+                $dir = $data[1];
+                $title = $data[2];
+                $realTitle = "[{$id}]{$title}";
+                $content = str_replace('\n',"\n",$data[4]) ;
+                $reference = str_replace(['(',')'],['({{ql|type=m|title=','}})'],$data[5]);
+                $contentCombine = "{$title}\n\n{$content}\n\n{$reference}";
+                $percent = (int)($inputRow*100/7000);
+                $this->info("[{$percent}%] doing ".$realTitle);
+                //先查是否有
+                $hasArticle = Article::where('owner',$studioId)
+                              ->where('title',$realTitle)
+                              ->exists();
+                if($hasArticle){
+                    $this->error('文章已经存在 title='.$realTitle);
+                    continue;
+                }
+                $count++;
+                $this->info('新建 title='.$realTitle);
+                sleep(2);
+                $response = Http::withToken($token)->post($url,
+                                [
+                                    'title'=> $realTitle,
+                                    'lang'=> 'my',
+                                    'studio'=> $studioName,
+                                    'anthologyId'=> $anthologyId,
+                                ]);
+                if($response->ok()){
+                    $this->info('create ok');
+                    $articleId = $response->json('data')['uid'];
+                }else{
+                    $this->error('create article fail.'.$realTitle);
+                    Log::error('create article fail title='.$realTitle);
+                    $fail++;
+                    continue;
+                }
+                sleep(2);
+                $this->info('修改 id='.$articleId);
+                $response = Http::withToken($token)->put($url.'/'.$articleId,
+                                    [
+                                        'title'=> $realTitle,
+                                        'subtitle'=> $realTitle,
+                                        'lang'=> 'my',
+                                        'content'=> $contentCombine,
+                                        'anthology_id'=>$anthologyId,
+                                        'to_tpl'=>true,
+                                        'status'=>30,
+                                    ]);
+
+                if($response->ok()){
+                    $this->info('edit ok');
+                    $success++;
+                }else{
+                    $this->error('edit article fail');
+                    Log::error('edit article fail ',['id'=>$articleId,'title'=>$realTitle]);
+                    $fail++;
+                }
+            }
+            $inputRow++;
+        }
+
+        fclose($fp);
+
+        $this->info('成功='.$success.' 失败='.$fail);
+        return 0;
+    }
+}

+ 123 - 0
app/Console/Commands/ImportArticleMap.php

@@ -0,0 +1,123 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Illuminate\Console\Command;
+
+class ImportArticleMap extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'import:article.map {--token=} {--studio=} {--anthology=}';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = '重置缅文tipitaka sarupa文章目录';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return int
+     */
+    public function handle()
+    {
+        if (!$this->confirm('Do you wish to continue?')) {
+            return 0;
+        }
+        $token = $this->option('token');
+        $studioName = $this->option('studio');
+        $anthologyId = $this->option('anthology');
+
+        //先获取文章列表,建立全部目录
+        $url = config('app.url').'/api/v2/article-map';
+        $response = Http::get($url,[
+            'view'=>'anthology',
+            'id'=>$anthologyId,
+        ]);
+        if($response->failed()){
+            $this->error('获取文章列表 fail');
+            return 0;
+        }else{
+            $this->info('获取文章列表 ok');
+        }
+        if(!$response->json('ok')){
+            $this->error('http request error'.$response->json('message'));
+            return 0;
+        }
+        $articles = $response->json('data.rows');
+        $this->info('打开csv文件并读取数据');
+        $head = array();
+        $strFileName = __DIR__."/tipitaka-sarupa.csv";
+        if(!file_exists($strFileName)){
+            $this->error($strFileName.'文件不存在');
+            return 1;
+        }
+
+        if (($fp = fopen($strFileName, "r")) === false) {
+            $this->error("can not open csv $strFileName");
+            return 0;
+        }
+        $inputRow = 0;
+        while (($data = fgetcsv($fp, 0, ',')) !== false) {
+            if($inputRow>0){
+                if(!isset($head[$data[1]])){
+                    $head[$data[1]] = 1;
+                }
+            }
+            $inputRow++;
+        }
+
+        $this->info("csv head=" .count($head));
+
+        $titles = array();
+        $allTitles = array();
+        foreach ($articles as $key => $article) {
+            $allTitles[$article['title']] = $article['article_id'];
+            if($article['level']===1 && isset($head[$article['title']])){
+                $titles[$article['title']] = $article['article_id'];
+                $this->info('已有='.$article['title']);
+            }
+        }
+        $this->info("article map head=" .count($titles));
+        //新建目录
+        foreach ($head as $key => $value) {
+            if(!isset($titles[$key])){
+                $this->info('没有key'.$key.'新建');
+                $url = config('app.url').'/api/v2/article';
+                $response = Http::withToken($token)->post($url,
+                                [
+                                    'title'=> $key,
+                                    'lang'=> 'my',
+                                    'studio'=> $studioName,
+                                    'anthologyId'=> $anthologyId,
+                                ]);
+                if($response->ok()){
+                    $this->info('append ok title='.$key);
+                    $articleId = $response->json('data')['uid'];
+                    $titles[$key] = $articleId;
+                }else{
+                    $this->error('append fail');
+                    Log::error('append fail');
+                }
+            }
+        }
+        print_r($titles);
+        return 0;
+    }
+}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 24 - 0
app/Console/Commands/tipitaka-sarupa.csv


+ 758 - 24
app/Http/Api/BookTitle.php

@@ -2,6 +2,739 @@
 namespace App\Http\Api;
 
 class BookTitle{
+    //缅文书名缩写映射表
+    public static function my(){
+        return [
+  [
+    "title1" => "abhi,dha",
+    "title2" => "အဘိ၊ဓ",
+    "bookname" => "dhammasaṅgaṇīpāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "abhi,ka",
+    "title2" => "အဘိ၊က",
+    "bookname" => "kathāvatthupāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "abhi,pu",
+    "title2" => "အဘိ၊ပု",
+    "bookname" => "puggalapaññattipāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "abhi,ṭṭha,1",
+    "title2" => "အဘိ၊ဋ္ဌ၊၁",
+    "bookname" => "dhammasaṅgaṇī-aṭṭhakathā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "abhi,ṭṭha,2",
+    "title2" => "အဘိ၊ဋ္ဌ၊၂",
+    "bookname" => "vibhaṅga-aṭṭhakathā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "abhi,ṭṭha,3",
+    "title2" => "အဘိ၊ဋ္ဌ၊၃",
+    "bookname" => "pañcapakaraṇa-aṭṭhakathā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "abhi,vi",
+    "title2" => "အဘိ၊ဝိ",
+    "bookname" => "vibhaṅgapāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "aṃ,1",
+    "title2" => "အံ၊၁",
+    "bookname" => "aṅguttaranikāya",
+    "volume" => 1
+  ],
+  [
+    "title1" => "aṃ,2",
+    "title2" => "အံ၊၂",
+    "bookname" => "aṅguttaranikāya",
+    "volume" => 2
+  ],
+  [
+    "title1" => "aṃ,3",
+    "title2" => "အံ၊၃",
+    "bookname" => "aṅguttaranikāya",
+    "volume" => 3
+  ],
+  [
+    "title1" => "aṃ,ṭī,1",
+    "title2" => "အံ၊ဋီ၊၁",
+    "bookname" => "aṅguttaranikāya-ṭīkā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "aṃ,ṭī,2",
+    "title2" => "အံ၊ဋီ၊၂",
+    "bookname" => "aṅguttaranikāya-ṭīkā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "aṃ,ṭī,3",
+    "title2" => "အံ၊ဋီ၊၃",
+    "bookname" => "aṅguttaranikāya-ṭīkā",
+    "volume" => 3
+  ],
+  [
+    "title1" => "aṃ,ṭṭha,1",
+    "title2" => "အံ၊ဋ္ဌ၊၁",
+    "bookname" => "aṅguttaranikāya-aṭṭhakathā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "aṃ,ṭṭha,2",
+    "title2" => "အံ၊ဋ္ဌ၊၂",
+    "bookname" => "aṅguttaranikāya-aṭṭhakathā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "aṃ,ṭṭha,3",
+    "title2" => "အံ၊ဋ္ဌ၊၃",
+    "bookname" => "aṅguttaranikāya-aṭṭhakathā",
+    "volume" => 3
+  ],
+  [
+    "title1" => "anuṭī,2",
+    "title2" => "အနုဋီ၊၂",
+    "bookname" => "vibhaṅga-anuṭīkā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "anuṭī,3",
+    "title2" => "အနုဋီ၊၃",
+    "bookname" => "pañcapakaraṇa-anuṭīkā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "apa,1",
+    "title2" => "အပ၊၁",
+    "bookname" => "therāpadānapāḷi",
+    "volume" => 1
+  ],
+  [
+    "title1" => "apa,2",
+    "title2" => "အပ၊၂",
+    "bookname" => "therāpadānapāḷi",
+    "volume" => 2
+  ],
+  [
+    "title1" => "apa,ṭṭha,1",
+    "title2" => "အပ၊ဋ္ဌ၊၁",
+    "bookname" => "apadāna-aṭṭhakathā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "apa,ṭṭha,2",
+    "title2" => "အပ၊ဋ္ဌ၊၂",
+    "bookname" => "apadāna-aṭṭhakathā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "buddhavaṃ,ṭṭha",
+    "title2" => "ဗုဒ္ဓဝံ၊ဋ္ဌ",
+    "bookname" => "buddhavaṃsa-aṭṭhakathā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "cariyā,ṭṭha",
+    "title2" => "စရိယာ၊ဋ္ဌ",
+    "bookname" => "cariyāpiṭaka-aṭṭhakathā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "cūḷani",
+    "title2" => "စူဠနိ",
+    "bookname" => "cūḷaniddesapāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "cūḷani,ṭṭha",
+    "title2" => "စူဠနိ၊ဋ္ဌ",
+    "bookname" => "cūḷaniddesa-aṭṭhakathā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "dhamma",
+    "title2" => "ဓမ္မ",
+    "bookname" => "dhammapadapāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "dhamma,ṭṭha,1",
+    "title2" => "ဓမ္မ၊ဋ္ဌ၊၁",
+    "bookname" => "dhammapada-aṭṭhakathā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "dhamma,ṭṭha,2",
+    "title2" => "ဓမ္မ၊ဋ္ဌ၊၂",
+    "bookname" => "dhammapada-aṭṭhakathā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "dī,1",
+    "title2" => "ဒီ၊၁",
+    "bookname" => "dīghanikāya",
+    "volume" => 1
+  ],
+  [
+    "title1" => "dī,2",
+    "title2" => "ဒီ၊၂",
+    "bookname" => "dīghanikāya",
+    "volume" => 2
+  ],
+  [
+    "title1" => "dī,3",
+    "title2" => "ဒီ၊၃",
+    "bookname" => "dīghanikāya",
+    "volume" => 3
+  ],
+  [
+    "title1" => "dī,ṭī,1",
+    "title2" => "ဒီ၊ဋီ၊၁",
+    "bookname" => "dīghanikāya-ṭīkā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "dī,ṭī,2",
+    "title2" => "ဒီ၊ဋီ၊၂",
+    "bookname" => "dīghanikāya-ṭīkā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "dī,ṭī,3",
+    "title2" => "ဒီ၊ဋီ၊၃",
+    "bookname" => "dīghanikāya-ṭīkā",
+    "volume" => 3
+  ],
+  [
+    "title1" => "dī,ṭṭha,1",
+    "title2" => "ဒီ၊ဋ္ဌ၊၁",
+    "bookname" => "dīghanikāya-aṭṭhakathā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "dī,ṭṭha,2",
+    "title2" => "ဒီ၊ဋ္ဌ၊၂",
+    "bookname" => "dīghanikāya-aṭṭhakathā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "dī,ṭṭha,3",
+    "title2" => "ဒီ၊ဋ္ဌ၊၃",
+    "bookname" => "dīghanikāya-aṭṭhakathā",
+    "volume" => 3
+  ],
+  [
+    "title1" => "itivuta,ṭṭha",
+    "title2" => "ဣတိဝုတ၊ဋ္ဌ",
+    "bookname" => "itivuttaka-aṭṭhakathā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "jā,1",
+    "title2" => "ဇာ၊၁",
+    "bookname" => "jātakapāḷi",
+    "volume" => 1
+  ],
+  [
+    "title1" => "jā,2",
+    "title2" => "ဇာ၊၂",
+    "bookname" => "jātakapāḷi",
+    "volume" => 2
+  ],
+  [
+    "title1" => "jā,ṭṭha,1",
+    "title2" => "ဇာ၊ဋ္ဌ၊၁",
+    "bookname" => "jātaka-aṭṭhakathā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "jā,ṭṭha,2",
+    "title2" => "ဇာ၊ဋ္ဌ၊၂",
+    "bookname" => "jātaka-aṭṭhakathā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "jā,ṭṭha,3",
+    "title2" => "ဇာ၊ဋ္ဌ၊၃",
+    "bookname" => "jātaka-aṭṭhakathā",
+    "volume" => 3
+  ],
+  [
+    "title1" => "jā,ṭṭha,4",
+    "title2" => "ဇာ၊ဋ္ဌ၊၄",
+    "bookname" => "jātaka-aṭṭhakathā",
+    "volume" => 4
+  ],
+  [
+    "title1" => "jā,ṭṭha,5",
+    "title2" => "ဇာ၊ဋ္ဌ၊၅",
+    "bookname" => "jātaka-aṭṭhakathā",
+    "volume" => 5
+  ],
+  [
+    "title1" => "jā,ṭṭha,6",
+    "title2" => "ဇာ၊ဋ္ဌ၊၆",
+    "bookname" => "jātaka-aṭṭhakathā",
+    "volume" => 6
+  ],
+  [
+    "title1" => "jā,ṭṭha,7",
+    "title2" => "ဇာ၊ဋ္ဌ၊၇",
+    "bookname" => "jātaka-aṭṭhakathā",
+    "volume" => 7
+  ],
+  [
+    "title1" => "jātaka,1",
+    "title2" => "ဇာတက၊၁",
+    "bookname" => "jātakapāḷi",
+    "volume" => 1
+  ],
+  [
+    "title1" => "jātaka,2",
+    "title2" => "ဇာတက၊၂",
+    "bookname" => "jātakapāḷi",
+    "volume" => 2
+  ],
+  [
+    "title1" => "khuddaka",
+    "title2" => "ခုဒ္ဒက",
+    "bookname" => "khuddakapāṭhapāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "khuddaka,ṭṭha",
+    "title2" => "ခုဒ္ဒက၊ဋ္ဌ",
+    "bookname" => "khuddakapāṭha-aṭṭhakathā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "ma,1",
+    "title2" => "မ၊၁",
+    "bookname" => "majjhimanikaya",
+    "volume" => 1
+  ],
+  [
+    "title1" => "ma,2",
+    "title2" => "မ၊၂",
+    "bookname" => "majjhimanikaya",
+    "volume" => 2
+  ],
+  [
+    "title1" => "ma,3",
+    "title2" => "မ၊၃",
+    "bookname" => "majjhimanikaya",
+    "volume" => 3
+  ],
+  [
+    "title1" => "ma,ṭī,1",
+    "title2" => "မ၊ဋီ၊၁",
+    "bookname" => "majjhimanikaya-ṭīkā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "ma,ṭī,2",
+    "title2" => "မ၊ဋီ၊၂",
+    "bookname" => "majjhimanikaya-ṭīkā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "ma,ṭī,3",
+    "title2" => "မ၊ဋီ၊၃",
+    "bookname" => "majjhimanikaya-ṭīkā",
+    "volume" => 3
+  ],
+  [
+    "title1" => "ma,ṭṭha,1",
+    "title2" => "မ၊ဋ္ဌ၊၁",
+    "bookname" => "majimanikaya-aṭṭhakathā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "ma,ṭṭha,2",
+    "title2" => "မ၊ဋ္ဌ၊၂",
+    "bookname" => "majimanikaya-aṭṭhakathā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "ma,ṭṭha,3",
+    "title2" => "မ၊ဋ္ဌ၊၃",
+    "bookname" => "majimanikaya-aṭṭhakathā",
+    "volume" => 3
+  ],
+  [
+    "title1" => "ma,ṭṭha,4",
+    "title2" => "မ၊ဋ္ဌ၊၄",
+    "bookname" => "majimanikaya-aṭṭhakathā",
+    "volume" => 4
+  ],
+  [
+    "title1" => "mahāni",
+    "title2" => "မဟာနိ",
+    "bookname" => "mahāniddesapāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "mahāni,ṭṭha",
+    "title2" => "မဟာနိ၊ဋ္ဌ",
+    "bookname" => "mahāniddesa-aṭṭhakathā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "milinda",
+    "title2" => "မိလိန္ဒ",
+    "bookname" => "milindapañhapāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "mūlaṭī,1",
+    "title2" => "မူလဋီ၊၁",
+    "bookname" => "dhammasaṅgaṇī-mūlaṭīkā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "mūlaṭī,2",
+    "title2" => "မူလဋီ၊၂",
+    "bookname" => "vibhaṅga-mūlaṭīkā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "netti",
+    "title2" => "နေတ္တိ",
+    "bookname" => "nettippakaraṇapāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "netti,ṭṭha",
+    "title2" => "နေတ္တိ၊ဋ္ဌ",
+    "bookname" => "nettippakaraṇa-aṭṭhakathā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "netti,vibhā",
+    "title2" => "နေတ္တိ၊ဝိဘာ",
+    "bookname" => "nettivibhāvinī",
+    "volume" => 0
+  ],
+  [
+    "title1" => "paṭisaṃ",
+    "title2" => "ပဋိသံ",
+    "bookname" => "paṭisambhidāmaggapāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "paṭisaṃ,ṭṭha,1",
+    "title2" => "ပဋိသံ၊ဋ္ဌ၊၁",
+    "bookname" => "paṭisambhidāmagga-aṭṭhakathā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "paṭisaṃ,ṭṭha,2",
+    "title2" => "ပဋိသံ၊ဋ္ဌ၊၂",
+    "bookname" => "paṭisambhidāmagga-aṭṭhakathā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "paṭisambhidāmaga,pāḷi",
+    "title2" => "ပဋိသမ္ဘိဒါမဂ်၊ပါဠိ",
+    "bookname" => "paṭisambhidāmaggapāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "paṭṭhāna,1",
+    "title2" => "ပဋ္ဌာန၊၁",
+    "bookname" => "paṭṭhānapāḷi",
+    "volume" => 1
+  ],
+  [
+    "title1" => "paṭṭhāna,2",
+    "title2" => "ပဋ္ဌာန၊၂",
+    "bookname" => "paṭṭhānapāḷi",
+    "volume" => 2
+  ],
+  [
+    "title1" => "paṭṭhāna,3",
+    "title2" => "ပဋ္ဌာန၊၃",
+    "bookname" => "paṭṭhānapāḷi",
+    "volume" => 3
+  ],
+  [
+    "title1" => "paṭṭhāna,4",
+    "title2" => "ပဋ္ဌာန၊၄",
+    "bookname" => "paṭṭhānapāḷi",
+    "volume" => 4
+  ],
+  [
+    "title1" => "peta,ṭṭha",
+    "title2" => "ပေတ၊ဋ္ဌ",
+    "bookname" => "petavatthupāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "peṭako",
+    "title2" => "ပေဋကော",
+    "bookname" => "peṭakopadesapāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "saṃ,1",
+    "title2" => "သံ၊၁",
+    "bookname" => "saṃyuttanikāya",
+    "volume" => 1
+  ],
+  [
+    "title1" => "saṃ,2",
+    "title2" => "သံ၊၂",
+    "bookname" => "saṃyuttanikāya",
+    "volume" => 2
+  ],
+  [
+    "title1" => "saṃ,3",
+    "title2" => "သံ၊၃",
+    "bookname" => "saṃyuttanikāya",
+    "volume" => 3
+  ],
+  [
+    "title1" => "saṃ,ṭī,1",
+    "title2" => "သံ၊ဋီ၊၁",
+    "bookname" => "saṃyuttanikāya-ṭīkā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "saṃ,ṭī,2",
+    "title2" => "သံ၊ဋီ၊၂",
+    "bookname" => "saṃyuttanikāya-ṭīkā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "saṃ,ṭṭha,1",
+    "title2" => "သံ၊ဋ္ဌ၊၁",
+    "bookname" => "saṃyuttanikāya-aṭṭhakathā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "saṃ,ṭṭha,2",
+    "title2" => "သံ၊ဋ္ဌ၊၂",
+    "bookname" => "saṃyuttanikāya-aṭṭhakathā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "saṃ,ṭṭha,3",
+    "title2" => "သံ၊ဋ္ဌ၊၃",
+    "bookname" => "saṃyuttanikāya-aṭṭhakathā",
+    "volume" => 3
+  ],
+  [
+    "title1" => "sārattha,ṭī,1",
+    "title2" => "သာရတ္ထ၊ဋီ၊၁",
+    "bookname" => "sāratthadīpanī-ṭīkā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "sārattha,ṭī,2",
+    "title2" => "သာရတ္ထ၊ဋီ၊၂",
+    "bookname" => "sāratthadīpanī-ṭīkā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "sārattha,ṭī,3",
+    "title2" => "သာရတ္ထ၊ဋီ၊၃",
+    "bookname" => "sāratthadīpanī-ṭīkā",
+    "volume" => 3
+  ],
+  [
+    "title1" => "suttani,ṭṭha,1",
+    "title2" => "သုတ္တနိ၊ဋ္ဌ၊၁",
+    "bookname" => "suttanipāta-aṭṭhakathā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "suttani,ṭṭha,2",
+    "title2" => "သုတ္တနိ၊ဋ္ဌ၊၂",
+    "bookname" => "suttanipāta-aṭṭhakathā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "suttaniṭṭha,2",
+    "title2" => "သုတ္တနိဋ္ဌ၊၂",
+    "bookname" => "suttanipāta-aṭṭhakathā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "thera,ṭṭha,1",
+    "title2" => "ထေရ၊ဋ္ဌ၊၁",
+    "bookname" => "theragāthā-aṭṭhakathā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "thera,ṭṭha,2",
+    "title2" => "ထေရ၊ဋ္ဌ၊၂",
+    "bookname" => "theragāthā-aṭṭhakathā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "theragāthā",
+    "title2" => "ထေရဂါထာ",
+    "bookname" => "theragāthāpāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "therī",
+    "title2" => "ထေရီ",
+    "bookname" => "therīgāthāpāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "therī,ṭṭha",
+    "title2" => "ထေရီ၊ဋ္ဌ",
+    "bookname" => "therīgāthā-aṭṭhakathā",
+    "volume" => 0
+  ],
+  [ "title1" => "udāna", "title2" => "ဥဒါန", "bookname" => "udānapāḷi", "volume" => 0 ],
+  [
+    "title1" => "udāna,ṭṭha",
+    "title2" => "ဥဒါန၊ဋ္ဌ",
+    "bookname" => "udāna-aṭṭhakathā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "vajira",
+    "title2" => "ဝဇိရ",
+    "bookname" => "vajirabuddhi-ṭīkā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "vajira,ṭī",
+    "title2" => "ဝဇိရ၊ဋီ",
+    "bookname" => "vajirabuddhi-ṭīkā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "vi,1",
+    "title2" => "ဝိ၊၁",
+    "bookname" => "pārājikapāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "vi,2",
+    "title2" => "ဝိ၊၂",
+    "bookname" => "pācittiyapāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "vi,3",
+    "title2" => "ဝိ၊၃",
+    "bookname" => "mahāvaggapāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "vi,4",
+    "title2" => "ဝိ၊၄",
+    "bookname" => "cūḷavaggapāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "vi,5",
+    "title2" => "ဝိ၊၅",
+    "bookname" => "parivārapāḷi",
+    "volume" => 0
+  ],
+  [
+    "title1" => "vi,ṭṭha,1",
+    "title2" => "ဝိ၊ဋ္ဌ၊၁",
+    "bookname" => "pārājikakaṇḍa-aṭṭhakathā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "vi,ṭṭha,2",
+    "title2" => "ဝိ၊ဋ္ဌ၊၂",
+    "bookname" => "pārājikakaṇḍa-aṭṭhakathā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "vi,ṭṭha,3",
+    "title2" => "ဝိ၊ဋ္ဌ၊၃",
+    "bookname" => "pācittiyādi-aṭṭhakathā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "vi,ṭṭha,4",
+    "title2" => "ဝိ၊ဋ္ဌ၊၄",
+    "bookname" => "cūḷavaggādi-aṭṭhakathā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "vimāna,ṭṭha",
+    "title2" => "ဝိမာန၊ဋ္ဌ",
+    "bookname" => "vimānavatthu-aṭṭhakathā",
+    "volume" => 0
+  ],
+  [
+    "title1" => "vimati,1",
+    "title2" => "ဝိမတိ၊၁",
+    "bookname" => "vimativinodanī-ṭīkā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "vimati,2",
+    "title2" => "ဝိမတိ၊၂",
+    "bookname" => "vimativinodanī-ṭīkā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "visuddhi,1",
+    "title2" => "ဝိသုဒ္ဓိ၊၁",
+    "bookname" => "visuddhimagga",
+    "volume" => 1
+  ],
+  [
+    "title1" => "visuddhi,2",
+    "title2" => "ဝိသုဒ္ဓိ၊၂",
+    "bookname" => "visuddhimagga",
+    "volume" => 2
+  ],
+  [
+    "title1" => "visuddhi,ṭī,1",
+    "title2" => "ဝိသုဒ္ဓိ၊ဋီ၊၁",
+    "bookname" => "visuddhimagga-mahāṭīkā",
+    "volume" => 1
+  ],
+  [
+    "title1" => "visuddhi,ṭī,2",
+    "title2" => "ဝိသုဒ္ဓိ၊ဋီ၊၂",
+    "bookname" => "visuddhimagga-mahāṭīkā",
+    "volume" => 2
+  ],
+  [
+    "title1" => "yamaka,1",
+    "title2" => "ယမက၊၁",
+    "bookname" => "yamakapāḷi",
+    "volume" => 1
+  ],
+  [
+    "title1" => "yamaka,2",
+    "title2" => "ယမက၊၂",
+    "bookname" => "yamakapāḷi",
+    "volume" => 2
+  ],
+  [
+    "title1" => "yamaka,3",
+    "title2" => "ယမက၊၃",
+    "bookname" => "yamakapāḷi",
+    "volume" => 3
+  ]
+  ];
+
+    }
     public static function get(){
         return [
   [
@@ -679,8 +1412,8 @@ class BookTitle{
     "book" => 66,
     "name" => "Visuddhimagga-mahāṭīkā(Paṭhamo bhāgo)",
     "term" => "Visuddhimagga-mahāṭīkā",
-    "v_title" => "Visuddhimagga-mahāṭīkā",
-    "m_title" => "Visuddhimagga-mahāṭīkā",
+    "v_title" => "visuddhimagga-mahāṭīkā",
+    "m_title" => "visuddhimagga-mahāṭīkā",
     "p_title" => "Visuddhimagga-mahāṭīkā",
     "abbr" => "visuddhi. ṭī."
   ],
@@ -689,8 +1422,8 @@ class BookTitle{
     "book" => 67,
     "name" => "Visuddhimagga-mahāṭīkā(Dutiyo bhāgo)",
     "term" => "Visuddhimagga-mahāṭīkā",
-    "v_title" => "Visuddhimagga-mahāṭīkā",
-    "m_title" => "Visuddhimagga-mahāṭīkā",
+    "v_title" => "visuddhimagga-mahāṭīkā",
+    "m_title" => "visuddhimagga-mahāṭīkā",
     "p_title" => "Visuddhimagga-mahāṭīkā",
     "abbr" => "visuddhi. ṭī."
   ],
@@ -1420,7 +2153,7 @@ class BookTitle{
     "name" => "Theragāthā-aṭṭhakathā(Paṭhamo bhāgo)",
     "term" => "Theragāthā-aṭṭhakathā",
     "v_title" => "Theragāthā-aṭṭhakathā",
-    "m_title" => "Theragāthā-aṭṭhakathā",
+    "m_title" => "theragāthā-aṭṭhakathā",
     "p_title" => "Theragāthā-aṭṭhakathā",
     "abbr" => "thera. ṭṭha."
   ],
@@ -1430,7 +2163,7 @@ class BookTitle{
     "name" => "Theragāthā-aṭṭhakathā(Dutiyo bhāgo)",
     "term" => "Theragāthā-aṭṭhakathā",
     "v_title" => "Theragāthā-aṭṭhakathā",
-    "m_title" => "Theragāthā-aṭṭhakathā",
+    "m_title" => "theragāthā-aṭṭhakathā",
     "p_title" => "Theragāthā-aṭṭhakathā",
     "abbr" => "thera. ṭṭha."
   ],
@@ -1540,7 +2273,7 @@ class BookTitle{
     "name" => "Mahāvagga-aṭṭhakathā",
     "term" => "vinaya-aṭṭhakathā",
     "v_title" => "vinaya-aṭṭhakathā",
-    "m_title" => "mahāvagga-aṭṭhakathā",
+    "m_title" => "pācittiyādi-aṭṭhakathā",
     "p_title" => "vinaya-aṭṭhakathā",
     "abbr" => "vi. ṭṭha."
   ],
@@ -1560,7 +2293,7 @@ class BookTitle{
     "name" => "Parivāra-aṭṭhakathā",
     "term" => "vinaya-aṭṭhakathā",
     "v_title" => "vinaya-aṭṭhakathā",
-    "m_title" => "parivāra-aṭṭhakathā",
+    "m_title" => "cūḷavaggādi-aṭṭhakathā",
     "p_title" => "vinaya-aṭṭhakathā",
     "abbr" => "vi. ṭṭha."
   ],
@@ -2130,7 +2863,7 @@ class BookTitle{
     "name" => "tikanipāta-ṭīkā",
     "term" => "tikanipāta-ṭīkā",
     "v_title" => "tikanipāta-ṭīkā",
-    "m_title" => "tikanipāta-ṭīkā",
+    "m_title" => "aṅguttaranikāya-ṭīkā",
     "p_title" => "tikanipāta-ṭīkā",
     "abbr" => "aṃ. ṭī."
   ],
@@ -2140,7 +2873,7 @@ class BookTitle{
     "name" => "catukkanipāta-ṭīkā",
     "term" => "catukkanipāta-ṭīkā",
     "v_title" => "catukkanipāta-ṭīkā",
-    "m_title" => "catukkanipāta-ṭīkā",
+    "m_title" => "aṅguttaranikāya-ṭīkā",
     "p_title" => "catukkanipāta-ṭīkā",
     "abbr" => "aṃ. ṭī."
   ],
@@ -2160,7 +2893,7 @@ class BookTitle{
     "name" => "chakkanipāta-ṭīkā",
     "term" => "chakkanipāta-ṭīkā",
     "v_title" => "chakkanipāta-ṭīkā",
-    "m_title" => "chakkanipāta-ṭīkā",
+    "m_title" => "aṅguttaranikāya-ṭīkā",
     "p_title" => "chakkanipāta-ṭīkā",
     "abbr" => "aṃ. ṭī."
   ],
@@ -2170,7 +2903,7 @@ class BookTitle{
     "name" => "sattakanipāta-ṭīkā",
     "term" => "sattakanipāta-ṭīkā",
     "v_title" => "sattakanipāta-ṭīkā",
-    "m_title" => "sattakanipāta-ṭīkā",
+    "m_title" => "aṅguttaranikāya-ṭīkā",
     "p_title" => "sattakanipāta-ṭīkā",
     "abbr" => "aṃ. ṭī."
   ],
@@ -2190,7 +2923,7 @@ class BookTitle{
     "name" => "navakanipāta-ṭīkā",
     "term" => "navakanipāta-ṭīkā",
     "v_title" => "navakanipāta-ṭīkā",
-    "m_title" => "navakanipāta-ṭīkā",
+    "m_title" => "aṅguttaranikāya-ṭīkā",
     "p_title" => "navakanipāta-ṭīkā",
     "abbr" => "aṃ. ṭī."
   ],
@@ -2200,7 +2933,7 @@ class BookTitle{
     "name" => "dasakanipāta-ṭīkā",
     "term" => "dasakanipāta-ṭīkā",
     "v_title" => "dasakanipāta-ṭīkā",
-    "m_title" => "dasakanipāta-ṭīkā",
+    "m_title" => "aṅguttaranikāya-ṭīkā",
     "p_title" => "dasakanipāta-ṭīkā",
     "abbr" => "aṃ. ṭī."
   ],
@@ -2210,7 +2943,7 @@ class BookTitle{
     "name" => "ekādasakanipāta-ṭīkā",
     "term" => "ekādasakanipāta-ṭīkā",
     "v_title" => "ekādasakanipāta-ṭīkā",
-    "m_title" => "ekādasakanipāta-ṭīkā",
+    "m_title" => "aṅguttaranikāya-ṭīkā",
     "p_title" => "ekādasakanipāta-ṭīkā",
     "abbr" => "aṃ. ṭī."
   ],
@@ -2639,8 +3372,8 @@ class BookTitle{
     "book" => 210,
     "name" => "Vimativinodanī-ṭīkā",
     "term" => "Vimativinodanī-ṭīkā",
-    "v_title" => "Vimativinodanī-ṭīkā",
-    "m_title" => "Vimativinodanī-ṭīkā",
+    "v_title" => "vimativinodanī-ṭīkā",
+    "m_title" => "vimativinodanī-ṭīkā",
     "p_title" => "Vimativinodanī-ṭīkā",
     "abbr" => "vimati. ṭī."
   ],
@@ -2649,8 +3382,8 @@ class BookTitle{
     "book" => 210,
     "name" => "Vimativinodanī-ṭīkā",
     "term" => "Vimativinodanī-ṭīkā",
-    "v_title" => "Vimativinodanī-ṭīkā",
-    "m_title" => "Vimativinodanī-ṭīkā",
+    "v_title" => "vimativinodanī-ṭīkā",
+    "m_title" => "vimativinodanī-ṭīkā",
     "p_title" => "Vimativinodanī-ṭīkā",
     "abbr" => "vimati. ṭī."
   ],
@@ -2659,8 +3392,8 @@ class BookTitle{
     "book" => 210,
     "name" => "Vimativinodanī-ṭīkā",
     "term" => "Vimativinodanī-ṭīkā",
-    "v_title" => "Vimativinodanī-ṭīkā",
-    "m_title" => "Vimativinodanī-ṭīkā",
+    "v_title" => "vimativinodanī-ṭīkā",
+    "m_title" => "vimativinodanī-ṭīkā",
     "p_title" => "Vimativinodanī-ṭīkā",
     "abbr" => "vimati. ṭī."
   ],
@@ -2669,8 +3402,8 @@ class BookTitle{
     "book" => 210,
     "name" => "Vimativinodanī-ṭīkā",
     "term" => "Vimativinodanī-ṭīkā",
-    "v_title" => "Vimativinodanī-ṭīkā",
-    "m_title" => "Vimativinodanī-ṭīkā",
+    "v_title" => "vimativinodanī-ṭīkā",
+    "m_title" => "vimativinodanī-ṭīkā",
     "p_title" => "Vimativinodanī-ṭīkā",
     "abbr" => "vimati. ṭī."
   ],
@@ -2774,7 +3507,8 @@ class BookTitle{
     "p_title" => "vinayapiṭaka",
     "abbr" => "vi."
   ]
-];
+  ];
+
 
     }
 }

+ 29 - 7
app/Http/Api/TemplateRender.php

@@ -551,15 +551,15 @@ class TemplateRender{
 
     private  function render_quote_link(){
         $type = $this->get_param($this->param,"type",1);
-        $bookName = $this->get_param($this->param,"bookname",2,false);
+        $title = $this->get_param($this->param,"title",6,'');
+        $bookName = $this->get_param($this->param,"bookname",2,'');
         $volume = $this->get_param($this->param,"volume",3,false);
-        $page = $this->get_param($this->param,"page",4,false);
+        $page = $this->get_param($this->param,"page",4,'');
         $style = $this->get_param($this->param,"style",5,'modal');
-        $title = $this->get_param($this->param,"title",6,false);
         $book = $this->get_param($this->param,"book",7,false);
         $para = $this->get_param($this->param,"para",8,false);
 
-        if(!$bookName || !$volume || !$page){
+        if(empty($bookName) || !$volume || empty($page)){
             /**
              * 没有指定书名,根据book para 查询
              */
@@ -598,15 +598,37 @@ class TemplateRender{
                         $page = $pageInfo->page;
                     }
                 }
+            }else{
+                //没有书号用title查询
+                if($title){
+                    $tmpTitle = explode('။',$title);
+                    if(count($tmpTitle)>1){
+                        $tmpBookTitle = $tmpTitle[0];
+                        $tmpBookPage = $tmpTitle[1];
+                        $tmpBookPage = (int)str_replace(
+                                        ['၁','၂','၃','၄','၅','၆','၇','၈','၉','၀'],
+                                        ['1','2','3','4','5','6','7','8','9','0'],
+                                        $tmpBookPage);
+                        $found_key = array_search($tmpBookTitle, array_column(BookTitle::my(), 'title2'));
+                        if($found_key !== false){
+                            $bookName = BookTitle::my()[$found_key]['bookname'];
+                            $volume = BookTitle::my()[$found_key]['volume'];
+                            $page = $tmpBookPage;
+                        }
+                    }
+                }
             }
         }
+
         $props = [
             'type' => $type,
-            'bookName' => $bookName,
-            'volume' => $volume,
-            'page' => $page,
             'style' => $style,
         ];
+        if(!empty($bookName) && $volume!==false && !empty($page)){
+            $props['bookName'] = $bookName;
+            $props['volume'] = $volume;
+            $props['page'] = $page;
+        }
         if($book && $para){
             $props['book'] = $book;
             $props['para'] = $para;

+ 123 - 0
app/Http/Api/quote-my.csv

@@ -0,0 +1,123 @@
+title1,title2,bookname,volume
+abhi,dha,အဘိ၊ဓ,dhammasaṅgaṇīpāḷi,0
+abhi,ka,အဘိ၊က,kathāvatthupāḷi,0
+abhi,pu,အဘိ၊ပု,puggalapaññattipāḷi,0
+abhi,ṭṭha,1,အဘိ၊ဋ္ဌ၊၁,dhammasaṅgaṇī-aṭṭhakathā,0
+abhi,ṭṭha,2,အဘိ၊ဋ္ဌ၊၂,vibhaṅga-aṭṭhakathā,0
+abhi,ṭṭha,3,အဘိ၊ဋ္ဌ၊၃,pañcapakaraṇa-aṭṭhakathā,0
+abhi,vi,အဘိ၊ဝိ,vibhaṅgapāḷi,0
+aṃ,1,အံ၊၁,aṅguttaranikāya,1
+aṃ,2,အံ၊၂,aṅguttaranikāya,2
+aṃ,3,အံ၊၃,aṅguttaranikāya,3
+aṃ,ṭī,1,အံ၊ဋီ၊၁,aṅguttaranikāya-ṭīkā,1
+aṃ,ṭī,2,အံ၊ဋီ၊၂,aṅguttaranikāya-ṭīkā,2
+aṃ,ṭī,3,အံ၊ဋီ၊၃,aṅguttaranikāya-ṭīkā,3
+aṃ,ṭṭha,1,အံ၊ဋ္ဌ၊၁,aṅguttaranikāya-aṭṭhakathā,1
+aṃ,ṭṭha,2,အံ၊ဋ္ဌ၊၂,aṅguttaranikāya-aṭṭhakathā,2
+aṃ,ṭṭha,3,အံ၊ဋ္ဌ၊၃,aṅguttaranikāya-aṭṭhakathā,3
+anuṭī,2,အနုဋီ၊၂,vibhaṅga-anuṭīkā,0
+anuṭī,3,အနုဋီ၊၃,pañcapakaraṇa-anuṭīkā,0
+apa,1,အပ၊၁,therāpadānapāḷi,1
+apa,2,အပ၊၂,therāpadānapāḷi,2
+apa,ṭṭha,1,အပ၊ဋ္ဌ၊၁,apadāna-aṭṭhakathā,1
+apa,ṭṭha,2,အပ၊ဋ္ဌ၊၂,apadāna-aṭṭhakathā,2
+buddhavaṃ,ṭṭha,ဗုဒ္ဓဝံ၊ဋ္ဌ,buddhavaṃsa-aṭṭhakathā,0
+cariyā,ṭṭha,စရိယာ၊ဋ္ဌ,cariyāpiṭaka-aṭṭhakathā,0
+cūḷani,စူဠနိ,cūḷaniddesapāḷi,0
+cūḷani,ṭṭha,စူဠနိ၊ဋ္ဌ,cūḷaniddesa-aṭṭhakathā,0
+dhamma,ဓမ္မ,dhammapadapāḷi,0
+dhamma,ṭṭha,1,ဓမ္မ၊ဋ္ဌ၊၁,dhammapada-aṭṭhakathā,1
+dhamma,ṭṭha,2,ဓမ္မ၊ဋ္ဌ၊၂,dhammapada-aṭṭhakathā,2
+dī,1,ဒီ၊၁,dīghanikāya,1
+dī,2,ဒီ၊၂,dīghanikāya,2
+dī,3,ဒီ၊၃,dīghanikāya,3
+dī,ṭī,1,ဒီ၊ဋီ၊၁,dīghanikāya-ṭīkā,1
+dī,ṭī,2,ဒီ၊ဋီ၊၂,dīghanikāya-ṭīkā,2
+dī,ṭī,3,ဒီ၊ဋီ၊၃,dīghanikāya-ṭīkā,3
+dī,ṭṭha,1,ဒီ၊ဋ္ဌ၊၁,dīghanikāya-aṭṭhakathā,1
+dī,ṭṭha,2,ဒီ၊ဋ္ဌ၊၂,dīghanikāya-aṭṭhakathā,2
+dī,ṭṭha,3,ဒီ၊ဋ္ဌ၊၃,dīghanikāya-aṭṭhakathā,3
+itivuta,ṭṭha,ဣတိဝုတ၊ဋ္ဌ,itivuttaka-aṭṭhakathā,0
+jā,1,ဇာ၊၁,jātakapāḷi,1
+jā,2,ဇာ၊၂,jātakapāḷi,2
+jā,ṭṭha,1,ဇာ၊ဋ္ဌ၊၁,jātaka-aṭṭhakathā,1
+jā,ṭṭha,2,ဇာ၊ဋ္ဌ၊၂,jātaka-aṭṭhakathā,2
+jā,ṭṭha,3,ဇာ၊ဋ္ဌ၊၃,jātaka-aṭṭhakathā,3
+jā,ṭṭha,4,ဇာ၊ဋ္ဌ၊၄,jātaka-aṭṭhakathā,4
+jā,ṭṭha,5,ဇာ၊ဋ္ဌ၊၅,jātaka-aṭṭhakathā,5
+jā,ṭṭha,6,ဇာ၊ဋ္ဌ၊၆,jātaka-aṭṭhakathā,6
+jā,ṭṭha,7,ဇာ၊ဋ္ဌ၊၇,jātaka-aṭṭhakathā,7
+jātaka,1,ဇာတက၊၁,jātakapāḷi,1
+jātaka,2,ဇာတက၊၂,jātakapāḷi,2
+khuddaka,ခုဒ္ဒက,khuddakapāṭhapāḷi,0
+khuddaka,ṭṭha,ခုဒ္ဒက၊ဋ္ဌ,khuddakapāṭha-aṭṭhakathā,0
+ma,1,မ၊၁,majjhimanikaya,1
+ma,2,မ၊၂,majjhimanikaya,2
+ma,3,မ၊၃,majjhimanikaya,3
+ma,ṭī,1,မ၊ဋီ၊၁,majjhimanikaya-ṭīkā,1
+ma,ṭī,2,မ၊ဋီ၊၂,majjhimanikaya-ṭīkā,2
+ma,ṭī,3,မ၊ဋီ၊၃,majjhimanikaya-ṭīkā,3
+ma,ṭṭha,1,မ၊ဋ္ဌ၊၁,majimanikaya-aṭṭhakathā,1
+ma,ṭṭha,2,မ၊ဋ္ဌ၊၂,majimanikaya-aṭṭhakathā,2
+ma,ṭṭha,3,မ၊ဋ္ဌ၊၃,majimanikaya-aṭṭhakathā,3
+ma,ṭṭha,4,မ၊ဋ္ဌ၊၄,majimanikaya-aṭṭhakathā,4
+mahāni,မဟာနိ,mahāniddesapāḷi,0
+mahāni,ṭṭha,မဟာနိ၊ဋ္ဌ,mahāniddesa-aṭṭhakathā,0
+milinda,မိလိန္ဒ,milindapañhapāḷi,0
+mūlaṭī,1,မူလဋီ၊၁,dhammasaṅgaṇī-mūlaṭīkā,1
+mūlaṭī,2,မူလဋီ၊၂,vibhaṅga-mūlaṭīkā,2
+netti,နေတ္တိ,nettippakaraṇapāḷi,0
+netti,ṭṭha,နေတ္တိ၊ဋ္ဌ,nettippakaraṇa-aṭṭhakathā,0
+netti,vibhā,နေတ္တိ၊ဝိဘာ,nettivibhāvinī,0
+paṭisaṃ,ပဋိသံ,paṭisambhidāmaggapāḷi,0
+paṭisaṃ,ṭṭha,1,ပဋိသံ၊ဋ္ဌ၊၁,paṭisambhidāmagga-aṭṭhakathā,1
+paṭisaṃ,ṭṭha,2,ပဋိသံ၊ဋ္ဌ၊၂,paṭisambhidāmagga-aṭṭhakathā,2
+paṭisambhidāmaga,pāḷi,ပဋိသမ္ဘိဒါမဂ်၊ပါဠိ,paṭisambhidāmaggapāḷi,0
+paṭṭhāna,1,ပဋ္ဌာန၊၁,paṭṭhānapāḷi,1
+paṭṭhāna,2,ပဋ္ဌာန၊၂,paṭṭhānapāḷi,2
+paṭṭhāna,3,ပဋ္ဌာန၊၃,paṭṭhānapāḷi,3
+paṭṭhāna,4,ပဋ္ဌာန၊၄,paṭṭhānapāḷi,4
+peta,ṭṭha,ပေတ၊ဋ္ဌ,petavatthupāḷi,0
+peṭako,ပေဋကော,peṭakopadesapāḷi,0
+saṃ,1,သံ၊၁,saṃyuttanikāya,1
+saṃ,2,သံ၊၂,saṃyuttanikāya,2
+saṃ,3,သံ၊၃,saṃyuttanikāya,3
+saṃ,ṭī,1,သံ၊ဋီ၊၁,saṃyuttanikāya-ṭīkā,1
+saṃ,ṭī,2,သံ၊ဋီ၊၂,saṃyuttanikāya-ṭīkā,2
+saṃ,ṭṭha,1,သံ၊ဋ္ဌ၊၁,saṃyuttanikāya-aṭṭhakathā,1
+saṃ,ṭṭha,2,သံ၊ဋ္ဌ၊၂,saṃyuttanikāya-aṭṭhakathā,2
+saṃ,ṭṭha,3,သံ၊ဋ္ဌ၊၃,saṃyuttanikāya-aṭṭhakathā,3
+sārattha,ṭī,1,သာရတ္ထ၊ဋီ၊၁,sāratthadīpanī-ṭīkā,1
+sārattha,ṭī,2,သာရတ္ထ၊ဋီ၊၂,sāratthadīpanī-ṭīkā,2
+sārattha,ṭī,3,သာရတ္ထ၊ဋီ၊၃,sāratthadīpanī-ṭīkā,3
+suttani,ṭṭha,1,သုတ္တနိ၊ဋ္ဌ၊၁,suttanipāta-aṭṭhakathā,1
+suttani,ṭṭha,2,သုတ္တနိ၊ဋ္ဌ၊၂,suttanipāta-aṭṭhakathā,2
+suttaniṭṭha,2,သုတ္တနိဋ္ဌ၊၂,suttanipāta-aṭṭhakathā,2
+thera,ṭṭha,1,ထေရ၊ဋ္ဌ၊၁,theragāthā-aṭṭhakathā,1
+thera,ṭṭha,2,ထေရ၊ဋ္ဌ၊၂,theragāthā-aṭṭhakathā,2
+theragāthā,ထေရဂါထာ,theragāthāpāḷi,0
+therī,ထေရီ,therīgāthāpāḷi,0
+therī,ṭṭha,ထေရီ၊ဋ္ဌ,therīgāthā-aṭṭhakathā,0
+udāna,ဥဒါန,udānapāḷi,0
+udāna,ṭṭha,ဥဒါန၊ဋ္ဌ,udāna-aṭṭhakathā,0
+vajira,ဝဇိရ,vajirabuddhi-ṭīkā,0
+vajira,ṭī,ဝဇိရ၊ဋီ,vajirabuddhi-ṭīkā,0
+vi,1,ဝိ၊၁,pārājikapāḷi,0
+vi,2,ဝိ၊၂,pācittiyapāḷi,0
+vi,3,ဝိ၊၃,mahāvaggapāḷi,0
+vi,4,ဝိ၊၄,cūḷavaggapāḷi,0
+vi,5,ဝိ၊၅,parivārapāḷi,0
+vi,ṭṭha,1,ဝိ၊ဋ္ဌ၊၁,pārājikakaṇḍa-aṭṭhakathā,1
+vi,ṭṭha,2,ဝိ၊ဋ္ဌ၊၂,pārājikakaṇḍa-aṭṭhakathā,2
+vi,ṭṭha,3,ဝိ၊ဋ္ဌ၊၃,pācittiyādi-aṭṭhakathā,0
+vi,ṭṭha,4,ဝိ၊ဋ္ဌ၊၄,cūḷavaggādi-aṭṭhakathā,0
+vimāna,ṭṭha,ဝိမာန၊ဋ္ဌ,vimānavatthu-aṭṭhakathā,0
+vimati,1,ဝိမတိ၊၁,vimativinodanī-ṭīkā,1
+vimati,2,ဝိမတိ၊၂,vimativinodanī-ṭīkā,2
+visuddhi,1,ဝိသုဒ္ဓိ၊၁,visuddhimagga,1
+visuddhi,2,ဝိသုဒ္ဓိ၊၂,visuddhimagga,2
+visuddhi,ṭī,1,ဝိသုဒ္ဓိ၊ဋီ၊၁,visuddhimagga-mahāṭīkā,1
+visuddhi,ṭī,2,ဝိသုဒ္ဓိ၊ဋီ၊၂,visuddhimagga-mahāṭīkā,2
+yamaka,1,ယမက၊၁,yamakapāḷi,1
+yamaka,2,ယမက၊၂,yamakapāḷi,2
+yamaka,3,ယမက၊၃,yamakapāḷi,3

+ 32 - 15
app/Http/Controllers/ArticleController.php

@@ -283,13 +283,15 @@ class ArticleController extends Controller
         if(Article::where('title',$request->get('title'))->where('owner',$studioUuid)->exists()){
             return $this->error(__('validation.exists'));
         }*/
+        Log::debug('开始新建'.$request->get('title'));
+
         $newArticle = new Article;
         DB::transaction(function() use($user,$request,$newArticle){
             $studioUuid = StudioApi::getIdByName($request->get('studio'));
             //新建文章,加入文集必须都成功。否则回滚
             $newArticle->id = app('snowflake')->id();
             $newArticle->uid = Str::uuid();
-            $newArticle->title = $request->get('title');
+            $newArticle->title = mb_substr($request->get('title'),0,128,'UTF-8');
             $newArticle->lang = $request->get('lang');
             $newArticle->owner = $studioUuid;
             $newArticle->owner_id = $user['user_id'];
@@ -300,12 +302,15 @@ class ArticleController extends Controller
             $newArticle->save();
             OpsLog::debug($user['user_uid'],$newArticle);
 
+            Log::debug('开始挂接 id='.$newArticle->uid);
             $anthologyId = $request->get('anthologyId');
             if(Str::isUuid($anthologyId)){
                 $parentNode = $request->get('parentNode');
                 if(Str::isUuid($parentNode)){
+                    Log::debug('有挂接点'.$parentNode);
                     $map = ArticleCollection::where('collect_id',$anthologyId)
                                         ->orderBy('id')->get();
+                    Log::debug('查询到原map数据'.count($map));
                     $newMap = array();
                     $parentNodeLevel = -1;
                     $appended = false;
@@ -315,11 +320,14 @@ class ArticleController extends Controller
                             if($parentNodeLevel>0){
                                 if($row->level <= $parentNodeLevel ){
                                     //parent node 末尾
-                                    $newNode = $row;
+                                    $newNode = array();
+                                    $newNode['collect_id'] = $anthologyId;
                                     $newNode['article_id'] = $newArticle->uid;
                                     $newNode['level'] = $parentNodeLevel+1;
-                                    $newNode['title'] = Article::find($newArticle->uid)->title;
+                                    $newNode['title'] = $newArticle->title;
+                                    $newNode['children'] = 0;
                                     $newMap[] = $newNode;
+                                    Log::debug('新增节点',['node'=>$newNode]);
                                     $appended = true;
                                 }
                             }else{
@@ -331,17 +339,25 @@ class ArticleController extends Controller
                         }
                         $newMap[] = $orgNode;
                     }
-                    if($parentNodeLevel>0 && $appended===false){
-                        //没挂上
-                        $newNode = array();
-                        $newNode['collect_id'] = $anthologyId;
-                        $newNode['article_id'] = $newArticle->uid;
-                        $newNode['level'] = $parentNodeLevel+1;
-                        $newNode['title'] = Article::find($newArticle->uid)->title;
-                        $newNode['children'] = 0;
-                        $newMap[] = $newNode;
+                    if($parentNodeLevel>0){
+                        if($appended===false){
+                        //
+                            Log::debug('没挂上 挂到结尾');
+                            $newNode = array();
+                            $newNode['collect_id'] = $anthologyId;
+                            $newNode['article_id'] = $newArticle->uid;
+                            $newNode['level'] = $parentNodeLevel+1;
+                            $newNode['title'] = $newArticle->title;
+                            $newNode['children'] = 0;
+                            $newMap[] = $newNode;
+                        }
+                    }else{
+                        Log::error('没找到挂接点'.$parentNode);
                     }
+                    Log::debug('新map数据'.count($newMap));
+
                     $delete = ArticleCollection::where('collect_id',$anthologyId)->delete();
+                    Log::debug('删除旧map数据'.$delete);
                     $count=0;
                     foreach ($newMap as $key => $row) {
                         $new = new ArticleCollection;
@@ -358,6 +374,7 @@ class ArticleController extends Controller
                         $new->save();
                         $count++;
                     }
+                    Log::debug('新map数据'.$count);
                     ArticleMapController::updateCollection($anthologyId);
                 }else{
                     $articleMap = new ArticleCollection();
@@ -485,9 +502,9 @@ class ArticleController extends Controller
             $content = $tplContent;
         }
 
-        $article->title = $request->get('title');
-        $article->subtitle = $request->get('subtitle');
-        $article->summary = $request->get('summary');
+        $article->title = mb_substr($request->get('title'),0,128,'UTF-8') ;
+        $article->subtitle = mb_substr($request->get('subtitle'),0,128,'UTF-8') ;
+        $article->summary = mb_substr($request->get('summary'),0,1024,'UTF-8') ;
         $article->content = $content;
         $article->lang = $request->get('lang');
         $article->status = $request->get('status',10);

+ 12 - 2
app/Http/Controllers/ArticleMapController.php

@@ -29,7 +29,7 @@ class ArticleMapController extends Controller
                 $table = ArticleCollection::where('article_id',$request->get('id'));
                 break;
         }
-        $result = $table->select(['id','collect_id','article_id','level','title','children','deleted_at'])
+        $result = $table->select(['id','collect_id','article_id','level','title','children','editor_id','deleted_at'])
                         ->orderBy('id')->get();
         return $this->ok(["rows"=>ArticleMapResource::collection($result),"count"=>count($result)]);
     }
@@ -97,9 +97,19 @@ class ArticleMapController extends Controller
      * @param  \App\Models\ArticleCollection  $articleCollection
      * @return \Illuminate\Http\Response
      */
-    public function show(ArticleCollection $articleCollection)
+    public function show(string $articleCollection)
     {
         //
+        $id = explode('_',$articleCollection);
+        $result = ArticleCollection::where('article_id',$id[0])
+                    ->where('collect_id',$id[1])
+                    ->first();
+        if($result){
+            return $this->ok(new ArticleMapResource($result));
+        }else{
+            return $this->error('no');
+        }
+
     }
 
     /**

+ 17 - 16
app/Http/Controllers/CorpusController.php

@@ -667,26 +667,27 @@ class CorpusController extends Controller
                             // 阅读模式直接显示html原文
                             // 传过来的数据一定有一个原文channel
                             //
-                            if($mode !== "read"){
-                                if($row->content_type==='json'){
-                                    $newSent['channel']['type'] = "wbw";
-                                    if(isset($this->wbwChannels[0])){
-                                        $newSent['channel']['name'] = $indexChannel[$this->wbwChannels[0]]->name;
-                                        $newSent['channel']['id'] = $this->wbwChannels[0];
-                                        //存在一个translation channel
-                                        //尝试查找逐词解析数据。找到,替换现有数据
-                                        $wbwData = $this->getWbw($arrSentId[0],$arrSentId[1],$arrSentId[2],$arrSentId[3],
-                                                                $this->wbwChannels[0]);
-                                        if($wbwData){
-                                            $newSent['content'] = $wbwData;
-                                            $newSent['contentType'] = 'json';
-                                            $newSent['html'] = "";
-                                        }
+                            if($mode !== "read" && $row->content_type==='json'){
+                                $newSent['channel']['type'] = "wbw";
+                                if(isset($this->wbwChannels[0])){
+                                    $newSent['channel']['name'] = $indexChannel[$this->wbwChannels[0]]->name;
+                                    $newSent['channel']['id'] = $this->wbwChannels[0];
+                                    //存在一个translation channel
+                                    //尝试查找逐词解析数据。找到,替换现有数据
+                                    $wbwData = $this->getWbw($arrSentId[0],$arrSentId[1],$arrSentId[2],$arrSentId[3],
+                                                            $this->wbwChannels[0]);
+                                    if($wbwData){
+                                        $newSent['content'] = $wbwData;
+                                        $newSent['contentType'] = 'json';
+                                        $newSent['html'] = "";
                                     }
                                 }
                             }else{
                                 $newSent['content'] = "";
-                                $newSent['html'] = $row->content;
+                                //$newSent['html'] = $row->content;
+                                $newSent['html'] = MdRender::render($row->content,[$row->channel_uid],
+                                                                            null,$mode,"translation",
+                                                                            $row->content_type,$format);
                             }
 
                             break;

+ 12 - 6
app/Http/Controllers/NavPageController.php

@@ -20,7 +20,8 @@ class NavPageController extends Controller
 
     /**
      * Store a newly created resource in storage.
-     *
+     * 页码导航
+     * 支持缅文版,PTS,等当前页,前一页,后一页,页面信息的获取
      * @param  \Illuminate\Http\Request  $request
      * @return \Illuminate\Http\Response
      */
@@ -58,11 +59,16 @@ class NavPageController extends Controller
                             ->where('volume',$id[2])
                             ->where('page',(int)$id[3]+1)
                             ->first();
-        return $this->ok([
-            'curr'=>$pageCurr? new NavPageResource($pageCurr):null,
-            'prev'=>$pagePrev? new NavPageResource($pagePrev):null,
-            'next'=>$pageNext? new NavPageResource($pageNext):null,
-        ]);
+        if($pageCurr){
+            return $this->ok([
+                'curr'=>$pageCurr? new NavPageResource($pageCurr):null,
+                'prev'=>$pagePrev? new NavPageResource($pagePrev):null,
+                'next'=>$pageNext? new NavPageResource($pageNext):null,
+            ]);
+        }else{
+            return $this->error('page not found');
+        }
+
     }
 
     /**

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio