reader.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438
  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. $("sent").click(function (e) {
  177. let book = $(this).attr("book");
  178. let para = $(this).attr("para");
  179. let begin = $(this).attr("begin");
  180. let end = $(this).attr("end");
  181. window.location.assign(
  182. "reader.php?view=sent&book=" +
  183. book +
  184. "&para=" +
  185. para +
  186. "&begin=" +
  187. begin +
  188. "&end=" +
  189. end
  190. );
  191. });
  192. $("sent").mouseenter(function (e) {
  193. let book = $(this).attr("book");
  194. let para = $(this).attr("para");
  195. let begin = $(this).attr("begin");
  196. $(this).css("background-color", "#fefec1");
  197. $(
  198. "sent_trans[book='" +
  199. book +
  200. "'][para='" +
  201. para +
  202. "'][begin='" +
  203. begin +
  204. "']"
  205. ).css("background-color", "#fefec1");
  206. });
  207. $("sent").mouseleave(function (e) {
  208. let book = $(this).attr("book");
  209. let para = $(this).attr("para");
  210. let begin = $(this).attr("begin");
  211. $(this).css("background-color", "unset");
  212. $(
  213. "sent_trans[book='" +
  214. book +
  215. "'][para='" +
  216. para +
  217. "'][begin='" +
  218. begin +
  219. "']"
  220. ).css("background-color", "unset");
  221. });
  222. $("sent_trans").mouseenter(function (e) {
  223. let book = $(this).attr("book");
  224. let para = $(this).attr("para");
  225. let begin = $(this).attr("begin");
  226. $(this).css("background-color", "#fefec1");
  227. $(
  228. "sent[book='" + book + "'][para='" + para + "'][begin='" + begin + "']"
  229. ).css("background-color", "#fefec1");
  230. });
  231. $("sent_trans").mouseleave(function (e) {
  232. let book = $(this).attr("book");
  233. let para = $(this).attr("para");
  234. let begin = $(this).attr("begin");
  235. $(this).css("background-color", "unset");
  236. $(
  237. "sent[book='" + book + "'][para='" + para + "'][begin='" + begin + "']"
  238. ).css("background-color", "unset");
  239. });
  240. $(".sent_text").click(function (e) {
  241. let book = $(this).attr("book");
  242. let para = $(this).attr("para");
  243. let begin = $(this).attr("begin");
  244. let end = $(this).attr("end");
  245. let id = $(this).attr("sent_id");
  246. window.location.assign(
  247. "reader.php?view=sent&book=" +
  248. book +
  249. "&para=" +
  250. para +
  251. "&begin=" +
  252. begin +
  253. "&end=" +
  254. end +
  255. "&sent=" +
  256. id
  257. );
  258. });
  259. $(".edit_icon").click(function (e) {
  260. let objSent = $(this).parent().children(".sent_text").first();
  261. if (objSent) {
  262. let text = objSent.attr("text");
  263. $("#sent_modify_text").val(text);
  264. $("#sent_modify_text").attr("sent_id", objSent.attr("sent_id"));
  265. $("#sent_modify_text").attr("editor", objSent.attr("editor"));
  266. $("#sent_modify_text").attr("book", objSent.attr("book"));
  267. $("#sent_modify_text").attr("para", objSent.attr("para"));
  268. $("#sent_modify_text").attr("begin", objSent.attr("begin"));
  269. $("#sent_modify_text").attr("end", objSent.attr("end"));
  270. $("#sent_modify_text").attr("lang", objSent.attr("lang"));
  271. $("#sent_modify_text").attr("tag", objSent.attr("tag"));
  272. let orgHtml = $(
  273. "#sent-pali-b" +
  274. objSent.attr("book") +
  275. "-" +
  276. objSent.attr("para") +
  277. "-" +
  278. objSent.attr("begin")
  279. ).html();
  280. $("#sent_modify_win_pali").html(orgHtml);
  281. let sentInfo = new Object();
  282. sentInfo.username = objSent.attr("username");
  283. sentInfo.nickname = objSent.attr("nickname");
  284. sentInfo.text = objSent.attr("text");
  285. $("#sent_modify_win_org").html(render_sent_block(sentInfo));
  286. $("#sent_modify_win").show();
  287. $("#dlg_bg").show();
  288. }
  289. });
  290. $("edit").click(function (e) {
  291. let objSent = $(this).parent().parent().children(".sent_text").first();
  292. if (objSent) {
  293. let text = objSent.attr("text");
  294. $("#sent_modify_text").val(text);
  295. $("#sent_modify_text").attr("sent_id", objSent.attr("sent_id"));
  296. $("#sent_modify_text").attr("editor", objSent.attr("editor"));
  297. $("#sent_modify_text").attr("book", objSent.attr("book"));
  298. $("#sent_modify_text").attr("para", objSent.attr("para"));
  299. $("#sent_modify_text").attr("begin", objSent.attr("begin"));
  300. $("#sent_modify_text").attr("end", objSent.attr("end"));
  301. $("#sent_modify_text").attr("lang", objSent.attr("lang"));
  302. $("#sent_modify_text").attr("tag", objSent.attr("tag"));
  303. let orgHtml = $(
  304. "#sent-pali-b" +
  305. objSent.attr("book") +
  306. "-" +
  307. objSent.attr("para") +
  308. "-" +
  309. objSent.attr("begin")
  310. ).html();
  311. $("#sent_modify_win_pali").html(orgHtml);
  312. let sentInfo = new Object();
  313. sentInfo.username = objSent.attr("username");
  314. sentInfo.nickname = objSent.attr("nickname");
  315. sentInfo.text = objSent.attr("text");
  316. $("#sent_modify_win_org").html(render_sent_block(sentInfo));
  317. $("#sent_modify_win").show();
  318. $("#dlg_bg").show();
  319. }
  320. });
  321. $("para").click(function (e) {
  322. let book = $(this).attr("book");
  323. let para = $(this).attr("para");
  324. let level = $(this).attr("level");
  325. let view = "para";
  326. if (level && level < 100) {
  327. view = "chapter";
  328. }
  329. window.location.assign(
  330. "reader.php?view=" + view + "&book=" + book + "&para=" + para
  331. );
  332. });
  333. term_updata_translation();
  334. var wordlist = new Array();
  335. $("term").each(function (index, element) {
  336. wordlist.push($(this).attr("pali"));
  337. });
  338. let objParanum = document.querySelectorAll("paranum");
  339. let parahtml = "";
  340. for (const iterator of objParanum) {
  341. let num = iterator.innerHTML;
  342. iterator.innerHTML = num + "<a name='para_s6_" + num + "'></a>";
  343. parahtml += "<div><a href='#para_s6_" + num + "'>" + num + "</a></div>";
  344. }
  345. $("#s6_para").html(parahtml);
  346. }
  347. function haha() {
  348. var wordquery = "('" + wordlist.join("','") + "')";
  349. $.post(
  350. "../term/term.php",
  351. {
  352. op: "extract",
  353. words: wordquery,
  354. },
  355. function (data, status) {
  356. if (data.length > 0) {
  357. try {
  358. arrMyTerm = JSON.parse(data);
  359. term_updata_translation();
  360. } catch (e) {
  361. console.error(e.error + " data:" + data);
  362. }
  363. }
  364. }
  365. );
  366. }
  367. function sent_apply(sentId) {
  368. if (sentId && _sent_id != "") {
  369. let arrSent = [_sent_id, sentId];
  370. $.get(
  371. "../usent/get.php",
  372. {
  373. sentences: arrSent.join(),
  374. },
  375. function (data, status) {
  376. if (data.length > 0) {
  377. try {
  378. let arrSent = JSON.parse(data);
  379. if (arrSent.length == 2) {
  380. let sentInfo = new Object();
  381. sentInfo.username = "原文";
  382. sentInfo.nickname = "我";
  383. if (arrSent[0].id != _sent_id) {
  384. let tmpSent = arrSent[1];
  385. arrSent[1] = arrSent[0];
  386. arrSent[0] = tmpSent;
  387. }
  388. sentInfo.text = arrSent[0].text;
  389. $("#sent_modify_win_org").html(render_sent_block(sentInfo));
  390. let text = arrSent[1].text;
  391. $("#sent_modify_text").val(text);
  392. $("#sent_modify_text").attr("sent_id", arrSent[0].id);
  393. $("#sent_modify_text").attr("editor", arrSent[0].editor);
  394. $("#sent_modify_text").attr("book", arrSent[0].book);
  395. $("#sent_modify_text").attr("para", arrSent[0].paragraph);
  396. $("#sent_modify_text").attr("begin", arrSent[0].begin);
  397. $("#sent_modify_text").attr("end", arrSent[0].end);
  398. $("#sent_modify_text").attr("lang", arrSent[0].lang);
  399. $("#sent_modify_text").attr("tag", arrSent[0].tag);
  400. $("#sent_modify_win").show();
  401. $("#dlg_bg").show();
  402. }
  403. } catch (e) {
  404. console.error(e.error + " data:" + data);
  405. }
  406. }
  407. }
  408. );
  409. }
  410. }