reader.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. var _reader_view = "sent";
  2. var _reader_book = -1;
  3. var _reader_para = -1;
  4. var _reader_begin = -1;
  5. var _reader_end = -1;
  6. var _channal = "";
  7. var _lang = "";
  8. var _author = "";
  9. var _display = "para";
  10. var arrMyTerm = new Array();
  11. var _sent_data = new Array();
  12. var link_str = "";
  13. palicanon_load_term();
  14. function reader_load() {
  15. $.get(
  16. "../reader/get_para.php",
  17. {
  18. view: _reader_view,
  19. book: _reader_book,
  20. para: _reader_para,
  21. begin: _reader_begin,
  22. end: _reader_end,
  23. },
  24. function (data) {
  25. _sent_data = JSON.parse(data);
  26. let tpl = "";
  27. let currPara = 0;
  28. $("#contents").html("");
  29. if (_sent_data.sentences.length > 0) {
  30. for (const iterator of _sent_data.sentences) {
  31. if (currPara != iterator.paragraph) {
  32. tpl += "\n\n";
  33. currPara = iterator.paragraph;
  34. tpl += "```para\n";
  35. tpl += currPara + "\n";
  36. tpl += "```\n\n";
  37. }
  38. tpl +=
  39. "{{" +
  40. iterator.book +
  41. "-" +
  42. iterator.paragraph +
  43. "-" +
  44. iterator.begin +
  45. "-" +
  46. iterator.end +
  47. "}}\n";
  48. }
  49. link_str = tpl;
  50. $("#contents").html(note_init(tpl));
  51. note_refresh_new();
  52. reader_draw_para_menu();
  53. //右侧目录
  54. let tocHtml = "";
  55. let tocNextMenu = "";
  56. if (_sent_data.toc.length > 0) {
  57. let firstLevel = _sent_data.toc[0].level;
  58. for (let index = 1; index < _sent_data.toc.length; index++) {
  59. const element = _sent_data.toc[index];
  60. tocHtml +=
  61. "<div class='reader_right_toc level_" +
  62. (element.level - firstLevel) +
  63. "'><a href='#para_" +
  64. element.paragraph +
  65. "'>" +
  66. element.toc +
  67. "</a></div>";
  68. tocNextMenu +=
  69. "<a href='../reader/?view=chapter&book=" +
  70. _reader_book +
  71. "&para=" +
  72. element.paragraph +
  73. "'>" +
  74. element.toc +
  75. "</a>";
  76. }
  77. $("#toc_content").html(tocHtml);
  78. if (tocNextMenu === "") {
  79. $("#para_path_next_level").hide();
  80. } else {
  81. $("#toc_next_menu").html(tocNextMenu);
  82. $("#para_path_next_level").show();
  83. }
  84. }
  85. }
  86. if (_sent_data.head == 1 || _sent_data.sentences.length == 0) {
  87. //渲染目录
  88. tpl = "<h2>Table of Content</h2>";
  89. if (_sent_data.toc.length > 0) {
  90. let firstLevel = _sent_data.toc[0].level;
  91. for (let index = 1; index < _sent_data.toc.length; index++) {
  92. const element = _sent_data.toc[index];
  93. if (element.level < 8) {
  94. tpl +=
  95. "<div class='reader_main_toc level_" +
  96. (element.level - firstLevel) +
  97. "'><a href='../reader/?view=chapter&book=" +
  98. _reader_book +
  99. "&para=" +
  100. element.paragraph +
  101. "&display=" +
  102. _display +
  103. "'>" +
  104. element.toc +
  105. "</a></div>";
  106. }
  107. }
  108. }
  109. $("#contents_toc").html(tpl);
  110. }
  111. }
  112. );
  113. reader_get_path();
  114. }
  115. function reader_draw_para_menu() {
  116. $(".language-para").each(function () {
  117. let strPara = $(this).text();
  118. $(this).addClass("case_dropdown");
  119. let html = "<a name='para_" + strPara + "'></a>";
  120. html += "<div class='case_dropdown-content para_menu'>";
  121. if (typeof _reader_view != "undefined" && _reader_view != "para") {
  122. html += "<a onclick=\"junp_to_para('" + _reader_book + "','" + strPara + "')\">仅显示此段</a>";
  123. }
  124. html += "<a onclick=\"edit_wbw('" + _reader_book + "','" + strPara + "')\">" + gLocal.gui.edit_now + "</a>";
  125. html += "<a onclick='goto_nissaya(" + _reader_book + "," + strPara + ")'>" + gLocal.gui.show_nissaya + "</a>";
  126. html +=
  127. "<a onclick=\"copy_para_ref('" + _reader_book + "','" + strPara + "')\">" + gLocal.gui.copy_link + "</a>";
  128. html +=
  129. "<a onclick=\"copy_text('" +
  130. _reader_book +
  131. "','" +
  132. strPara +
  133. "')\">" +
  134. gLocal.gui.copy +
  135. "“" +
  136. gLocal.gui.pāli +
  137. "”</a>";
  138. html +=
  139. "<a onclick=\"add_to_list('" +
  140. _reader_book +
  141. "','" +
  142. strPara +
  143. "')\">" +
  144. gLocal.gui.add_to_edit_list +
  145. "</a>";
  146. html += "</div>";
  147. $(this).append(html);
  148. });
  149. }
  150. function junp_to_para(book, para) {
  151. let url = "../reader/?view=para&book=" + book + "&para=" + para + "&display=sent";
  152. location.assign(url);
  153. }
  154. function copy_para_ref(book, para) {
  155. let output = "";
  156. let currPara = para;
  157. for (const iterator of _sent_data.sentences) {
  158. if (iterator.book == book && iterator.paragraph == para) {
  159. output += "{{" + book + "-" + para + "-" + iterator.begin + "-" + iterator.end + "}}\n";
  160. }
  161. }
  162. output += "\n";
  163. copy_to_clipboard(output);
  164. }
  165. function reader_get_path() {
  166. $.get(
  167. "../reader/get_path.php",
  168. {
  169. book: _reader_book,
  170. para: _reader_para,
  171. },
  172. function (data) {
  173. $("#para_path").html(data);
  174. $("chapter").each(function () {
  175. //替换为本地语言字符串
  176. let title = $(this).text();
  177. let strLocalTitle = "";
  178. if (
  179. (strLocalTitle = term_lookup_my(
  180. title,
  181. _channal.split()[0],
  182. getCookie("userid"),
  183. getCookie("language")
  184. ))
  185. ) {
  186. $(this).html(strLocalTitle.word);
  187. } else if (
  188. (strLocalTitle = term_lookup_my_a(
  189. title,
  190. _channal.split()[0],
  191. getCookie("userid"),
  192. getCookie("language")
  193. ))
  194. ) {
  195. let newLocal = title.replace(strLocalTitle.word, strLocalTitle.meaning);
  196. $(this).html(newLocal);
  197. }
  198. });
  199. var bookTitle = $("chapter").first().html();
  200. let suttaTitle = $("chapter").last().html();
  201. $("#pali_pedia").html(bookTitle);
  202. $("#article_title").html(suttaTitle);
  203. $("#page_title").text(suttaTitle);
  204. if (_reader_view == "chapter") {
  205. //$("chapter").last().hide();
  206. }
  207. }
  208. );
  209. }
  210. function palicanon_load_term() {
  211. $.get(
  212. "../term/term.php",
  213. {
  214. op: "my",
  215. },
  216. function (data) {
  217. arrMyTerm = JSON.parse(data);
  218. }
  219. );
  220. }
  221. function set_channal(channalid) {
  222. let url = "../reader/?view=" + _reader_view;
  223. if (_reader_book != -1) {
  224. url += "&book=" + _reader_book;
  225. }
  226. if (_reader_para != -1) {
  227. url += "&para=" + _reader_para;
  228. }
  229. if (_reader_begin != -1) {
  230. url += "&begin=" + _reader_begin;
  231. }
  232. if (_reader_end != -1) {
  233. url += "&end=" + _reader_end;
  234. }
  235. if (channalid != "") {
  236. url += "&channal=" + channalid;
  237. }
  238. if (_display != "") {
  239. url += "&display=" + _display;
  240. }
  241. location.assign(url);
  242. }
  243. function edit_wbw(book, para) {
  244. wbw_channal_list_open(book, [para]);
  245. }