Просмотр исходного кода

Merge pull request #799 from visuddhinanda/laravel

Laravel
visuddhinanda 4 лет назад
Родитель
Сommit
e019abf19a

+ 1 - 0
app/Http/Controllers/DhammaTermController.php

@@ -51,6 +51,7 @@ class DhammaTermController extends Controller
 									->where('word', $request->get("word"))
 									->orderBy('created_at','desc')
 									->get();
+                $count = count($result);
 				break;
             case 'hot-meaning':
                 $key='term/hot_meaning';

+ 1 - 0
app/Http/Kernel.php

@@ -21,6 +21,7 @@ class Kernel extends HttpKernel
         \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
         \App\Http\Middleware\TrimStrings::class,
         \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
+        \App\Http\Middleware\EnableCrossRequestMiddleware::class,
     ];
 
     /**

+ 39 - 0
app/Http/Middleware/EnableCrossRequestMiddleware.php

@@ -0,0 +1,39 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+use Illuminate\Http\Request;
+
+class EnableCrossRequestMiddleware
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next
+     * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
+     */
+    public function handle(Request $request, Closure $next)
+    {
+                $response = $next($request);
+        $origin = $request->server('HTTP_ORIGIN') ? $request->server('HTTP_ORIGIN') : '';
+        $allow_origin = [
+            env("CROSS_REQUEST_ALLOW_ORIGIN",'http://localhost:8001'),
+        ];
+        if (in_array($origin, $allow_origin)) {
+            $response->header('Access-Control-Allow-Origin', $origin);
+            $response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN');
+            $response->header('Access-Control-Expose-Headers', 'Authorization, authenticated');
+            $response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS');
+            $response->header('Access-Control-Allow-Credentials', 'true');
+        }
+        /*
+        ————————————————
+        原文作者:qbhy
+        转自链接:https://learnku.com/articles/6504/laravel-cross-domain-solution
+        版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。
+        */
+        return $next($request);
+    }
+}

+ 1 - 5
dashboard/.umirc.ts

@@ -6,9 +6,5 @@ export default defineConfig({
 	},
 	base: '/my/',
 	fastRefresh: {},
-	layout: {
-		name: 'wikipali',
-		locale: true,
-		layout: 'side',
-	}
+
 });

+ 55 - 67
dashboard/src/pages/demo/day-4.tsx

@@ -13,62 +13,24 @@ const { Link } = Anchor;
 message.config({
 	maxCount: 4
 });
-//表数据
-const dataSource = [
-	{
-		key: '1',
-		name: 'name1',
-		age: 32,
-		adress: "西湖南路"
-	},
-	{
-		key: '2',
-		name: 'name2',
-		age: 34,
-		adress: '西湖公园'
-	},
-	{
-		key: '3',
-		name: 'name1',
-		age: 32,
-		adress: "西湖南路"
-	},
-	{
-		key: '4',
-		name: 'name2',
-		age: 34,
-		adress: '西湖公园'
-	},
-	{
-		key: '5',
-		name: 'name1',
-		age: 32,
-		adress: "西湖南路"
-	},
-	{
-		key: '6',
-		name: 'name2',
-		age: 34,
-		adress: '西湖公园'
-	}
-]
+
 //表头
 const columns = [
 	{
-		title: 'Id',
-		dataIndex: 'id',
-		key: 'id',
+		title: 'word',
+		dataIndex: 'word',
+		key: 'word',
 		render: text => <a>{text}</a>,
 	},
 	{
-		title: 'user_id',
-		dataIndex: 'user_id',
-		key: 'user_id',
+		title: '意思',
+		dataIndex: 'meaning',
+		key: 'meaning',
 	},
 	{
-		title: "title",
-		dataIndex: 'title',
-		key: 'title',
+		title: "其他意思",
+		dataIndex: 'other_meaning',
+		key: 'other_meaning',
 	}
 ]
 
@@ -101,15 +63,17 @@ export default () => {
 	const [tableData, setTableData] = useState();
 
 
-	function getTableData(){
-		fetch('https://gorest.co.in/public-api/posts')
+	function getTableData(e){
+        //let url='https://gorest.co.in/public-api/posts';
+        let url='http://127.0.0.1:8000/api/v2/terms?view=word&word=dhamma';
+		fetch(url)
 			.then(function (response) {
 				console.log("ajex:", response);
 				return response.json();
 			})
 			.then(function (myJson) {
 				console.log("ajex",myJson.data);
-				setTableData(myJson.data);
+				setTableData(myJson.data.rows);
 			});		
 	}
 	function pageChange(page: number, pagesize?: number | undefined) {
@@ -125,14 +89,15 @@ export default () => {
 			<Header className="header">
 				<div className="logo" />
 
-				<Menu onClick={handleClick} theme="dark" mode="horizontal" defaultSelectedKeys={['2']}>
+				<Menu onClick={handleClick} theme="dark" mode="horizontal" defaultSelectedKeys={['1']}>
 					<Menu.Item key="0">
 						<WidgetCommitNofifiction time={commitTime} message={commitMsg} successful={commitStatus} />
 					</Menu.Item>
-					<Menu.Item key="1" onClick={getTableData}>Palicanon</Menu.Item>
-					<Menu.Item key="2">Course</Menu.Item>
-					<Menu.Item key="3">nav 3</Menu.Item>
-					<SubMenu key="submenu" icon={<UserOutlined />} title="Others">
+					<Menu.Item key="1" >圣典</Menu.Item>
+					<Menu.Item key="2">课程</Menu.Item>
+					<Menu.Item key="3">字典</Menu.Item>
+					<Menu.Item key="3">文集</Menu.Item>
+					<SubMenu key="submenu" icon={<UserOutlined />} title="更多">
 						<Menu.ItemGroup title="group1">
 							<Menu.Item key="4">option1</Menu.Item>
 							<Menu.Item key="5">option2</Menu.Item>
@@ -148,24 +113,47 @@ export default () => {
 			</Header>
 			<Layout>
 				<Affix offsetTop={top}>
-					<Sider className="site-layout-background">
+					<Sider 
+                        className="site-layout-background"
+                        breakpoint="lg"
+                        collapsedWidth="0"
+                        onBreakpoint={broken => {
+                            console.log(broken);
+                        }}
+                        onCollapse={(collapsed, type) => {
+                            console.log(collapsed, type);
+                        }}
+                    >
 						<Menu
 							mode="inline"
 							defaultSelectedKeys={['1']}
 							defaultOpenKeys={['sub1']}
 							style={{ height: '100%', borderRight: 0 }}
+                            onClick={getTableData}
 						>
-							<SubMenu key="sub1" icon={<UserOutlined />} title="subnav 1">
-								<Menu.Item key="1">option1</Menu.Item>
-								<Menu.Item key="2">option2</Menu.Item>
-								<Menu.Item key="3">option3</Menu.Item>
-								<Menu.Item key="4">option4</Menu.Item>
+							<SubMenu key="sutta" icon={<UserOutlined />} title="经藏">
+								<Menu.Item key="dn">长部</Menu.Item>
+								<Menu.Item key="mn">中部</Menu.Item>
+								<Menu.Item key="sn">相应部</Menu.Item>
+								<Menu.Item key="an">增支部</Menu.Item>
+								<Menu.Item key="kn">小部</Menu.Item>
+							</SubMenu>
+							<SubMenu key="vinaya" icon={<UserOutlined />} title="律藏">
+								<Menu.Item key="6">分别</Menu.Item>
+								<Menu.Item key="7">篇章</Menu.Item>
+								<Menu.Item key="8">附录</Menu.Item>
+							</SubMenu>
+							<SubMenu key="abhidhamma" icon={<UserOutlined />} title="阿毗达摩藏">
+								<Menu.Item key="9">法集论</Menu.Item>
+								<Menu.Item key="10">option2</Menu.Item>
+								<Menu.Item key="11">option3</Menu.Item>
+								<Menu.Item key="12">option4</Menu.Item>
 							</SubMenu>
-							<SubMenu key="sub2" icon={<UserOutlined />} title="subnav 2">
-								<Menu.Item key="5">option1</Menu.Item>
-								<Menu.Item key="6">option2</Menu.Item>
-								<Menu.Item key="7">option3</Menu.Item>
-								<Menu.Item key="8">option4</Menu.Item>
+							<SubMenu key="others" icon={<UserOutlined />} title="其他">
+								<Menu.Item key="9">法集论</Menu.Item>
+								<Menu.Item key="10">option2</Menu.Item>
+								<Menu.Item key="11">option3</Menu.Item>
+								<Menu.Item key="12">option4</Menu.Item>
 							</SubMenu>
 						</Menu>
 					</Sider>

+ 109 - 1
public/app/term/note.js

@@ -217,6 +217,9 @@ function note_refresh_new(callback = null) {
 						//初始化mermaid
 						mermaid.initialize({startOnLoad:true});
 
+                        //初始化气泡
+                        guide_init();
+
 					} catch (e) {
 						console.error(e);
 					}
@@ -1255,6 +1258,7 @@ function render_one_sent_tran_a(iterator, diff = false) {
 	html += "</div>";
 	return html;
 }
+//渲染nissaya单词
 function renderNissayaPreview(str){
     let html ='';
     //html +="<div class='nissaya'>";
@@ -1273,7 +1277,13 @@ function renderNissayaPreview(str){
                     break;
             }
             html += "</span>";
-            html += "<span class='meaning'>"+ word[1]+"</span>";
+            html += "<span class='meaning'>";
+            if (getCookie('language') !="my") {
+                html += myEndingTooltip(word[1]);
+            }else{
+                html += word[1];
+            }
+            html += "</span>";
             html += "</span>";
         }else{
             html += iterator;
@@ -1282,6 +1292,104 @@ function renderNissayaPreview(str){
     //html += "</div>";
     return html;
 }
+//缅文语尾高亮和提示气泡
+function myEndingTooltip(inStr){
+    let myEnding=[
+        {
+            id:"my_nom1",
+            name:"သည်",
+            tooltip:'主语',
+        },
+        {
+            id:"my_nom2",
+            name:"ကား",
+            tooltip:'主格/主语',
+        },        
+        {
+            id:"my_nom3",
+            name:"က",
+            tooltip:'主格/主语',
+        },        
+        {
+            id:"my_acc1",
+            name:"ကို",
+            tooltip:'宾格/宾语',
+        },
+        {
+            id:"my_acc2",
+            name:"သို့",
+            tooltip:'宾格/趋向',
+        },
+        {
+            id:"my_inst1",
+            name:"ဖြင့်",
+            tooltip:'具格/用',
+        },
+        {
+            id:"my_inst2",
+            name:"နှင့်",
+            tooltip:'具格/与',
+        },
+        {
+            id:"my_inst3",
+            name:"ကြောင့်",
+            tooltip:'具格/凭借;从格/原因',
+        },
+        {
+            id:"my_dat1",
+            name:"အား",
+            tooltip:'为格/对象(间接宾语)',
+        },
+        {
+            id:"my_dat2",
+            name:"ငှာ",
+            tooltip:'为格/目的(为了)',
+        },
+        {
+            id:"my_abl1",
+            name:"မှ",
+            tooltip:'从格/从',
+        },
+        {
+            id:"my_abl2",
+            name:"အောက်",
+            tooltip:'从格/比……多',
+        },
+        {
+            id:"my_abl3",
+            name:"ထက်",
+            tooltip:'从格/比……少',
+        },
+        {
+            id:"my_gen1",
+            name:"၏",
+            tooltip:'属格/的',
+        },
+        {
+            id:"my_gen2",
+            name:"တွင်",
+            tooltip:'属格/处(范围)',
+        },
+        {
+            id:"my_loc1",
+            name:"၌",
+            tooltip:'处格/处(范围)',
+        },
+        {
+            id:"my_loc2",
+            name:"ကြောင့်",
+            tooltip:'处格/因',
+        },
+    ];
+
+    for (const iterator of myEnding) {
+        if(inStr.indexOf(iterator.name)>=0){
+			eval("inStr=inStr.replace(/" + iterator.name + "/g,\"<guide gid='grammar_"+iterator.id+"' class='grammar_tag' style='display:unset;'>\"+iterator.name+\"</guide>\");");
+            return inStr;
+        }
+    }
+    return inStr;
+}
 function tran_sent_textarea_event_init() {
 	let textarea = document.querySelectorAll(".tran_sent_textarea");
 	for (let iterator of textarea) {

+ 19 - 2
public/app/term/term.css

@@ -1129,17 +1129,34 @@ pali>p {
 .preview .nissaya{
     display:inline;
 }
+.preview .nsy_word{
+    display:inline;
+}
 .preview .nissaya .nsy_word{
     padding-right:10px;
 }
-.preview .nissaya .nsy_word .org{
+.nsy_word .org{
     display:inline;
     font-weight: 700;
+    padding-right: 0.5em;
 }
-.preview .nissaya .nsy_word .meaning{
+.nsy_word .meaning{
     display:inline;
     font-weight: 500;
 }
 span.sent_tran::first-letter {
     text-transform: capitalize;
+}
+
+guide.grammar_tag {
+    display: unset;
+    background: unset;
+    background-color: var(--btn-color);
+    padding: 0;
+    border-radius: 3px;
+	margin: 0;
+
+}
+guide.grammar_tag:hover {
+	text-decoration: underline;
 }

+ 3 - 0
public/app/users_guide/zh-cn/grammar_my_abl1.md

@@ -0,0 +1,3 @@
+# 缅文语尾
+
+- 从格/从

+ 3 - 0
public/app/users_guide/zh-cn/grammar_my_abl2.md

@@ -0,0 +1,3 @@
+# 缅文语尾
+
+- 从格/比……多

+ 3 - 0
public/app/users_guide/zh-cn/grammar_my_abl3.md

@@ -0,0 +1,3 @@
+# 缅文语尾
+
+- 从格/比……少

+ 3 - 0
public/app/users_guide/zh-cn/grammar_my_acc1.md

@@ -0,0 +1,3 @@
+# 缅文语尾
+
+- 宾格/宾语

+ 3 - 0
public/app/users_guide/zh-cn/grammar_my_acc2.md

@@ -0,0 +1,3 @@
+# 缅文语尾
+
+- 宾格/趋向

+ 3 - 0
public/app/users_guide/zh-cn/grammar_my_dat1.md

@@ -0,0 +1,3 @@
+# 缅文语尾
+
+- 为格/对象(间接宾语)

+ 3 - 0
public/app/users_guide/zh-cn/grammar_my_dat2.md

@@ -0,0 +1,3 @@
+# 缅文语尾
+
+- 为格/目的(为了)

+ 3 - 0
public/app/users_guide/zh-cn/grammar_my_gen1.md

@@ -0,0 +1,3 @@
+# 缅文语尾
+
+- 属格/的

+ 4 - 0
public/app/users_guide/zh-cn/grammar_my_gen2.md

@@ -0,0 +1,4 @@
+# 缅文语尾
+
+- 处格/处(范围)
+- 属格/处(范围)

+ 3 - 0
public/app/users_guide/zh-cn/grammar_my_inst1.md

@@ -0,0 +1,3 @@
+# 缅文语尾
+
+- 具格/用

+ 3 - 0
public/app/users_guide/zh-cn/grammar_my_inst2.md

@@ -0,0 +1,3 @@
+# 缅文语尾
+
+- 具格/与

+ 4 - 0
public/app/users_guide/zh-cn/grammar_my_inst3.md

@@ -0,0 +1,4 @@
+# 缅文语尾
+
+- 具格/凭借
+- 从格/原因

+ 3 - 0
public/app/users_guide/zh-cn/grammar_my_loc1.md

@@ -0,0 +1,3 @@
+# 缅文语尾
+
+- 处格/处(范围)

+ 3 - 0
public/app/users_guide/zh-cn/grammar_my_loc2.md

@@ -0,0 +1,3 @@
+# 缅文语尾
+
+- 处格/因

+ 5 - 0
public/app/users_guide/zh-cn/grammar_my_nom1.md

@@ -0,0 +1,5 @@
+# 缅文语尾
+
+- 主格/主语
+- 具格/主语
+- 属格/主语

+ 3 - 0
public/app/users_guide/zh-cn/grammar_my_nom2.md

@@ -0,0 +1,3 @@
+# 缅文语尾
+
+- 主格/主语

+ 3 - 0
public/app/users_guide/zh-cn/grammar_my_nom3.md

@@ -0,0 +1,3 @@
+# 缅文语尾
+
+- 主格/主语