reader.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444
  1. var objCurrMouseOverPaliMean = null;
  2. var _sent_id = "";
  3. function getWordMeanMenu(pali) {
  4. var mean_menu = "";
  5. if (bh[pali]) {
  6. var arrMean = bh[pali].split("$");
  7. if (arrMean.length > 0) {
  8. for (var i in arrMean) {
  9. mean_menu += "<a>" + arrMean[i] + "</a>";
  10. }
  11. }
  12. } else if (sys_r[pali]) {
  13. var word_parent = sys_r[pali];
  14. if (bh[word_parent]) {
  15. var arrMean = bh[word_parent].split("$");
  16. if (arrMean.length > 0) {
  17. for (var i in arrMean) {
  18. mean_menu +=
  19. "<a onclick=set_mean('" + arrMean[i] + "')>" + arrMean[i] + "</a>";
  20. }
  21. }
  22. }
  23. }
  24. return mean_menu;
  25. }
  26. function set_mean(str) {
  27. if (objCurrMouseOverPaliMean) {
  28. objCurrMouseOverPaliMean.innerHTML = str;
  29. }
  30. }
  31. function pali_canon_edit_now(thisform) {
  32. let username = getCookie("username");
  33. if (!username || username == "") {
  34. alert("请登陆后执行此操作");
  35. return false;
  36. }
  37. let download_res_data = new Array();
  38. var resDownloadItem = new Object();
  39. resDownloadItem.album_id = "uuid";
  40. resDownloadItem.type = 6;
  41. resDownloadItem.book = thisform.book.value;
  42. resDownloadItem.parNum = thisform.para.value;
  43. resDownloadItem.author = username;
  44. resDownloadItem.editor = username;
  45. resDownloadItem.language = "pali";
  46. resDownloadItem.edition = "1";
  47. resDownloadItem.version = "1";
  48. resDownloadItem.title = thisform.chapter_title.value;
  49. let strParList = "";
  50. //查找被选择的段落
  51. let firstIndex = parseInt(thisform.para.value);
  52. let endIndex = parseInt(thisform.para_end.value);
  53. for (let iPar = firstIndex; iPar <= endIndex; iPar++) {
  54. strParList += iPar;
  55. if (iPar < endIndex) {
  56. strParList += ",";
  57. }
  58. }
  59. resDownloadItem.parlist = strParList;
  60. download_res_data.push(resDownloadItem);
  61. if (download_res_data.length > 0) {
  62. $("#project_new_res_data").val(JSON.stringify(download_res_data));
  63. return true;
  64. } else {
  65. return false;
  66. }
  67. }
  68. function setNaviVisibility(strObjId = "") {
  69. var objNave = document.getElementById("leftmenuinner");
  70. var objblack = document.getElementById("BV");
  71. if (objNave.className == "viewswitch_off") {
  72. objblack.style.display = "block";
  73. objNave.className = "viewswitch_on";
  74. } else {
  75. objblack.style.display = "none";
  76. objNave.className = "viewswitch_off";
  77. }
  78. }
  79. function trans_sent_save() {
  80. let textarea = $("#sent_modify_text");
  81. if (textarea) {
  82. let objsent = new Object();
  83. const editor = textarea.attr("editor");
  84. if (getCookie("userid") == editor) {
  85. objsent.id = textarea.attr("sent_id");
  86. } else {
  87. objsent.parent = textarea.attr("sent_id");
  88. objsent.tag = textarea.attr("translation");
  89. }
  90. objsent.book = textarea.attr("book");
  91. objsent.paragraph = textarea.attr("para");
  92. objsent.begin = textarea.attr("begin");
  93. objsent.end = textarea.attr("end");
  94. objsent.author = textarea.attr("author");
  95. objsent.lang = textarea.attr("lang");
  96. objsent.text = textarea.val();
  97. let sents = new Array();
  98. sents.push(objsent);
  99. $.post(
  100. "../usent/update.php",
  101. {
  102. data: JSON.stringify(sents),
  103. },
  104. function (data, status) {
  105. if (status == "success") {
  106. let result = JSON.parse(data);
  107. for (const iterator of result.update) {
  108. $(".sent_text[sent_id='" + iterator.id + "']").html(iterator.text);
  109. }
  110. alert(result);
  111. location.reload();
  112. trans_sent_cancel();
  113. }
  114. }
  115. );
  116. }
  117. }
  118. function trans_sent_cancel() {
  119. $("#sent_modify_win").hide();
  120. $("#dlg_bg").hide();
  121. }
  122. function render_sent_block(sentInfo) {
  123. let html = "";
  124. html += "<div class='sent_block'>";
  125. html += "<div class='user_head'>";
  126. html += "<span class='head_img'>" + sentInfo.nickname.slice(0, 2) + "</span>";
  127. html += "</div>";
  128. html += "<div class='sent_body'>";
  129. html += "<div class='sent_info'>";
  130. html +=
  131. "<span >" +
  132. sentInfo.nickname +
  133. " <span style='color:gray;'>@" +
  134. sentInfo.username +
  135. "</span></span>";
  136. html += "</div>";
  137. html += "<div class='sent_text'>";
  138. html += sentInfo.text;
  139. html += "</div>";
  140. html += "</div>";
  141. html += "</div>";
  142. return html;
  143. }
  144. function reader_init() {
  145. $(".pali").mouseover(function (e) {
  146. var targ;
  147. if (!e) var e = window.event;
  148. if (e.target) targ = e.target;
  149. else if (e.srcElement) targ = e.srcElement;
  150. if (targ.nodeType == 3)
  151. // defeat Safari bug
  152. targ = targ.parentNode;
  153. var pali_word;
  154. pali_word = targ.innerHTML;
  155. objCurrMouseOverPaliMean = targ.nextSibling;
  156. $("#tool_bar_title").html(pali_word);
  157. $("#mean_menu").html(getWordMeanMenu(pali_word));
  158. targ.parentNode.appendChild(document.getElementById("mean_menu"));
  159. });
  160. $("para").mouseenter(function (e) {
  161. let book = $(this).attr("book");
  162. let para = $(this).attr("para");
  163. $("sent[book='" + book + "'][para='" + para + "']").css(
  164. "background-color",
  165. "#fefec1"
  166. );
  167. });
  168. $("para").mouseleave(function (e) {
  169. let book = $(this).attr("book");
  170. let para = $(this).attr("para");
  171. $("sent[book='" + book + "'][para='" + para + "']").css(
  172. "background-color",
  173. "unset"
  174. );
  175. });
  176. $("term").click(function (e) {
  177. let word = $(this).attr("pali");
  178. window.location.assign("../wiki/wiki.php?op=get&word=" + word);
  179. });
  180. $("palitext").click(function (e) {
  181. let book = $(this).attr("book");
  182. let para = $(this).attr("para");
  183. let begin = $(this).attr("begin");
  184. let end = $(this).attr("end");
  185. window.location.assign(
  186. "./reader.php?view=sent&book=" +
  187. book +
  188. "&para=" +
  189. para +
  190. "&begin=" +
  191. begin +
  192. "&end=" +
  193. end
  194. );
  195. });
  196. $("sent").mouseenter(function (e) {
  197. let book = $(this).attr("book");
  198. let para = $(this).attr("para");
  199. let begin = $(this).attr("begin");
  200. $(this).css("background-color", "#fefec1");
  201. $(
  202. "sent_trans[book='" +
  203. book +
  204. "'][para='" +
  205. para +
  206. "'][begin='" +
  207. begin +
  208. "']"
  209. ).css("background-color", "#fefec1");
  210. });
  211. $("sent").mouseleave(function (e) {
  212. let book = $(this).attr("book");
  213. let para = $(this).attr("para");
  214. let begin = $(this).attr("begin");
  215. $(this).css("background-color", "unset");
  216. $(
  217. "sent_trans[book='" +
  218. book +
  219. "'][para='" +
  220. para +
  221. "'][begin='" +
  222. begin +
  223. "']"
  224. ).css("background-color", "unset");
  225. });
  226. $("sent_trans").mouseenter(function (e) {
  227. let book = $(this).attr("book");
  228. let para = $(this).attr("para");
  229. let begin = $(this).attr("begin");
  230. $(this).css("background-color", "#fefec1");
  231. $(
  232. "sent[book='" + book + "'][para='" + para + "'][begin='" + begin + "']"
  233. ).css("background-color", "#fefec1");
  234. });
  235. $("sent_trans").mouseleave(function (e) {
  236. let book = $(this).attr("book");
  237. let para = $(this).attr("para");
  238. let begin = $(this).attr("begin");
  239. $(this).css("background-color", "unset");
  240. $(
  241. "sent[book='" + book + "'][para='" + para + "'][begin='" + begin + "']"
  242. ).css("background-color", "unset");
  243. });
  244. $(".sent_text").click(function (e) {
  245. let book = $(this).attr("book");
  246. let para = $(this).attr("para");
  247. let begin = $(this).attr("begin");
  248. let end = $(this).attr("end");
  249. let id = $(this).attr("sent_id");
  250. window.location.assign(
  251. "./reader.php?view=sent&book=" +
  252. book +
  253. "&para=" +
  254. para +
  255. "&begin=" +
  256. begin +
  257. "&end=" +
  258. end +
  259. "&sent=" +
  260. id
  261. );
  262. });
  263. $(".edit_icon").click(function (e) {
  264. let objSent = $(this).parent().children(".sent_text").first();
  265. if (objSent) {
  266. let text = objSent.attr("text");
  267. $("#sent_modify_text").val(text);
  268. $("#sent_modify_text").attr("sent_id", objSent.attr("sent_id"));
  269. $("#sent_modify_text").attr("editor", objSent.attr("editor"));
  270. $("#sent_modify_text").attr("book", objSent.attr("book"));
  271. $("#sent_modify_text").attr("para", objSent.attr("para"));
  272. $("#sent_modify_text").attr("begin", objSent.attr("begin"));
  273. $("#sent_modify_text").attr("end", objSent.attr("end"));
  274. $("#sent_modify_text").attr("lang", objSent.attr("lang"));
  275. $("#sent_modify_text").attr("tag", objSent.attr("tag"));
  276. let orgHtml = $(
  277. "#sent-pali-b" +
  278. objSent.attr("book") +
  279. "-" +
  280. objSent.attr("para") +
  281. "-" +
  282. objSent.attr("begin")
  283. ).html();
  284. $("#sent_modify_win_pali").html(orgHtml);
  285. let sentInfo = new Object();
  286. sentInfo.username = objSent.attr("username");
  287. sentInfo.nickname = objSent.attr("nickname");
  288. sentInfo.text = objSent.attr("text");
  289. $("#sent_modify_win_org").html(render_sent_block(sentInfo));
  290. $("#sent_modify_win").show();
  291. $("#dlg_bg").show();
  292. }
  293. });
  294. $("edit").click(function (e) {
  295. let objSent = $(this).parent().parent().children(".sent_text").first();
  296. if (objSent) {
  297. let text = objSent.attr("text");
  298. $("#sent_modify_text").val(text);
  299. $("#sent_modify_text").attr("sent_id", objSent.attr("sent_id"));
  300. $("#sent_modify_text").attr("editor", objSent.attr("editor"));
  301. $("#sent_modify_text").attr("book", objSent.attr("book"));
  302. $("#sent_modify_text").attr("para", objSent.attr("para"));
  303. $("#sent_modify_text").attr("begin", objSent.attr("begin"));
  304. $("#sent_modify_text").attr("end", objSent.attr("end"));
  305. $("#sent_modify_text").attr("lang", objSent.attr("lang"));
  306. $("#sent_modify_text").attr("tag", objSent.attr("tag"));
  307. let orgHtml = $(
  308. "#sent-pali-b" +
  309. objSent.attr("book") +
  310. "-" +
  311. objSent.attr("para") +
  312. "-" +
  313. objSent.attr("begin")
  314. ).html();
  315. $("#sent_modify_win_pali").html(orgHtml);
  316. let sentInfo = new Object();
  317. sentInfo.username = objSent.attr("username");
  318. sentInfo.nickname = objSent.attr("nickname");
  319. sentInfo.text = objSent.attr("text");
  320. $("#sent_modify_win_org").html(render_sent_block(sentInfo));
  321. $("#sent_modify_win").show();
  322. $("#dlg_bg").show();
  323. }
  324. });
  325. $("para").click(function (e) {
  326. let book = $(this).attr("book");
  327. let para = $(this).attr("para");
  328. let level = $(this).attr("level");
  329. let view = "para";
  330. if (level && level < 100) {
  331. view = "chapter";
  332. }
  333. window.location.assign(
  334. "./reader.php?view=" + view + "&book=" + book + "&para=" + para
  335. );
  336. });
  337. term_get_dict();
  338. //term_updata_translation();
  339. var wordlist = new Array();
  340. $("term").each(function (index, element) {
  341. wordlist.push($(this).attr("pali"));
  342. });
  343. let objParanum = document.querySelectorAll("paranum");
  344. let parahtml = "";
  345. for (const iterator of objParanum) {
  346. let num = iterator.innerHTML;
  347. iterator.innerHTML = num + "<a name='para_s6_" + num + "'></a>";
  348. parahtml += "<div><a href='#para_s6_" + num + "'>" + num + "</a></div>";
  349. }
  350. $("#s6_para").html(parahtml);
  351. }
  352. function haha() {
  353. var wordquery = "('" + wordlist.join("','") + "')";
  354. $.post(
  355. "../term/term.php",
  356. {
  357. op: "extract",
  358. words: wordquery,
  359. },
  360. function (data, status) {
  361. if (data.length > 0) {
  362. try {
  363. arrMyTerm = JSON.parse(data);
  364. term_updata_translation();
  365. } catch (e) {
  366. console.error(e.error + " data:" + data);
  367. }
  368. }
  369. }
  370. );
  371. }
  372. function sent_apply(sentId) {
  373. if (sentId && _sent_id != "") {
  374. let arrSent = [_sent_id, sentId];
  375. $.get(
  376. "../usent/get.php",
  377. {
  378. sentences: arrSent.join(),
  379. },
  380. function (data, status) {
  381. if (data.length > 0) {
  382. try {
  383. let arrSent = JSON.parse(data);
  384. if (arrSent.length == 2) {
  385. let sentInfo = new Object();
  386. sentInfo.username = "原文";
  387. sentInfo.nickname = "我";
  388. if (arrSent[0].id != _sent_id) {
  389. let tmpSent = arrSent[1];
  390. arrSent[1] = arrSent[0];
  391. arrSent[0] = tmpSent;
  392. }
  393. sentInfo.text = arrSent[0].text;
  394. $("#sent_modify_win_org").html(render_sent_block(sentInfo));
  395. let text = arrSent[1].text;
  396. $("#sent_modify_text").val(text);
  397. $("#sent_modify_text").attr("sent_id", arrSent[0].id);
  398. $("#sent_modify_text").attr("editor", arrSent[0].editor);
  399. $("#sent_modify_text").attr("book", arrSent[0].book);
  400. $("#sent_modify_text").attr("para", arrSent[0].paragraph);
  401. $("#sent_modify_text").attr("begin", arrSent[0].begin);
  402. $("#sent_modify_text").attr("end", arrSent[0].end);
  403. $("#sent_modify_text").attr("lang", arrSent[0].lang);
  404. $("#sent_modify_text").attr("tag", arrSent[0].tag);
  405. $("#sent_modify_win").show();
  406. $("#dlg_bg").show();
  407. }
  408. } catch (e) {
  409. console.error(e.error + " data:" + data);
  410. }
  411. }
  412. }
  413. );
  414. }
  415. }