Kaynağa Gözat

搜索结果阅读器显示章节,高亮结果段

visuddhinanda 4 yıl önce
ebeveyn
işleme
e775e3b77a

+ 19 - 7
app/reader/get_para.php

@@ -33,15 +33,27 @@ if ($_view == "sent") {
     exit;
 }
 
-PDO_Connect("" . _FILE_DB_PALITEXT_);
-$query = "SELECT * FROM 'pali_text'  WHERE book= ? AND paragraph= ?";
-$FetchParInfo = PDO_FetchRow($query, array($_book, $_para));
+$paraBegin=0;
+$paraEnd=0;
+
+PDO_Connect(_FILE_DB_PALITEXT_);
+			$query = "SELECT level , parent, chapter_len FROM 'pali_text'  WHERE book= ? AND paragraph= ?";
+			$FetchParInfo = PDO_FetchRow($query, array($_book, $_para));
 if ($FetchParInfo) {
     switch ($_view) {
         case 'chapter':
             # code...
-            $paraBegin = $_para;
-            $paraEnd = $_para + $FetchParInfo["chapter_len"] - 1;
+
+			if($FetchParInfo["level"]>0 && $FetchParInfo["level"]<8){
+				$paraBegin = $_para;
+            	$paraEnd = $_para + $FetchParInfo["chapter_len"] - 1;
+			}
+            else{
+				$paraBegin = $FetchParInfo["parent"];
+				$query = "SELECT  chapter_len FROM 'pali_text'  WHERE book= ? AND paragraph= ?";
+				$FetchParInfo = PDO_FetchRow($query, array($_book, $paraBegin));
+            	$paraEnd = $paraBegin + $FetchParInfo["chapter_len"] - 1;
+			}
             break;
         case 'para':
             $paraBegin = $_para;
@@ -56,7 +68,7 @@ if ($FetchParInfo) {
     }
 
     //获取下级目录
-    $query = "SELECT * FROM 'pali_text'  WHERE book= ? AND (paragraph BETWEEN ?AND ? ) AND level < 8 ";
+    $query = "SELECT level,paragraph,toc FROM 'pali_text'  WHERE book= ? AND (paragraph BETWEEN ?AND ? ) AND level < 8 ";
     $output["toc"] = PDO_FetchAll($query, array($_book, $paraBegin, $paraEnd));
 
     if ($FetchParInfo["chapter_strlen"] > _MAX_CHAPTER_LEN_ && $_view === "chapter" && count($output["toc"]) > 1) {
@@ -73,7 +85,7 @@ if ($FetchParInfo) {
 
     }
 
-    PDO_Connect("" . _FILE_DB_PALI_SENTENCE_);
+    PDO_Connect(_FILE_DB_PALI_SENTENCE_);
 
     $query = "SELECT book,paragraph,begin, end FROM 'pali_sent' WHERE book= ? AND (paragraph BETWEEN ?AND ? ) ";
     $sent_list = PDO_FetchAll($query, array($_book, $paraBegin, $paraEnd));

+ 15 - 2
app/reader/reader.js

@@ -29,13 +29,20 @@ function reader_load() {
 			let currPara = 0;
 			$("#contents").html("");
 			if (_sent_data.sentences.length > 0) {
+				let firstPara = _sent_data.sentences[0].paragraph;
 				for (const iterator of _sent_data.sentences) {
 					if (currPara != iterator.paragraph) {
+						currPara = parseInt(iterator.paragraph);
+						if (currPara == parseInt(_reader_para) + 1 && parseInt(_reader_para) != firstPara) {
+							tpl += "</div>\n\n";
+						}
 						tpl += "\n\n";
-						currPara = iterator.paragraph;
 						tpl += "```para\n";
 						tpl += currPara + "\n";
 						tpl += "```\n\n";
+						if (currPara == _reader_para && parseInt(_reader_para) != firstPara) {
+							tpl += "<div id='para_focus' class='focus'>\n\n";
+						}
 					}
 					tpl +=
 						"{{" +
@@ -50,7 +57,13 @@ function reader_load() {
 				}
 				link_str = tpl;
 				$("#contents").html(note_init(tpl));
-				note_refresh_new();
+				note_refresh_new(function () {
+					document.querySelector("#para_focus").scrollIntoView({
+						block: "end",
+						behavior: "smooth",
+					});
+					//document.querySelector("#para_focus").scrollTo(0, 200);
+				});
 				reader_draw_para_menu();
 
 				//右侧目录

+ 2 - 0
app/reader/style.css

@@ -130,6 +130,8 @@ note:hover chapter {
 	margin-top: 0;
 	margin-left: -60px;
 	font-family: "Noto Sans", "Noto Sans SC", "Noto Sans TC", "Padauk", Arial, Verdana;
+	color: var(--main-color1);
+	font-size: 80%;
 }
 
 .level_0 {

+ 4 - 2
app/search/paliword.js

@@ -75,8 +75,10 @@ function render_word_result(worddata) {
 	let html = "";
 	html += "<div class='search_result'>";
 	let keyword = worddata.keyword;
-	let link = "<a href='../reader/?view=para&book=" + worddata.book + "&para=" + worddata.para + "&display=sent' target='_blank'>";
-	html += "<div class='title'>" + link + worddata.title + "</a></div>";
+
+	html += "<div class='title'>";
+	html += "<a href='../reader/?view=chapter&book=" + worddata.book + "&para=" + worddata.para + "' target='_blank'>";
+	html += worddata.title + "</a></div>";
 
 	let newStr = highlightWords(worddata.palitext, keyword);
 

+ 27 - 5
app/term/note.js

@@ -101,7 +101,7 @@ function note_update_background_style() {
 	});
 }
 //
-function note_refresh_new() {
+function note_refresh_new(callback = null) {
 	note_update_background_style();
 	let objNotes = document.querySelectorAll("note");
 	let arrSentInfo = new Array();
@@ -186,6 +186,9 @@ function note_refresh_new() {
 						splite_pali_word();
 						//处理编辑框消息
 						tran_sent_textarea_event_init();
+						if (callback) {
+							callback();
+						}
 					} catch (e) {
 						console.error(e);
 					}
@@ -1548,11 +1551,30 @@ function note_sent_save_a(obj) {
 		.success(function () {
 			//alert("second success");
 		})
-		.error(function () {
-			alert("error");
+		.error(function (xhr, error, data) {
+			switch (error) {
+				case "timeout":
+					alert("服务器长时间没有回应。");
+					break;
+				case "error":
+					alert("与服务器通讯失败,您可能没有连接到网络。");
+					break;
+				case "notmodified":
+					break;
+				default:
+					break;
+			}
 		})
-		.complete(function () {
-			//alert("complete");
+		.complete(function (xhr, data) {
+			//请求完成后回调函数 (请求成功或失败之后均调用)。
+			switch (data) {
+				case "error":
+					break;
+				case "success":
+					break;
+				default:
+					break;
+			}
 		});
 
 	if (sent_tran_div) {

+ 9 - 0
app/term/term.css

@@ -855,3 +855,12 @@ span.keybutton {
 	color: white;
 	font-weight: 300;
 }
+
+#contents_view .focus {
+	border-radius: 20px;
+	box-shadow: 0 5px 7px rgb(0 0 0 / 15%);
+	margin: 10px 0;
+	background-color: #f5deb36b;
+	padding: 0.7rem;
+	word-break: break-word;
+}