reader.php 43 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193
  1. <?php
  2. require_once "../public/_pdo.php";
  3. require_once "../path.php";
  4. require_once '../public/load_lang.php';
  5. ?>
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  7. <html>
  8. <head>
  9. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  10. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  11. <link type="text/css" rel="stylesheet" href="css/reader.css"/>
  12. <link type="text/css" rel="stylesheet" href="css/reader_mob.css" media="screen and (max-width:767px)">
  13. <title id="page_title">PCD Reader</title>
  14. <script src="js/jquery-3.3.1.min.js"></script>
  15. <script src="js/fixedsticky.js"></script>
  16. <script src="js/reader.js"></script>
  17. <script src="../public/js/comm.js"></script>
  18. <script src="../term/term.js"></script>
  19. <script src="../term/note.js"></script>
  20. <script>
  21. var curr_tool="";
  22. var dighest_count=0;//书摘段落数量
  23. var res_list=new Array();
  24. var new_comments_album=-1;
  25. var new_comments_book=-1;
  26. var new_comments_paragraph=-1;
  27. function add_new_res(album,book,paragraph,text){
  28. var new_res=new Object();
  29. new_res.album=album;
  30. new_res.book=book;
  31. new_res.paragraph=paragraph;
  32. new_res.dighest=false;
  33. new_res.text=text;
  34. new_res.textchanged=false;
  35. res_list.push(new_res);
  36. }
  37. function tool_changed(tool_name){
  38. if(tool_name==curr_tool){
  39. return;
  40. }
  41. $("#main_tool_bar").fadeOut();
  42. curr_tool=tool_name;
  43. switch(tool_name){
  44. case "comments":
  45. $("#tool_bar_dighest").fadeOut();
  46. $("#tool_bar_comments").fadeIn();
  47. break;
  48. case "dighest":
  49. $("#tool_bar_comments").fadeOut();
  50. $("#tool_bar_dighest").fadeIn();
  51. break;
  52. case "fix":
  53. $("#tool_bar_comments").fadeOut();
  54. $("#tool_bar_fix").fadeIn();
  55. render_all_tran();
  56. break;
  57. }
  58. }
  59. function paragraph_click(album,book,paragraph){
  60. switch(curr_tool){
  61. case "comments":
  62. new_comments(album,book,paragraph);
  63. break;
  64. case "dighest":
  65. dighest_par_click(album,book,paragraph);
  66. break;
  67. }
  68. }
  69. function new_comments(album,book,paragraph){
  70. new_comments_album=album;
  71. new_comments_book=book;
  72. new_comments_paragraph=paragraph;
  73. document.getElementById("new-comm-a"+album+"-b"+book+"-"+paragraph).appendChild(document.getElementById("new_comm_div"));
  74. }
  75. function new_comm_cancel(){
  76. $("#tool_bar_comments").fadeOut();
  77. $("#main_tool_bar").fadeIn();
  78. document.getElementById("new_comm_text").value="";
  79. document.getElementById("new_comm_shell").appendChild(document.getElementById("new_comm_div"));
  80. curr_tool="";
  81. }
  82. function new_comm_submit(){
  83. $("#tool_bar_comments").fadeOut();
  84. $("#main_tool_bar").fadeIn();
  85. curr_tool="";
  86. var comm_text=document.getElementById("new_comm_text").value;
  87. $.post("comments.php",
  88. {
  89. album:new_comments_album,
  90. book:new_comments_book,
  91. paragraph:new_comments_paragraph,
  92. text:comm_text
  93. },
  94. function(data,status){
  95. alert("Data: " + data + "\nStatus: " + status);
  96. });
  97. }
  98. //书摘处理
  99. function dighest_par_click(album,book,paragraph){
  100. for (var x in res_list){
  101. if(
  102. res_list[x].album==album &&
  103. res_list[x].book==book &&
  104. res_list[x].paragraph==paragraph){
  105. if(res_list[x].dighest==false){
  106. res_list[x].dighest=true;
  107. res_list[x].text=document.getElementById("text-a"+album+"-b"+book+"-"+paragraph).innerHTML;
  108. $("#text-a"+album+"-b"+book+"-"+paragraph).css("background-color","yellow");
  109. dighest_count++;
  110. }
  111. else{
  112. res_list[x].dighest=false;
  113. $("#text-a"+album+"-b"+book+"-"+paragraph).css("background-color","white");
  114. dighest_count--;
  115. }
  116. }
  117. }
  118. $("#dighest_message").text="已经选择"+dighest_count+"段";
  119. }
  120. //将段落列表重置
  121. function dighest_reset_res_list(){
  122. for (var x in res_list){
  123. var album=res_list[x].album;
  124. var book=res_list[x].book;
  125. var paragraph=res_list[x].paragraph;
  126. if(res_list[x].dighest==false){
  127. dighest_count=0;
  128. }
  129. else{
  130. res_list[x].dighest=false;
  131. $("#text-a"+album+"-b"+book+"-"+paragraph).css("background-color","white");
  132. dighest_count=0;
  133. }
  134. }
  135. }
  136. function dighest_cancle(){
  137. $("#tool_bar_dighest").fadeOut();
  138. $("#main_tool_bar").fadeIn();
  139. curr_tool="";
  140. //将段落列表重置
  141. dighest_reset_res_list();
  142. }
  143. function dighest_ok(){
  144. var output="";
  145. for (var x in res_list){
  146. if(res_list[x].dighest==true){
  147. output+="<p>"+res_list[x].text+"</p>";
  148. }
  149. }
  150. //书摘文字预览
  151. document.getElementById("dighest_text_preview").innerHTML=output;
  152. $("#tool_bar_dighest").fadeOut();
  153. $("#dighest_edit_div").fadeIn();
  154. }
  155. function dighest_edit_cancle(){
  156. $("#dighest_edit_div").fadeOut();
  157. $("#main_tool_bar").fadeIn();
  158. curr_tool="";
  159. //将段落列表重置
  160. dighest_reset_res_list();
  161. }
  162. function dighest_edit_submit(){
  163. $("#dighest_edit_div").fadeOut();
  164. $("#main_tool_bar").fadeIn();
  165. curr_tool="";
  166. //计算书摘数量 生成书摘字符串
  167. if(res_list.length==0){
  168. return;
  169. }
  170. var output=new Array();
  171. for (var x in res_list){
  172. if(res_list[x].dighest==true){
  173. output.push(res_list[x].album+"-"+res_list[x].book+"-"+res_list[x].paragraph);
  174. }
  175. }
  176. var dighest_text=output.join();
  177. var dighest_title=document.getElementById("dighest_edit_title").value;
  178. var dighest_summary=document.getElementById("dighest_edit_summary").value;
  179. var dighest_tag=document.getElementById("dighest_edit_taget").value;
  180. if(dighest_title==""){alert("标题不能为空");return;}
  181. if(dighest_summary==""){alert("简介不能为空");return;}
  182. if(dighest_tag==""){alert("标签不能为空");return;}
  183. $.post("dighest.php",
  184. {
  185. title:dighest_title,
  186. summary:dighest_summary,
  187. tag:dighest_tag,
  188. data:dighest_text
  189. },
  190. function(data,status){
  191. alert("Data: " + data + "\nStatus: " + status);
  192. });
  193. //将段落列表重置
  194. dighest_reset_res_list();
  195. }
  196. function setNaviVisibility(){
  197. var objNave = document.getElementById('leftmenuinner');
  198. var objblack = document.getElementById('BV');
  199. if ( objNave.className=='viewswitch_off'){
  200. objblack.style.display = "block";
  201. objNave.className = "viewswitch_on";
  202. }
  203. else{
  204. objblack.style.display = "none";
  205. objNave.className = "viewswitch_off";
  206. }
  207. }
  208. function render_all_tran(mode="fix"){
  209. for (var x in res_list){
  210. var album=res_list[x].album;
  211. var book=res_list[x].book;
  212. var paragraph=res_list[x].paragraph;
  213. var text=res_list[x].text;
  214. if(mode=="fix"){
  215. var new_text=getSuperTranslateModifyString(x);
  216. }
  217. else{
  218. var new_text=text;
  219. }
  220. var obj=document.getElementById("text-a"+album+"-b"+book+"-"+paragraph);
  221. if(obj){
  222. obj.innerHTML=new_text;
  223. }
  224. }
  225. }
  226. function getSuperTranslateModifyString(index){
  227. var newString = res_list[index].text.replace(/。/g,"。#");
  228. newString = newString.replace(/,/g,",#");
  229. newString = newString.replace(/!/g,"!#");
  230. newString = newString.replace(/?/g,"?#");
  231. newString = newString.replace(/”/g,"”#");
  232. newString = newString.replace(/“/g,"“#");
  233. newString = newString.replace(/’/g,"’#");
  234. arrString = newString.split("#");
  235. var output="";
  236. var str_pos=0;
  237. for (x in arrString){
  238. var str_len=arrString[x].length;
  239. str_pos+=str_len;
  240. output +=arrString[x]+"<span class=\"tooltip\">※<span class=\"tooltiptext tooltip-bottom\"><button onclick='text_move("+index+"," + str_pos + ",0)'>▲</button> <button onclick='text_move("+index+"," + str_pos + ",1)'>▼</button> </span> </span> ";
  241. }
  242. return output;
  243. }
  244. function text_move(index,str_pos,updown){
  245. if(updown==0 && index==0){
  246. return;
  247. }
  248. if(updown==1 && index==res_list.length-1){
  249. return;
  250. }
  251. if(updown==0){
  252. res_list[index-1].text+=res_list[index].text.substring(0,str_pos);
  253. res_list[index-1].textchanged=true;
  254. res_list[index].text=res_list[index].text.substring(str_pos);
  255. res_list[index].textchanged=true;
  256. }
  257. else{
  258. res_list[index+1].text=res_list[index].text.substring(str_pos)+res_list[index+1].text;
  259. res_list[index+1].textchanged=true;
  260. res_list[index].text=res_list[index].text.substring(0,str_pos);
  261. res_list[index].textchanged=true;
  262. }
  263. render_all_tran();
  264. }
  265. function fix_cancle(){
  266. $("#tool_bar_fix").fadeOut();
  267. $("#main_tool_bar").fadeIn();
  268. curr_tool="";
  269. render_all_tran("");
  270. }
  271. function fix_ok(){
  272. $("#tool_bar_fix").fadeOut();
  273. $("#main_tool_bar").fadeIn();
  274. curr_tool="";
  275. render_all_tran("");
  276. //计算书摘数量 生成书摘字符串
  277. if(res_list.length==0){
  278. return;
  279. }
  280. var output=new Array();
  281. for (var x in res_list){
  282. if(res_list[x].textchanged==true){
  283. output.push(res_list[x].album+"@"+res_list[x].book+"@"+res_list[x].paragraph+"@"+res_list[x].text);
  284. res_list[x].textchanged=false;
  285. }
  286. }
  287. var fix_text=output.join("#");
  288. var fix_album=res_list[0].album;
  289. $.post("tran_text.php",
  290. {
  291. album:fix_album,
  292. data:fix_text
  293. },
  294. function(data,status){
  295. alert("Data: " + data + "\nStatus: " + status);
  296. });
  297. }
  298. function lookup(){
  299. var xPali=document.getElementsByClassName("pali");
  300. for (var x in xPali){
  301. var pali = xPali[x].innerHTML;
  302. var xMean=xPali[x].nextSibling;
  303. if(bh[pali]){
  304. var arrMean=bh[pali].split("$");
  305. if(arrMean.length>0){
  306. xMean.innerHTML=arrMean[0];
  307. }
  308. }
  309. else if(sys_r[pali]){
  310. var word_parent=sys_r[pali];
  311. if(bh[word_parent]){
  312. var arrMean=bh[word_parent].split("$");
  313. if(arrMean.length>0){
  314. xMean.innerHTML=arrMean[0];
  315. }
  316. }
  317. }
  318. }
  319. }
  320. </script>
  321. <body class="reader_body" >
  322. <style>
  323. #para_nav {
  324. display: flex;
  325. justify-content: space-between;
  326. padding: 5px 1em;
  327. border-top: 1px solid gray;
  328. }
  329. .word{
  330. display:inline-block;
  331. padding: 1px 3px;
  332. }
  333. .mean{
  334. font-size: 65%;
  335. }
  336. /* 下拉内容 (默认隐藏) */
  337. #mean_menu {
  338. margin: 0.3em;
  339. position: absolute;
  340. background-color: white;
  341. min-width: 8em;
  342. max-width: 30em;
  343. margin: -1px 0px;
  344. box-shadow: 0px 3px 13px 0px black;
  345. color: var(--main-color);
  346. z-index: 200;
  347. }
  348. /* 下拉菜单的链接 */
  349. #mean_menu a {
  350. /*padding: 0.3em 0.4em;*/
  351. line-height: 160%;
  352. text-decoration: none;
  353. display: block;
  354. cursor: pointer;
  355. text-align: left;
  356. font-size:80%;
  357. }
  358. /* 鼠标移上去后修改下拉菜单链接颜色 */
  359. .mean_menu a:hover {
  360. background-color: blue;
  361. color: white;
  362. }
  363. .par_pali_div{
  364. margin-top:1em;
  365. }
  366. .par_pali_div{
  367. font-weight:700;
  368. }
  369. sent{
  370. font-weight:500;
  371. font-size:110%;
  372. line-height: 150%;
  373. }
  374. sent:hover{
  375. background-color:#fefec1;
  376. }
  377. para {
  378. color: white;
  379. background-color: #F1CA23;
  380. min-width: 2em;
  381. display: inline-block;
  382. text-align: center;
  383. padding: 3px 6px;
  384. border-radius: 99px;
  385. margin-right: 5px;
  386. cursor:pointer;
  387. font-size:80%;
  388. }
  389. para:hover{
  390. }
  391. .sent_count{
  392. font-size:80%;
  393. color: white;
  394. background-color: #1cb70985;
  395. min-width: 2em;
  396. display: inline-block;
  397. text-align: center;
  398. padding: 2px 0;
  399. border-radius: 99px;
  400. margin-left: 5px;
  401. cursor:pointer;
  402. }
  403. </style>
  404. <!-- tool bar begin-->
  405. <div id="main_tool_bar" class='reader_toolbar'>
  406. <div id="index_nav">
  407. <button onclick="setNaviVisibility()">
  408. <svg t='1598084571450' class='icon' viewBox='0 0 1029 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='6428' width='20px' height='20px'><path d='M159.744 69.632 53.248 69.632C28.672 69.632 4.096 90.112 4.096 118.784l0 94.208c0 28.672 24.576 49.152 53.248 49.152l102.4 0C184.32 266.24 208.896 241.664 208.896 212.992L208.896 118.784C208.896 90.112 184.32 69.632 159.744 69.632zM970.752 69.632 368.64 69.632c-28.672 0-57.344 24.576-57.344 49.152l0 94.208c0 28.672 32.768 49.152 57.344 49.152l598.016 0c28.672 0 57.344-24.576 57.344-49.152L1024 118.784C1028.096 94.208 999.424 69.632 970.752 69.632zM159.744 413.696 53.248 413.696c-28.672 0-53.248 24.576-53.248 49.152l0 94.208c0 28.672 24.576 49.152 53.248 49.152l102.4 0c28.672 0 53.248-24.576 53.248-49.152l0-94.208C208.896 438.272 184.32 413.696 159.744 413.696zM970.752 413.696 368.64 413.696c-28.672 0-57.344 24.576-57.344 49.152l0 94.208c0 28.672 32.768 49.152 57.344 49.152l598.016 0c28.672 0 57.344-24.576 57.344-49.152l0-94.208C1028.096 438.272 999.424 413.696 970.752 413.696zM159.744 757.76 53.248 757.76c-28.672 0-53.248 24.576-53.248 49.152l0 94.208c0 28.672 24.576 49.152 53.248 49.152l102.4 0c28.672 0 53.248-24.576 53.248-49.152l0-94.208C208.896 782.336 184.32 757.76 159.744 757.76zM970.752 761.856 368.64 761.856c-28.672 0-57.344 24.576-57.344 49.152l0 94.208c0 28.672 32.768 49.152 57.344 49.152l598.016 0c28.672 0 57.344-24.576 57.344-49.152l0-94.208C1028.096 782.336 999.424 761.856 970.752 761.856z' fill='#757AF7' p-id='6429'></path></svg>
  409. </button>
  410. </div>
  411. <div>
  412. <span id="tool_bar_title"><?php echo $_local->gui->title; ?></span>
  413. </div>
  414. <div style="display: flex;">
  415. <form action="../studio/project.php" method="post" onsubmit="return pali_canon_edit_now(this)" target="_blank" style="display: inline-block;">
  416. <div style="display:none;">
  417. <input type="input" name="op" value="create">
  418. <input type="hidden" name="view" value="<?php echo $_GET["view"]?>" />
  419. <input type="hidden" name="book" value="<?php echo $_GET["book"]?>" />
  420. <input type="hidden" id = "para" name="para" value="" />
  421. <input type="hidden" id = "para_end" name="para_end" value="" />
  422. <input type="hidden" id = "chapter_title" name="chapter_title" value="" />
  423. <textarea id="project_new_res_data" rows="3" cols="18" name="data"></textarea>
  424. </div>
  425. <input type="submit" value="<?php echo $_local->gui->edit_now; ?>">
  426. </form>
  427. <div class="case_dropdown">
  428. <p class="case_dropbtn"><button>
  429. <svg t='1598086376923' class='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='8426' width='20px' height='20px'><path d='M609.745455 453.818182v130.327273h69.818181V535.272727H744.727273v377.018182h95.418182V535.272727H907.636364v48.872728h69.818181V453.818182z' p-id='8427' fill='#757AF7'></path><path d='M677.236364 300.218182V111.709091H46.545455V300.218182h69.818181v-51.2h162.909091v663.272727h165.236364V249.018182h162.909091v51.2z' p-id='8428' fill='#757AF7'></path></svg>
  430. </button></p>
  431. <div class="case_dropdown-content" style="right: 0;width:10em;">
  432. <div ><button>A+</button><button>A-</button></div>
  433. <div ><button><?php echo $_local->gui->white;?></button><button><?php echo $_local->gui->dawn;//棕?></button><button><?php echo $_local->gui->night;//夜?></button></div>
  434. </div>
  435. </div>
  436. <div class="case_dropdown">
  437. <p class="case_dropbtn"><button>
  438. <svg t='1598086493824' class='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='9217' width='20px' height='20px'><path d='M912.695652 512m-111.304348 0a5 5 0 1 0 222.608696 0 5 5 0 1 0-222.608696 0Z' p-id='9218' fill='#757AF7'></path><path d='M512 512m-111.304348 0a5 5 0 1 0 222.608696 0 5 5 0 1 0-222.608696 0Z' p-id='9219' fill='#757AF7'></path><path d='M111.304348 512m-111.304348 0a5 5 0 1 0 222.608696 0 5 5 0 1 0-222.608696 0Z' p-id='9220' fill='#757AF7'></path></svg>
  439. </button></p>
  440. <div class="case_dropdown-content" style="right: 2em;min-width:6em;">
  441. <a onclick="tool_changed('dighest')">书摘</a>
  442. <a onclick="tool_changed('comments')">批注</a>
  443. <a onclick="tool_changed('target')">标签</a>
  444. <a onclick="tool_changed('layout')">布局</a>
  445. <a onclick="tool_changed('porpername')">术语</a>
  446. <a onclick="tool_changed('share')">分享</a>
  447. <a onclick="tool_changed('fix')">修改</a>
  448. </div>
  449. </div>
  450. </div>
  451. </div>
  452. <div id="tool_bar_comments">
  453. <div class='reader_toolbar' style="height:auto;">
  454. <div>
  455. </div>
  456. <div>
  457. <span>单击段落文字添加批注</span>
  458. </div>
  459. <div>
  460. </div>
  461. </div>
  462. </div>
  463. <div id="tool_bar_dighest">
  464. <div class='reader_toolbar' style="height:auto;">
  465. <div>
  466. <button onclick="dighest_cancle()">取消</button>
  467. </div>
  468. <div>
  469. <span id="dighest_message">单击文字选择段落</span>
  470. </div>
  471. <div>
  472. <button onclick="dighest_ok()">完成</button>
  473. </div>
  474. </div>
  475. </div>
  476. <div id="tool_bar_fix">
  477. <div class='reader_toolbar' style="height:auto;">
  478. <div>
  479. <button onclick="fix_cancle()">取消</button>
  480. </div>
  481. <div>
  482. <span id="fix_message">单击按钮调整段落</span>
  483. </div>
  484. <div>
  485. <button onclick="fix_ok()">完成</button>
  486. </div>
  487. </div>
  488. </div>
  489. <!--tool bar end -->
  490. <div id="main_text_view" style="padding-bottom: 10em;">
  491. <?php
  492. $tocHtml="";
  493. if(isset($_GET["album"])){
  494. $album=$_GET["album"];
  495. }
  496. if(isset($_GET["book"])){
  497. $book=$_GET["book"];
  498. }
  499. else{
  500. echo "no book id";
  501. }
  502. if(substr($book,0,1)=='p'){
  503. $book=substr($book,1);
  504. }
  505. if(isset($_GET["paragraph"])){
  506. $paragraph = $_GET["paragraph"];
  507. }
  508. else if(isset($_GET["para"])){
  509. $paragraph = $_GET["para"];
  510. }
  511. else{
  512. $paragraph = -1;
  513. }
  514. if(isset($_GET["view"])){
  515. $_view = $_GET["view"];
  516. }
  517. else{
  518. echo "Error : 未定义必要的参数view";
  519. exit;
  520. }
  521. if(isset($_GET["display"])){
  522. $_display = $_GET["display"];
  523. }
  524. else{
  525. if($_view=="para" || $_view=="sent"){
  526. $_display = "sent";//默认值
  527. }
  528. else{
  529. $_display = "para";
  530. }
  531. }
  532. if($_view=="chapter" || $_view=="para" || $_view=="sent" ){
  533. PDO_Connect("sqlite:"._FILE_DB_PALITEXT_);
  534. //获取段落信息 如 父段落 下一个段落等
  535. $query = "select * from 'pali_text' where book='$book' and paragraph='$paragraph'";
  536. $FetchParInfo = PDO_FetchAll($query);
  537. if(count($FetchParInfo)==0){
  538. echo "Error:no paragraph info";
  539. echo $query;
  540. }
  541. $par_begin=$paragraph+1-1;
  542. if($_view=="para"){
  543. $par_end = $par_begin;
  544. }
  545. else{
  546. $par_end=$par_begin+$FetchParInfo[0]["chapter_len"]-1;
  547. }
  548. $par_next=$FetchParInfo[0]["next_chapter"];
  549. $par_prev=$FetchParInfo[0]["prev_chapter"];
  550. $par_parent=$FetchParInfo[0]["parent"];
  551. if($par_parent >= 0){
  552. $query = "select toc from 'pali_text' where book='$book' and paragraph='$par_parent'";
  553. $FetchToc = PDO_FetchAll($query);
  554. if(count($FetchToc)>0){
  555. $_parent_title = $FetchToc[0]["toc"];
  556. }
  557. }
  558. $query = "select paragraph,toc from 'pali_text' where book='$book' and parent='$paragraph' and level < '8'";
  559. $FetchParent = PDO_FetchAll($query);
  560. foreach ($FetchParent as $key => $value) {
  561. $tocHtml .= "<div><a href='reader.php?view=chapter&book={$book}&para={$value["paragraph"]}'>{$value["toc"]}</a></div>";
  562. }
  563. //查询标题
  564. if($_view=="chapter"){
  565. $par_title = $FetchParInfo[0]["toc"];
  566. }
  567. else{
  568. $par_title = $_parent_title;
  569. }
  570. //导航按钮
  571. if($_view=="sent"){
  572. $next_para_link = "";
  573. $prev_para_link = "";
  574. }
  575. else{
  576. if($par_next != -1){
  577. $query = "select paragraph , toc from 'pali_text' where book='$book' and paragraph='$par_next' ";
  578. $FetchPara = PDO_FetchAll($query);
  579. if(count($FetchPara)>0){
  580. $next_para_link = "<a href='reader.php?view={$_view}&book={$book}&para={$par_next}'><span id='para_nav_next'>{$FetchPara[0]["toc"]}</span><span id='para_nav_next_a'>";
  581. $next_para_link .= "<svg t='1598093121925' class='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='4451' width='32px' height='32px'><path d='M540.5696 102.4c-225.83296 0-409.6 183.74656-409.6 409.6s183.76704 409.6 409.6 409.6c225.85344 0 409.6-183.74656 409.6-409.6s-183.74656-409.6-409.6-409.6z m180.14208 439.84896l-109.19936 128.59392a46.65344 46.65344 0 0 1-65.86368 5.36576 46.71488 46.71488 0 0 1-5.38624-65.8432l43.86816-51.63008h-188.12928a46.6944 46.6944 0 1 1 0-93.42976h188.12928l-43.86816-51.63008a46.75584 46.75584 0 0 1 71.24992-60.47744l109.19936 128.59392c14.82752 17.408 14.82752 43.008 0 60.45696z' p-id='4452' fill='#757AF7'></path></svg>";
  582. $next_para_link .= "</span></a>";
  583. }
  584. else{
  585. $next_para_link = "没有查询到标题";
  586. }
  587. }
  588. else{
  589. $next_para_link = "没了";
  590. }
  591. if($par_prev != -1){
  592. $query = "select paragraph , toc from 'pali_text' where book='$book' and paragraph='$par_prev' ";
  593. $FetchPara = PDO_FetchAll($query);
  594. if(count($FetchPara)>0){
  595. $prev_para_link = "<a href='reader.php?view={$_view}&book={$book}&para={$par_prev}'><span id='para_nav_prev_a'>";
  596. $prev_para_link .= "<svg t='1598093521111' class='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='4644' width='32' height='32'><path d='M540.5696 102.4c-225.83296 0-409.6 183.74656-409.6 409.6s183.76704 409.6 409.6 409.6c225.85344 0 409.6-183.74656 409.6-409.6s-183.74656-409.6-409.6-409.6z m144.54784 456.31488h-188.12928l43.84768 51.63008a46.6944 46.6944 0 0 1-35.59424 76.96384 46.55104 46.55104 0 0 1-35.61472-16.4864l-109.24032-128.59392a46.71488 46.71488 0 0 1 0-60.47744l109.24032-128.59392a46.6944 46.6944 0 1 1 71.20896 60.47744l-43.84768 51.63008h188.12928a46.6944 46.6944 0 1 1 0 93.45024z' p-id='4645' fill='#757AF7'></path></svg>";
  597. $prev_para_link .= "</span><span id='para_nav_prev'>{$FetchPara[0]["toc"]}</span></a>";
  598. }
  599. else{
  600. $prev_para_link = "没有查询到标题";
  601. }
  602. }
  603. else{
  604. $prev_para_link = "没了";
  605. }
  606. }
  607. //设置标题栏的经文名称
  608. echo "<script>";
  609. echo "document.getElementById('tool_bar_title').innerHTML='".$par_title."';\n";
  610. echo "$('#chapter_title').val('".$par_title."');\n";
  611. echo "$('#para_end').val('".$par_end."');\n";
  612. echo "$('#para').val('".$par_begin."');\n";
  613. echo "</script>";
  614. }
  615. //上一级
  616. echo "<div>";
  617. switch($_view){
  618. case 1 :
  619. break;
  620. case 2:
  621. break;
  622. case 3:
  623. break;
  624. case 4:
  625. break;
  626. case 5:
  627. break;
  628. case 5:
  629. break;
  630. case 6:
  631. break;
  632. case "chapter":
  633. if($par_parent >= 0){
  634. echo "<a href='reader.php?view={$_view}&book={$book}&paragraph={$par_parent}'>";
  635. echo "<svg t='1598083209786' class='icon' style='fill:#666666;' height='30px' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='4926'><path d='M446.464 118.784l-254.976 256c-13.312 13.312-4.096 35.84 15.36 35.84H716.8c18.432 0 28.672-22.528 15.36-35.84l-254.976-256c-9.216-8.192-22.528-8.192-30.72 0zM563.2 796.672V533.504c0-11.264-9.216-21.504-21.504-21.504H379.904c-11.264 0-21.504 9.216-21.504 21.504v366.592c0 11.264 9.216 21.504 21.504 21.504h467.968c11.264 0 21.504-9.216 21.504-21.504V839.68c0-11.264-9.216-21.504-21.504-21.504H584.704c-12.288 0-21.504-9.216-21.504-21.504z m0 21.504' p-id='4927'></path></svg>";
  636. echo "{$_parent_title}</a>";
  637. }
  638. break;
  639. case "para":
  640. if($par_parent >= 0){
  641. echo "<a href='reader.php?view=chapter&book={$book}&paragraph={$par_parent}'>";
  642. echo "<svg t='1598083209786' class='icon' style='fill:#666666;' height='30px' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='4926'><path d='M446.464 118.784l-254.976 256c-13.312 13.312-4.096 35.84 15.36 35.84H716.8c18.432 0 28.672-22.528 15.36-35.84l-254.976-256c-9.216-8.192-22.528-8.192-30.72 0zM563.2 796.672V533.504c0-11.264-9.216-21.504-21.504-21.504H379.904c-11.264 0-21.504 9.216-21.504 21.504v366.592c0 11.264 9.216 21.504 21.504 21.504h467.968c11.264 0 21.504-9.216 21.504-21.504V839.68c0-11.264-9.216-21.504-21.504-21.504H584.704c-12.288 0-21.504-9.216-21.504-21.504z m0 21.504' p-id='4927'></path></svg>";
  643. echo "{$_parent_title}</a>";
  644. }
  645. break;
  646. case "sent":
  647. echo "<a href='reader.php?view=para&book={$book}&paragraph={$paragraph}'>";
  648. echo "<svg t='1598083209786' class='icon' style='fill:#666666;' height='30px' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='4926'><path d='M446.464 118.784l-254.976 256c-13.312 13.312-4.096 35.84 15.36 35.84H716.8c18.432 0 28.672-22.528 15.36-35.84l-254.976-256c-9.216-8.192-22.528-8.192-30.72 0zM563.2 796.672V533.504c0-11.264-9.216-21.504-21.504-21.504H379.904c-11.264 0-21.504 9.216-21.504 21.504v366.592c0 11.264 9.216 21.504 21.504 21.504h467.968c11.264 0 21.504-9.216 21.504-21.504V839.68c0-11.264-9.216-21.504-21.504-21.504H584.704c-12.288 0-21.504-9.216-21.504-21.504z m0 21.504' p-id='4927'></path></svg>";
  649. echo "{$paragraph}</a>";
  650. break;
  651. case 10:
  652. break;
  653. }
  654. echo "</div>";
  655. //生成一个段落空壳 等会儿查询数据,按照不同数据类型填充进去
  656. PDO_Connect("sqlite:"._FILE_DB_PALI_SENTENCE_);
  657. if($_display=="sent"){
  658. //逐句显示
  659. for($iPar=$par_begin;$iPar<=$par_end;$iPar++){
  660. if($_view=="sent"){
  661. $query = "select text, begin, end from 'pali_sent' where book='$book' and paragraph='$paragraph' and begin='{$_GET["begin"]}' and end ='{$_GET["end"]}'";
  662. }
  663. else{
  664. $query = "select text, begin, end from 'pali_sent' where book='$book' and paragraph='$iPar'";
  665. }
  666. $FetchSent = PDO_FetchAll($query);
  667. echo "<div id='par-b$book-$iPar' class='par_div'>";
  668. echo "<para book='$book' para='$iPar'>$iPar</para>";
  669. foreach ($FetchSent as $key => $value) {
  670. echo "<div id='sent-pali-b$book-$iPar-{$value["begin"]}' class='par_pali_div'>";
  671. $pali_sent = str_replace("{","<b>",$value["text"]);
  672. $pali_sent = str_replace("}","</b>",$pali_sent);
  673. echo "<sent book='{$book}' para='{$iPar}' begin='{$value["begin"]}' end='{$value["end"]}' >".$pali_sent."</sent>";
  674. echo "</div>";
  675. echo "<div id='sent-wbwdiv-b$book-$iPar-{$value["begin"]}' class='par_translate_div'>";
  676. echo "</div>";
  677. echo "<div id='sent-translate-b$book-$iPar-{$value["begin"]}' class='par_translate_div'>";
  678. echo "</div>";
  679. }
  680. echo "</div>";
  681. }
  682. }
  683. else{
  684. //段落显示
  685. for($iPar=$par_begin;$iPar<=$par_end;$iPar++){
  686. $query = "select text , begin, end from 'pali_sent' where book='$book' and paragraph='$iPar'";
  687. $FetchSent = PDO_FetchAll($query);
  688. echo "<div id='par-b$book-$iPar' class='par_div'>";
  689. echo "<div id='par-pali-b$book-$iPar' class='par_pali_div'>";
  690. echo "<para book='$book' para='$iPar'>$iPar</para>";
  691. foreach ($FetchSent as $key => $value) {
  692. $sent_text = str_replace("{","<b>",$value["text"]) ;
  693. $sent_text = str_replace("}","</b>",$sent_text) ;
  694. echo "<sent book='{$book}' para='{$iPar}' begin='{$value["begin"]}' end='{$value["end"]}' >{$sent_text}</sent>";
  695. }
  696. echo "</div>";
  697. echo "<div id='par-wbwdiv-b$book-$iPar' class='par_translate_div'>";
  698. echo "</div>";
  699. echo "<div id='par-translate-b$book-$iPar' class='par_translate_div'>";
  700. echo "</div>";
  701. echo "<div id='par-note-b$book-$iPar' class='par_translate_div'>";
  702. echo "</div>";
  703. echo "</div>";
  704. }
  705. }
  706. if(isset($_GET["sent_mode"])){
  707. }
  708. PDO_Connect("sqlite:"._FILE_DB_SENTENCE_);
  709. $dbh = new PDO("sqlite:"._FILE_DB_PALI_SENTENCE_, "", "");
  710. $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  711. for($iPar=$par_begin;$iPar<=$par_end;$iPar++){
  712. if($_view=="sent"){
  713. $FetchPaliSent = array(array("begin" => $_GET["begin"] , "end" => $_GET["end"]));
  714. }
  715. else{
  716. $query = "select begin, end from 'pali_sent' where book='$book' and paragraph='$iPar'";
  717. $stmt = $dbh->query($query);
  718. $FetchPaliSent = $stmt->fetchAll(PDO::FETCH_ASSOC);
  719. }
  720. foreach ($FetchPaliSent as $key => $value) {
  721. $begin = $value["begin"];
  722. $end = $value["end"];
  723. if($_view=="sent"){
  724. $query="SELECT * FROM \"sentence\" WHERE (book = '{$book}' AND \"paragraph\" = ".$PDO->quote($iPar)." AND begin = '$begin' AND end = '$end' AND length(text)>0 ) order by modify_time DESC";
  725. }
  726. else{
  727. $query = "SELECT * FROM \"sentence\" WHERE book = '{$book}' AND \"paragraph\" = ".$PDO->quote($iPar)." AND begin = '$begin' AND end = '$end' AND length(text)>0 order by modify_time DESC limit 0, 1";
  728. }
  729. $query_count = "SELECT count(book) FROM \"sentence\" WHERE book = '{$book}' AND \"paragraph\" = ".$PDO->quote($iPar)." AND begin = '$begin' AND end = '$end' AND length(text)>0 ";
  730. $sent_count = PDO_FetchOne($query_count);
  731. if($sent_count>9){
  732. $sent_count = "9+";
  733. }
  734. $FetchText = PDO_FetchAll($query);
  735. $iFetchText=count($FetchText);
  736. if($iFetchText>0){
  737. for($i=0;$i<$iFetchText;$i++){
  738. $currParNo=$iPar;
  739. if($_display=="sent"){
  740. $sent_style = "display:block";
  741. }
  742. else{
  743. $sent_style = "";
  744. }
  745. $tran_text = str_replace("[[","<term status='0'>",$FetchText[$i]["text"]);
  746. $tran_text = str_replace("]]","</term>",$tran_text);
  747. echo "<sent_trans style='{$sent_style}' id='sent-tran-b{$book}-{$currParNo}-{$FetchText[$i]["begin"]}-{$i}' class='sent_trans ' book='$book' para='$currParNo' begin='{$FetchText[$i]["begin"]}'>".$tran_text;
  748. if($_view!="sent" && $_display=="sent"){
  749. echo "<span class='sent_count'>$sent_count</span>";
  750. }
  751. echo "</sent_trans>";
  752. echo "<script>";
  753. if($_display=="sent"){
  754. echo "document.getElementById('sent-translate-b{$book}-{$currParNo}-{$FetchText[$i]["begin"]}').appendChild(document.getElementById('sent-tran-b{$book}-{$currParNo}-{$FetchText[$i]["begin"]}-{$i}'));";
  755. }
  756. else{
  757. echo "document.getElementById('par-translate-b{$book}-{$currParNo}').appendChild(document.getElementById('sent-tran-b{$book}-{$currParNo}-{$FetchText[$i]["begin"]}-{$i}'));";
  758. }
  759. echo "</script>";
  760. }
  761. }
  762. }
  763. }
  764. //查询句子译文内容
  765. //查询句子译文内容结束
  766. echo "<div id='para_nav'>";
  767. echo "<div style='display:inline-flex;'>";
  768. echo "<svg t='1598094361320' class='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='4933' width='32' height='32'><path d='M698.75712 684.4416a81.92 81.92 0 0 1-124.88704 106.06592l-191.488-225.4848a81.89952 81.89952 0 0 1 0-106.06592l191.488-225.4848a81.92 81.92 0 0 1 124.88704 106.06592l-146.45248 172.46208 146.45248 172.4416z' p-id='4934' fill='#757AF7'></path></svg>";
  769. echo "$prev_para_link</div>";
  770. echo "<div style='display:inline-flex;'>$next_para_link";
  771. echo "<svg t='1598094021808' class='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='4451' width='32' height='32'><path d='M698.75712 565.02272l-191.488 225.4848a81.73568 81.73568 0 0 1-62.48448 28.89728 81.89952 81.89952 0 0 1-62.40256-134.94272l146.432-172.4416-146.432-172.4416a81.92 81.92 0 0 1 124.88704-106.06592l191.488 225.4848a81.87904 81.87904 0 0 1 0 106.02496z' p-id='4452' fill='#757AF7'></path></svg>";
  772. echo "</div>";
  773. echo "</div>";
  774. if(isset($album)){
  775. /*
  776. //自动逐词译
  777. $db_file = "../appdata/palicanon/templet/p".$book."_tpl.db3";
  778. PDO_Connect("sqlite:$db_file");
  779. for($iPar=$par_begin;$iPar<=$par_end;$iPar++){
  780. $query="SELECT * FROM \"main\" WHERE (\"paragraph\" = ".$PDO->quote($iPar)." ) ";
  781. $Fetch = PDO_FetchAll($query);
  782. $iFetch=count($Fetch);
  783. if($iFetch>0){
  784. echo "<div id='par-wbw-b$book-$iPar' class='wbw_par'>";
  785. for($i=0;$i<$iFetch;$i++){
  786. $type=$Fetch[$i]["type"];
  787. if($type!=".ctl."){
  788. echo "<div class='word'>";
  789. echo "<div class='pali'>".$Fetch[$i]["word"]."</div>";
  790. echo "<div class='mean'>".$Fetch[$i]["mean"]."</div>";
  791. echo "</div>";
  792. }
  793. }
  794. echo "</div>";
  795. echo "<script>";
  796. echo "document.getElementById('par-wbwdiv-b$book-$iPar').appendChild(document.getElementById('par-wbw-b$book-$iPar'));";
  797. echo "</script>";
  798. }
  799. }
  800. ////自动逐词译结束
  801. */
  802. PDO_Connect("sqlite:"._FILE_DB_RESRES_INDEX_);
  803. $query = "select * from 'album' where id='$album'";
  804. $Fetch = PDO_FetchAll($query);
  805. $iFetch=count($Fetch);
  806. if($iFetch>0){
  807. switch($Fetch[0]["type"]){
  808. case 1://巴利原文
  809. break;
  810. case 2://逐词译
  811. $db_file =_DIR_PALICANON_WBW_."/p{$book}_wbw.db3";
  812. PDO_Connect("sqlite:$db_file");
  813. for($iPar=$par_begin;$iPar<=$par_end;$iPar++){
  814. $table="p{$book}_wbw_data";
  815. $query="SELECT * FROM \"{$table}\" WHERE (\"paragraph\" = ".$PDO->quote($iPar)." ) and album_id={$album} ";
  816. $Fetch = PDO_FetchAll($query);
  817. $iFetch=count($Fetch);
  818. if($iFetch>0){
  819. echo "<div id='par-wbw-b$book-$iPar' class='wbw_par'>";
  820. for($i=0;$i<$iFetch;$i++){
  821. $wordtype=$Fetch[$i]["type"];
  822. if($wordtype!=".ctl."){
  823. echo "<div class='word'>";
  824. echo "<div class='pali'>{$Fetch[$i]["word"]}</div>";
  825. echo "<div class='mean'>{$Fetch[$i]["mean"]}</div>";
  826. echo "<div class='case'>{$wordtype}#{$Fetch[$i]["gramma"]}</div>";
  827. echo "</div>";
  828. }
  829. }
  830. echo "</div>";
  831. echo "<script>";
  832. echo "document.getElementById('par-wbwdiv-b$book-$iPar').appendChild(document.getElementById('par-wbw-b$book-$iPar'));";
  833. echo "</script>";
  834. }
  835. }
  836. break;
  837. case 3:
  838. //译文
  839. $tocHtml="";
  840. //打开翻译数据文件
  841. $db_file =_DIR_PALICANON_TRAN_."/p{$book}_translate.db3";
  842. PDO_Connect("sqlite:{$db_file}");
  843. $this_album_id=$album;
  844. $table="p{$book}_translate_info";
  845. if($par_begin==-1){
  846. //全文
  847. $query="SELECT * FROM '{$table}' WHERE album_id=$this_album_id ";
  848. }
  849. else{
  850. //部分段落
  851. $query="SELECT * FROM '{$table}' WHERE (\"paragraph\" BETWEEN ".$PDO->quote($par_begin)." AND ".$PDO->quote($par_end).") and album_id=$this_album_id ";
  852. }
  853. //查询翻译经文内容
  854. $FetchText = PDO_FetchAll($query);
  855. $iFetchText=count($FetchText);
  856. if($iFetchText>0){
  857. for($i=0;$i<$iFetchText;$i++){
  858. $currParNo=$FetchText[$i]["paragraph"];
  859. //查另一个表,获取段落文本。一句一条记录。有些是一段一条记录
  860. $table_data="p{$book}_translate_data";
  861. $query="SELECT * FROM '{$table_data}' WHERE info_id={$FetchText[$i]["id"]}";
  862. $aParaText = PDO_FetchAll($query);
  863. $par_text="";
  864. foreach($aParaText as $sent){
  865. $par_text.=$sent["text"];
  866. }
  867. //获取段落文本结束。
  868. $par_text=str_replace("<pb></pb>","<br/><pb></pb>",$par_text);
  869. echo "<div id='par-translate-a$album-b$book-$currParNo' class='translate_text'>";
  870. echo "<a name='par_$currParNo'></a>";
  871. echo "<div id='text-a$album-b$book-$currParNo' class='text_level_".$par_level["$currParNo"]."' onclick='paragraph_click($album,$book,$currParNo)'>".$par_text."</div>";
  872. echo "<div id='comm-a$album-b$book-$currParNo' class='comments'>";
  873. echo "<div id='new-comm-a$album-b$book-$currParNo' class='new_comments'></div>";
  874. echo "</div>";
  875. echo "</div>";
  876. echo "<script>";
  877. echo "add_new_res($album,$book,$currParNo,'$par_text');";
  878. echo "document.getElementById('par-translate-b$book-$currParNo').appendChild(document.getElementById('par-translate-a$album-b$book-$currParNo'));";
  879. echo "</script>";
  880. //目录字符串
  881. $tocLevel=$par_level["$currParNo"]+1-1;
  882. if($tocLevel>0 && $tocLevel<8){
  883. $tocHtml.="<div class='toc_item level_$tocLevel'><a href='#par_$currParNo'>{$par_text}</a></div>";
  884. }
  885. }
  886. //设置标题栏的经文名称
  887. echo "<script>";
  888. echo "document.getElementById('tool_bar_title').innerHTML='".$FetchText[0]["title"]."'";
  889. echo "</script>";
  890. }
  891. break;
  892. case 4:
  893. break;
  894. case 5:
  895. break;
  896. case 6:
  897. break;
  898. case 7:
  899. break;
  900. }
  901. }
  902. //添加注解
  903. PDO_Connect("sqlite:"._FILE_DB_COMMENTS_);
  904. if($par_begin==-1){
  905. $query="SELECT * FROM \"comments\" WHERE album='$album' order by id DESC";
  906. }
  907. else{
  908. $query="SELECT * FROM \"comments\" WHERE album='$album' AND (\"paragraph\" BETWEEN ".$PDO->quote($par_begin)." AND ".$PDO->quote($par_end).") order by id DESC ";
  909. }
  910. //查询注解内容
  911. $FetchText = PDO_FetchAll($query);
  912. $iFetchText=count($FetchText);
  913. if($iFetchText>0){
  914. for($i=0;$i<$iFetchText;$i++){
  915. $currParNo=$FetchText[$i]["paragraph"];
  916. $comm_id=$FetchText[$i]["id"];
  917. echo "<div id='comm-id-".$comm_id."' class='comments_text_div'><div class='comments_text'>".$FetchText[$i]["text"]."</div><div><button>赞</button>".$FetchText[$i]["reputable"]."</div></div>";
  918. echo "<script>";
  919. echo "document.getElementById('comm-a$album-b$book-$currParNo').appendChild(document.getElementById('comm-id-".$comm_id."'));";
  920. echo "</script>";
  921. }
  922. }
  923. if($par_next!=-1){
  924. echo "<a href='reader.php?book=$book&album=$album&paragraph=$par_next'>Next</a>";
  925. }
  926. }
  927. ?>
  928. </div><!--main_text_view end-->
  929. <div id="new_comm_shell" style="display:none;">
  930. <div id="new_comm_div">
  931. <textarea id="new_comm_text"></textarea>
  932. <button onclick="new_comm_submit()">提交</button><button onclick="new_comm_cancel()">取消</button>
  933. </div>
  934. </div>
  935. <div id="dighest_edit_div" class="full_screen_window">
  936. <div class="win_caption">
  937. <div><button onclick="dighest_edit_cancle()">取消</button></div>
  938. <div><button onclick="dighest_edit_submit()">提交</button></div>
  939. </div>
  940. <div id="dighest_edit_body" class="win_body">
  941. <div>
  942. 标题:<input id="dighest_edit_title" />
  943. </div>
  944. <div>
  945. 简介:<textarea id="dighest_edit_summary"></textarea>
  946. </div>
  947. <div>
  948. 标签:<input id="dighest_edit_taget" />
  949. </div>
  950. <div id="dighest_text_preview">
  951. </div>
  952. </div>
  953. </div>
  954. <!-- 全屏 黑色背景 -->
  955. <div id="BV" class="blackscreen" onclick="setNaviVisibility()"></div>
  956. <!-- nav begin-->
  957. <div id="leftmenuinner" class="viewswitch_off">
  958. <div class="win_caption">
  959. <div><button id="left_menu_hide" onclick="setNaviVisibility()">返回</button></div>
  960. <div id="menubartoolbar_New">
  961. <ul class="common-tab">
  962. <li id="content_menu_li" class="common-tab_li_act" onclick="menuSelected_2(menu_toc,'content_menu_li')">目录</li>
  963. <li id="palicanon_menu_li" class="common-tab_li" onclick="menuSelected_2(menu_pali_cannon,'palicanon_menu_li')">批注</li>
  964. <li id="bookmark_menu_li" class="common-tab_li" onclick="menuSelected_2(menu_bookmark,'bookmark_menu_li')">书签</li>
  965. </ul>
  966. </div>
  967. </div>
  968. <div class='toc' id='leftmenuinnerinner'>
  969. <!-- toc begin -->
  970. <div class="menu" id="menu_toc">
  971. <a name="_Content" ></a>
  972. <select name="menu" onchange="show_toc_level(this)" style="display:none;">
  973. <option value="1">1</option>
  974. <option value="2">2</option>
  975. <option value="3">3</option>
  976. <option value="4">4</option>
  977. <option value="5">5</option>
  978. <option value="6">6</option>
  979. <option value="7">7</option>
  980. </select>
  981. <div id="toc_content"><?php echo $tocHtml; ?></div>
  982. </div>
  983. <!-- toc end -->
  984. <!-- comments begin -->
  985. <div class="menu" id="menu_comments">
  986. <div id="navi_comments_inner"></div>
  987. </div>
  988. <!-- comments end -->
  989. <!-- book mark begin -->
  990. <div class="menu" id="menu_bookmark" style="display:none;">
  991. <div>
  992. <input id="B_Bookmark_All" onclick="setBookmarkVisibility('all')" type="checkbox" style="width: 20px; height: 20px" />
  993. <input id="B_Bookmark_A" onclick="setBookmarkVisibility('bma','B_Bookmark_A')" type="checkbox" style="width: 20px; height: 20px" /><span class="bookmarkcolora , bookmarkcolorblock" >a</span>
  994. <input id="B_Bookmark_X" onclick="setBookmarkVisibility('bmx','B_Bookmark_X')" type="checkbox" style="width: 20px; height: 20px" checked /><span class="bookmarkcolorx , bookmarkcolorblock" >?</span>
  995. <input id="B_Bookmark_1" onclick="setBookmarkVisibility('bm1','B_Bookmark_1')" type="checkbox" style="width: 20px; height: 20px" checked /><span class="bookmarkcolor1 , bookmarkcolorblock" >1</span>
  996. <input id="B_Bookmark_2" onclick="setBookmarkVisibility('bm2','B_Bookmark_2')" type="checkbox" style="width: 20px; height: 20px" checked /><span class="bookmarkcolor2 , bookmarkcolorblock" >2</span>
  997. <input id="B_Bookmark_3" onclick="setBookmarkVisibility('bm3','B_Bookmark_3')" type="checkbox" style="width: 20px; height: 20px" checked /><span class="bookmarkcolor3 , bookmarkcolorblock" >3</span>
  998. <input id="B_Bookmark_4" onclick="setBookmarkVisibility('bm4','B_Bookmark_4')" type="checkbox" style="width: 20px; height: 20px" checked /><span class="bookmarkcolor4 , bookmarkcolorblock" >4</span>
  999. <input id="B_Bookmark_5" onclick="setBookmarkVisibility('bm5','B_Bookmark_5')" type="checkbox" style="width: 20px; height: 20px" checked /><span class="bookmarkcolor5 , bookmarkcolorblock" >5</span>
  1000. <input id="B_Bookmark_0" onclick="setBookmarkVisibility('bm0','B_Bookmark_0')" type="checkbox" style="width: 20px; height: 20px" checked /><span class="bookmarkcolor0 , bookmarkcolorblock" >0</span>
  1001. </div>
  1002. <div id="navi_bookmark_inner"></div>
  1003. </div>
  1004. <!-- book mark end -->
  1005. </div>
  1006. </div>
  1007. <!-- nav end -->
  1008. <div id="mean_menu" ></div>
  1009. <script>
  1010. //lookup();
  1011. $(".pali").mouseover(function(e){
  1012. var targ
  1013. if (!e) var e = window.event;
  1014. if (e.target) targ = e.target;
  1015. else if (e.srcElement) targ = e.srcElement;
  1016. if (targ.nodeType == 3) // defeat Safari bug
  1017. targ = targ.parentNode;
  1018. var pali_word;
  1019. pali_word=targ.innerHTML;
  1020. objCurrMouseOverPaliMean=targ.nextSibling;
  1021. $("#tool_bar_title").html(pali_word);
  1022. $("#mean_menu").html(getWordMeanMenu(pali_word));
  1023. targ.parentNode.appendChild(document.getElementById("mean_menu"));
  1024. });
  1025. $("sent").click(function(e){
  1026. let book = $(this).attr("book");
  1027. let para = $(this).attr("para");
  1028. let begin = $(this).attr("begin");
  1029. let end = $(this).attr("end");
  1030. window.location.assign("reader.php?view=sent&book="+book+"&para="+para+"&begin="+begin+"&end="+end);
  1031. });
  1032. $("sent").mouseenter(function(e){
  1033. let book = $(this).attr("book");
  1034. let para = $(this).attr("para");
  1035. let begin = $(this).attr("begin");
  1036. $(this).css("background-color","#fefec1");
  1037. $("sent_trans[book='"+book+"'][para='"+para+"'][begin='"+begin+"']").css("background-color","#fefec1");
  1038. });
  1039. $("sent").mouseleave(function(e){
  1040. let book = $(this).attr("book");
  1041. let para = $(this).attr("para");
  1042. let begin = $(this).attr("begin");
  1043. $(this).css("background-color","unset");
  1044. $("sent_trans[book='"+book+"'][para='"+para+"'][begin='"+begin+"']").css("background-color","unset");
  1045. });
  1046. $("para").mouseenter(function(e){
  1047. let book = $(this).attr("book");
  1048. let para = $(this).attr("para");
  1049. $("sent[book='"+book+"'][para='"+para+"']").css("background-color","#fefec1");
  1050. });
  1051. $("para").mouseleave(function(e){
  1052. let book = $(this).attr("book");
  1053. let para = $(this).attr("para");
  1054. $("sent[book='"+book+"'][para='"+para+"']").css("background-color","unset");
  1055. });
  1056. $("sent_trans").mouseenter(function(e){
  1057. let book = $(this).attr("book");
  1058. let para = $(this).attr("para");
  1059. let begin = $(this).attr("begin");
  1060. $(this).css("background-color","#fefec1");
  1061. $("sent[book='"+book+"'][para='"+para+"'][begin='"+begin+"']").css("background-color","#fefec1");
  1062. });
  1063. $("sent_trans").mouseleave(function(e){
  1064. let book = $(this).attr("book");
  1065. let para = $(this).attr("para");
  1066. let begin = $(this).attr("begin");
  1067. $(this).css("background-color","unset");
  1068. $("sent[book='"+book+"'][para='"+para+"'][begin='"+begin+"']").css("background-color","unset");
  1069. });
  1070. $("para").click(function(e){
  1071. let book = $(this).attr("book");
  1072. let para = $(this).attr("para");
  1073. window.location.assign("reader.php?view=para&book="+book+"&para="+para);
  1074. });
  1075. term_updata_translation();
  1076. var wordlist = new Array();
  1077. $("term").each(function(index,element){
  1078. wordlist.push($(this).attr("pali"));
  1079. }
  1080. );
  1081. function haha(){
  1082. var wordquery ="('" + wordlist.join("','")+"')";
  1083. $.post("../term/term.php",
  1084. {
  1085. op:"extract",
  1086. words:wordquery
  1087. },
  1088. function(data,status){
  1089. if(data.length>0){
  1090. try{
  1091. arrMyTerm = JSON.parse(data);
  1092. term_updata_translation();
  1093. }
  1094. catch(e){
  1095. console.error(e.error+" data:"+data);
  1096. }
  1097. }
  1098. });
  1099. }
  1100. </script>
  1101. </body>
  1102. </html>