reader_old.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815
  1. <?php
  2. require_once "../public/_pdo.php";
  3. require_once "../config.php";
  4. if (isset($_GET["album"])) {
  5. $album = $_GET["album"];
  6. }
  7. if (isset($_GET["book"])) {
  8. $book = $_GET["book"];
  9. } else {
  10. echo "no book id";
  11. exit;
  12. }
  13. if (substr($book, 0, 1) == 'p') {
  14. $book = substr($book, 1);
  15. }
  16. if (isset($_GET["paragraph"])) {
  17. $paragraph = $_GET["paragraph"];
  18. } else {
  19. $paragraph = -1;
  20. }
  21. ?>
  22. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  23. <html>
  24. <head>
  25. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  26. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  27. <link type="text/css" rel="stylesheet" href="css/reader.css"/>
  28. <title>PCD Reader</title>
  29. <style>
  30. .word{
  31. display:inline-block;
  32. padding: 1px 3px;
  33. }
  34. .mean{
  35. font-size: 65%;
  36. }
  37. /* 下拉内容 (默认隐藏) */
  38. #mean_menu {
  39. margin: 0.3em;
  40. position: absolute;
  41. background-color: white;
  42. min-width: 8em;
  43. max-width: 30em;
  44. margin: -1px 0px;
  45. box-shadow: 0px 3px 13px 0px black;
  46. color: var(--main-color);
  47. z-index: 200;
  48. }
  49. /* 下拉菜单的链接 */
  50. #mean_menu a {
  51. /*padding: 0.3em 0.4em;*/
  52. line-height: 160%;
  53. text-decoration: none;
  54. display: block;
  55. cursor: pointer;
  56. text-align: left;
  57. font-size:80%;
  58. }
  59. /* 鼠标移上去后修改下拉菜单链接颜色 */
  60. .mean_menu a:hover {
  61. background-color: blue;
  62. color: white;
  63. }
  64. </style>
  65. <script src="js/jquery-3.3.1.min.js"></script>
  66. <script src="js/fixedsticky.js"></script>
  67. <script src="js/reader.js"></script>
  68. <script src="../appdata/dict/3rd/bh.js"></script>
  69. <script src="../appdata/dict/system/sys_regular.js"></script>
  70. <script>
  71. var curr_tool="";
  72. var dighest_count=0;//书摘段落数量
  73. var res_list=new Array();
  74. var new_comments_album=-1;
  75. var new_comments_book=-1;
  76. var new_comments_paragraph=-1;
  77. function add_new_res(album,book,paragraph,text){
  78. var new_res=new Object();
  79. new_res.album=album;
  80. new_res.book=book;
  81. new_res.paragraph=paragraph;
  82. new_res.dighest=false;
  83. new_res.text=text;
  84. new_res.textchanged=false;
  85. res_list.push(new_res);
  86. }
  87. function tool_changed(tool_name){
  88. if(tool_name==curr_tool){
  89. return;
  90. }
  91. $("#main_tool_bar").fadeOut();
  92. curr_tool=tool_name;
  93. switch(tool_name){
  94. case "comments":
  95. $("#tool_bar_dighest").fadeOut();
  96. $("#tool_bar_comments").fadeIn();
  97. break;
  98. case "dighest":
  99. $("#tool_bar_comments").fadeOut();
  100. $("#tool_bar_dighest").fadeIn();
  101. break;
  102. case "fix":
  103. $("#tool_bar_comments").fadeOut();
  104. $("#tool_bar_fix").fadeIn();
  105. render_all_tran();
  106. break;
  107. }
  108. }
  109. function paragraph_click(album,book,paragraph){
  110. switch(curr_tool){
  111. case "comments":
  112. new_comments(album,book,paragraph);
  113. break;
  114. case "dighest":
  115. dighest_par_click(album,book,paragraph);
  116. break;
  117. }
  118. }
  119. function new_comments(album,book,paragraph){
  120. new_comments_album=album;
  121. new_comments_book=book;
  122. new_comments_paragraph=paragraph;
  123. document.getElementById("new-comm-a"+album+"-b"+book+"-"+paragraph).appendChild(document.getElementById("new_comm_div"));
  124. }
  125. function new_comm_cancel(){
  126. $("#tool_bar_comments").fadeOut();
  127. $("#main_tool_bar").fadeIn();
  128. document.getElementById("new_comm_text").value="";
  129. document.getElementById("new_comm_shell").appendChild(document.getElementById("new_comm_div"));
  130. curr_tool="";
  131. }
  132. function new_comm_submit(){
  133. $("#tool_bar_comments").fadeOut();
  134. $("#main_tool_bar").fadeIn();
  135. curr_tool="";
  136. var comm_text=document.getElementById("new_comm_text").value;
  137. $.post("comments.php",
  138. {
  139. album:new_comments_album,
  140. book:new_comments_book,
  141. paragraph:new_comments_paragraph,
  142. text:comm_text
  143. },
  144. function(data,status){
  145. alert("Data: " + data + "\nStatus: " + status);
  146. });
  147. }
  148. //书摘处理
  149. function dighest_par_click(album,book,paragraph){
  150. for (var x in res_list){
  151. if(
  152. res_list[x].album==album &&
  153. res_list[x].book==book &&
  154. res_list[x].paragraph==paragraph){
  155. if(res_list[x].dighest==false){
  156. res_list[x].dighest=true;
  157. res_list[x].text=document.getElementById("text-a"+album+"-b"+book+"-"+paragraph).innerHTML;
  158. $("#text-a"+album+"-b"+book+"-"+paragraph).css("background-color","yellow");
  159. dighest_count++;
  160. }
  161. else{
  162. res_list[x].dighest=false;
  163. $("#text-a"+album+"-b"+book+"-"+paragraph).css("background-color","white");
  164. dighest_count--;
  165. }
  166. }
  167. }
  168. $("#dighest_message").text="已经选择"+dighest_count+"段";
  169. }
  170. //将段落列表重置
  171. function dighest_reset_res_list(){
  172. for (var x in res_list){
  173. var album=res_list[x].album;
  174. var book=res_list[x].book;
  175. var paragraph=res_list[x].paragraph;
  176. if(res_list[x].dighest==false){
  177. dighest_count=0;
  178. }
  179. else{
  180. res_list[x].dighest=false;
  181. $("#text-a"+album+"-b"+book+"-"+paragraph).css("background-color","white");
  182. dighest_count=0;
  183. }
  184. }
  185. }
  186. function dighest_cancle(){
  187. $("#tool_bar_dighest").fadeOut();
  188. $("#main_tool_bar").fadeIn();
  189. curr_tool="";
  190. //将段落列表重置
  191. dighest_reset_res_list();
  192. }
  193. function dighest_ok(){
  194. var output="";
  195. for (var x in res_list){
  196. if(res_list[x].dighest==true){
  197. output+="<p>"+res_list[x].text+"</p>";
  198. }
  199. }
  200. //书摘文字预览
  201. document.getElementById("dighest_text_preview").innerHTML=output;
  202. $("#tool_bar_dighest").fadeOut();
  203. $("#dighest_edit_div").fadeIn();
  204. }
  205. function dighest_edit_cancle(){
  206. $("#dighest_edit_div").fadeOut();
  207. $("#main_tool_bar").fadeIn();
  208. curr_tool="";
  209. //将段落列表重置
  210. dighest_reset_res_list();
  211. }
  212. function dighest_edit_submit(){
  213. $("#dighest_edit_div").fadeOut();
  214. $("#main_tool_bar").fadeIn();
  215. curr_tool="";
  216. //计算书摘数量 生成书摘字符串
  217. if(res_list.length==0){
  218. return;
  219. }
  220. var output=new Array();
  221. for (var x in res_list){
  222. if(res_list[x].dighest==true){
  223. output.push(res_list[x].album+"-"+res_list[x].book+"-"+res_list[x].paragraph);
  224. }
  225. }
  226. var dighest_text=output.join();
  227. var dighest_title=document.getElementById("dighest_edit_title").value;
  228. var dighest_summary=document.getElementById("dighest_edit_summary").value;
  229. var dighest_tag=document.getElementById("dighest_edit_taget").value;
  230. if(dighest_title==""){alert("标题不能为空");return;}
  231. if(dighest_summary==""){alert("简介不能为空");return;}
  232. if(dighest_tag==""){alert("标签不能为空");return;}
  233. $.post("dighest.php",
  234. {
  235. title:dighest_title,
  236. summary:dighest_summary,
  237. tag:dighest_tag,
  238. data:dighest_text
  239. },
  240. function(data,status){
  241. alert("Data: " + data + "\nStatus: " + status);
  242. });
  243. //将段落列表重置
  244. dighest_reset_res_list();
  245. }
  246. function setNaviVisibility(){
  247. var objNave = document.getElementById('leftmenuinner');
  248. var objblack = document.getElementById('BV');
  249. if ( objNave.className=='viewswitch_off'){
  250. objblack.style.display = "block";
  251. objNave.className = "viewswitch_on";
  252. }
  253. else{
  254. objblack.style.display = "none";
  255. objNave.className = "viewswitch_off";
  256. }
  257. }
  258. function render_all_tran(mode="fix"){
  259. for (var x in res_list){
  260. var album=res_list[x].album;
  261. var book=res_list[x].book;
  262. var paragraph=res_list[x].paragraph;
  263. var text=res_list[x].text;
  264. if(mode=="fix"){
  265. var new_text=getSuperTranslateModifyString(x);
  266. }
  267. else{
  268. var new_text=text;
  269. }
  270. var obj=document.getElementById("text-a"+album+"-b"+book+"-"+paragraph);
  271. if(obj){
  272. obj.innerHTML=new_text;
  273. }
  274. }
  275. }
  276. function getSuperTranslateModifyString(index){
  277. var newString = res_list[index].text.replace(/。/g,"。#");
  278. newString = newString.replace(/,/g,",#");
  279. newString = newString.replace(/!/g,"!#");
  280. newString = newString.replace(/?/g,"?#");
  281. newString = newString.replace(/”/g,"”#");
  282. newString = newString.replace(/“/g,"“#");
  283. newString = newString.replace(/’/g,"’#");
  284. arrString = newString.split("#");
  285. var output="";
  286. var str_pos=0;
  287. for (x in arrString){
  288. var str_len=arrString[x].length;
  289. str_pos+=str_len;
  290. 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> ";
  291. }
  292. return output;
  293. }
  294. function text_move(index,str_pos,updown){
  295. if(updown==0 && index==0){
  296. return;
  297. }
  298. if(updown==1 && index==res_list.length-1){
  299. return;
  300. }
  301. if(updown==0){
  302. res_list[index-1].text+=res_list[index].text.substring(0,str_pos);
  303. res_list[index-1].textchanged=true;
  304. res_list[index].text=res_list[index].text.substring(str_pos);
  305. res_list[index].textchanged=true;
  306. }
  307. else{
  308. res_list[index+1].text=res_list[index].text.substring(str_pos)+res_list[index+1].text;
  309. res_list[index+1].textchanged=true;
  310. res_list[index].text=res_list[index].text.substring(0,str_pos);
  311. res_list[index].textchanged=true;
  312. }
  313. render_all_tran();
  314. }
  315. function fix_cancle(){
  316. $("#tool_bar_fix").fadeOut();
  317. $("#main_tool_bar").fadeIn();
  318. curr_tool="";
  319. render_all_tran("");
  320. }
  321. function fix_ok(){
  322. $("#tool_bar_fix").fadeOut();
  323. $("#main_tool_bar").fadeIn();
  324. curr_tool="";
  325. render_all_tran("");
  326. //计算书摘数量 生成书摘字符串
  327. if(res_list.length==0){
  328. return;
  329. }
  330. var output=new Array();
  331. for (var x in res_list){
  332. if(res_list[x].textchanged==true){
  333. output.push(res_list[x].album+"@"+res_list[x].book+"@"+res_list[x].paragraph+"@"+res_list[x].text);
  334. res_list[x].textchanged=false;
  335. }
  336. }
  337. var fix_text=output.join("#");
  338. var fix_album=res_list[0].album;
  339. $.post("tran_text.php",
  340. {
  341. album:fix_album,
  342. data:fix_text
  343. },
  344. function(data,status){
  345. alert("Data: " + data + "\nStatus: " + status);
  346. });
  347. }
  348. function lookup(){
  349. var xPali=document.getElementsByClassName("pali");
  350. for (var x in xPali){
  351. var pali = xPali[x].innerHTML;
  352. var xMean=xPali[x].nextSibling;
  353. if(bh[pali]){
  354. var arrMean=bh[pali].split("$");
  355. if(arrMean.length>0){
  356. xMean.innerHTML=arrMean[0];
  357. }
  358. }
  359. else if(sys_r[pali]){
  360. var word_parent=sys_r[pali];
  361. if(bh[word_parent]){
  362. var arrMean=bh[word_parent].split("$");
  363. if(arrMean.length>0){
  364. xMean.innerHTML=arrMean[0];
  365. }
  366. }
  367. }
  368. }
  369. }
  370. </script>
  371. <body class="reader_body" onload="">
  372. <!-- tool bar begin-->
  373. <div id="main_tool_bar" class='reader_toolbar'>
  374. <div id="index_nav">
  375. <button onclick="setNaviVisibility()">M</button>
  376. </div>
  377. <div>
  378. <span id="tool_bar_title">Title</span>
  379. </div>
  380. <div>
  381. <a>☆★</a>
  382. <div class="case_dropdown">
  383. <p class="case_dropbtn"><button>A</button></p>
  384. <div class="case_dropdown-content" style="width:25em;">
  385. <div ><button>A+</button><button>A-</button></div>
  386. <div ><button>白</button><button>棕</button><button>夜s</button></div>
  387. </div>
  388. </div>
  389. <div class="case_dropdown">
  390. <p class="case_dropbtn"><button>┇</button></p>
  391. <div class="case_dropdown-content">
  392. <a onclick="tool_changed('dighest')">书摘</a>
  393. <a onclick="tool_changed('comments')">批注</a>
  394. <a onclick="tool_changed('target')">标签</a>
  395. <a onclick="tool_changed('layout')">布局</a>
  396. <a onclick="tool_changed('porpername')">术语</a>
  397. <a onclick="tool_changed('share')">分享</a>
  398. <a onclick="tool_changed('fix')">修改</a>
  399. </div>
  400. </div>
  401. </div>
  402. </div>
  403. <div id="tool_bar_comments">
  404. <div class='reader_toolbar' style="height:auto;">
  405. <div>
  406. </div>
  407. <div>
  408. <span>单击段落文字添加批注</span>
  409. </div>
  410. <div>
  411. </div>
  412. </div>
  413. </div>
  414. <div id="tool_bar_dighest">
  415. <div class='reader_toolbar' style="height:auto;">
  416. <div>
  417. <button onclick="dighest_cancle()">取消</button>
  418. </div>
  419. <div>
  420. <span id="dighest_message">单击文字选择段落</span>
  421. </div>
  422. <div>
  423. <button onclick="dighest_ok()">完成</button>
  424. </div>
  425. </div>
  426. </div>
  427. <div id="tool_bar_fix">
  428. <div class='reader_toolbar' style="height:auto;">
  429. <div>
  430. <button onclick="fix_cancle()">取消</button>
  431. </div>
  432. <div>
  433. <span id="fix_message">单击按钮调整段落</span>
  434. </div>
  435. <div>
  436. <button onclick="fix_ok()">完成</button>
  437. </div>
  438. </div>
  439. </div>
  440. <!--tool bar end -->
  441. <div id="main_text_view" style="padding-bottom: 10em;">
  442. <?php
  443. PDO_Connect( _FILE_DB_RESRES_INDEX_);
  444. if (isset($album)) {
  445. //更新点击
  446. $query = "select * from 'index' where book='$book' and paragraph='$paragraph' and album=$album";
  447. $FetchRes = PDO_FetchAll($query);
  448. if (count($FetchRes) > 0) {
  449. $id = $FetchRes[0]["id"];
  450. $hit = $FetchRes[0]["hit"] + 1;
  451. $query = "UPDATE 'index' SET hit = $hit WHERE id = $id";
  452. $stmt = @PDO_Execute($query);
  453. if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
  454. $error = PDO_ErrorInfo();
  455. print_r($error[2]);
  456. }
  457. }
  458. }
  459. //获取段落信息 如 父段落 下一个段落等
  460. $query = "select * from 'paragraph_info' where book='$book' and paragraph='$paragraph'";
  461. $FetchParInfo = PDO_FetchAll($query);
  462. if (!$FetchParInfo) {
  463. echo "Error:no paragraph info";
  464. }
  465. $par_begin = $paragraph + 1 - 1;
  466. $par_end = $par_begin + $FetchParInfo[0]["length"] - 1;
  467. $par_next = $FetchParInfo[0]["next"];
  468. //生成一个段落空壳 等会儿查询数据,按照不同数据类型填充进去
  469. for ($iPar = $par_begin; $iPar <= $par_end; $iPar++) {
  470. echo "<div id='par-b$book-$iPar' class='par_div'>";
  471. echo "<div id='par-pali-b$book-$iPar' class='par_pali_div'>";
  472. echo "</div>";
  473. echo "<div id='par-wbwdiv-b$book-$iPar' class='par_translate_div'>";
  474. echo "</div>";
  475. echo "<div id='par-translate-b$book-$iPar' class='par_translate_div'>";
  476. echo "</div>";
  477. echo "<div id='par-note-b$book-$iPar' class='par_translate_div'>";
  478. echo "</div>";
  479. echo "</div>";
  480. }
  481. //先查pali text 因为要获取段落标题级别
  482. PDO_Connect(_FILE_DB_PALITEXT_);
  483. if ($par_begin == -1) {
  484. $query = "SELECT * FROM \"pali_text\" WHERE book = '{$book}' ";
  485. } else {
  486. $query = "SELECT * FROM \"pali_text\" WHERE book = '{$book}' and (\"paragraph\" BETWEEN " . $PDO->quote($par_begin) . " AND " . $PDO->quote($par_end) . ") ";
  487. }
  488. //查询pali text内容
  489. $FetchText = PDO_FetchAll($query);
  490. $iFetchText = count($FetchText);
  491. if ($iFetchText > 0) {
  492. for ($i = 0; $i < $iFetchText; $i++) {
  493. $currParNo = $FetchText[$i]["paragraph"];
  494. $currParLevel = $FetchText[$i]["level"];
  495. $par_level["$currParNo"] = $currParLevel;
  496. echo "<div id='par-palitext-b{$book}-{$currParNo}' class='palitext_text'><div class=\"text_level_{$currParLevel}\">" . $FetchText[$i]["text"] . "</div></div>";
  497. echo "<script>";
  498. echo "document.getElementById('par-pali-b{$book}-{$currParNo}').appendChild(document.getElementById('par-palitext-b{$book}-{$currParNo}'));";
  499. echo "</script>";
  500. }
  501. }
  502. //巴利原文加载结束
  503. if (isset($album)) {
  504. /*
  505. //自动逐词译
  506. $db_file = "../appdata/palicanon/templet/p".$book."_tpl.db3";
  507. PDO_Connect("$db_file");
  508. for($iPar=$par_begin;$iPar<=$par_end;$iPar++){
  509. $query="SELECT * FROM \"main\" WHERE (\"paragraph\" = ".$PDO->quote($iPar)." ) ";
  510. $Fetch = PDO_FetchAll($query);
  511. $iFetch=count($Fetch);
  512. if($iFetch>0){
  513. echo "<div id='par-wbw-b$book-$iPar' class='wbw_par'>";
  514. for($i=0;$i<$iFetch;$i++){
  515. $type=$Fetch[$i]["type"];
  516. if($type!=".ctl."){
  517. echo "<div class='word'>";
  518. echo "<div class='pali'>".$Fetch[$i]["word"]."</div>";
  519. echo "<div class='mean'>".$Fetch[$i]["mean"]."</div>";
  520. echo "</div>";
  521. }
  522. }
  523. echo "</div>";
  524. echo "<script>";
  525. echo "document.getElementById('par-wbwdiv-b$book-$iPar').appendChild(document.getElementById('par-wbw-b$book-$iPar'));";
  526. echo "</script>";
  527. }
  528. }
  529. ////自动逐词译结束
  530. */
  531. PDO_Connect(_FILE_DB_RESRES_INDEX_);
  532. $query = "select * from 'album' where id='$album'";
  533. $Fetch = PDO_FetchAll($query);
  534. $iFetch = count($Fetch);
  535. if ($iFetch > 0) {
  536. switch ($Fetch[0]["type"]) {
  537. case 1: //巴利原文
  538. break;
  539. case 2: //逐词译
  540. $db_file = _DIR_PALICANON_WBW_ . "/p{$book}_wbw.db3";
  541. PDO_Connect("sqlite:{$db_file}");
  542. for ($iPar = $par_begin; $iPar <= $par_end; $iPar++) {
  543. $table = "p{$book}_wbw_data";
  544. $query = "SELECT * FROM \"{$table}\" WHERE (\"paragraph\" = " . $PDO->quote($iPar) . " ) and album_id={$album} ";
  545. $Fetch = PDO_FetchAll($query);
  546. $iFetch = count($Fetch);
  547. if ($iFetch > 0) {
  548. echo "<div id='par-wbw-b$book-$iPar' class='wbw_par'>";
  549. for ($i = 0; $i < $iFetch; $i++) {
  550. $wordtype = $Fetch[$i]["type"];
  551. if ($wordtype != ".ctl.") {
  552. echo "<div class='word'>";
  553. echo "<div class='pali'>{$Fetch[$i]["word"]}</div>";
  554. echo "<div class='mean'>{$Fetch[$i]["mean"]}</div>";
  555. echo "<div class='case'>{$wordtype}#{$Fetch[$i]["gramma"]}</div>";
  556. echo "</div>";
  557. }
  558. }
  559. echo "</div>";
  560. echo "<script>";
  561. echo "document.getElementById('par-wbwdiv-b$book-$iPar').appendChild(document.getElementById('par-wbw-b$book-$iPar'));";
  562. echo "</script>";
  563. }
  564. }
  565. break;
  566. case 3:
  567. //译文
  568. $tocHtml = "";
  569. //打开翻译数据文件
  570. $db_file = _DIR_PALICANON_TRAN_ . "/p{$book}_translate.db3";
  571. PDO_Connect("sqlite:{$db_file}");
  572. $this_album_id = $album;
  573. $table = "p{$book}_translate_info";
  574. if ($par_begin == -1) {
  575. //全文
  576. $query = "SELECT * FROM '{$table}' WHERE album_id=$this_album_id ";
  577. } else {
  578. //部分段落
  579. $query = "SELECT * FROM '{$table}' WHERE (\"paragraph\" BETWEEN " . $PDO->quote($par_begin) . " AND " . $PDO->quote($par_end) . ") and album_id=$this_album_id ";
  580. }
  581. //查询翻译经文内容
  582. $FetchText = PDO_FetchAll($query);
  583. $iFetchText = count($FetchText);
  584. if ($iFetchText > 0) {
  585. for ($i = 0; $i < $iFetchText; $i++) {
  586. $currParNo = $FetchText[$i]["paragraph"];
  587. //查另一个表,获取段落文本。一句一条记录。有些是一段一条记录
  588. $table_data = "p{$book}_translate_data";
  589. $query = "SELECT * FROM '{$table_data}' WHERE info_id={$FetchText[$i]["id"]}";
  590. $aParaText = PDO_FetchAll($query);
  591. $par_text = "";
  592. foreach ($aParaText as $sent) {
  593. $par_text .= $sent["text"];
  594. }
  595. //获取段落文本结束。
  596. $par_text = str_replace("<pb></pb>", "<br/><pb></pb>", $par_text);
  597. echo "<div id='par-translate-a$album-b$book-$currParNo' class='translate_text'>";
  598. echo "<a name='par_$currParNo'></a>";
  599. echo "<div id='text-a$album-b$book-$currParNo' class='text_level_" . $par_level["$currParNo"] . "' onclick='paragraph_click($album,$book,$currParNo)'>" . $par_text . "</div>";
  600. echo "<div id='comm-a$album-b$book-$currParNo' class='comments'>";
  601. echo "<div id='new-comm-a$album-b$book-$currParNo' class='new_comments'></div>";
  602. echo "</div>";
  603. echo "</div>";
  604. echo "<script>";
  605. echo "add_new_res($album,$book,$currParNo,'$par_text');";
  606. echo "document.getElementById('par-translate-b$book-$currParNo').appendChild(document.getElementById('par-translate-a$album-b$book-$currParNo'));";
  607. echo "</script>";
  608. //目录字符串
  609. $tocLevel = $par_level["$currParNo"] + 1 - 1;
  610. if ($tocLevel > 0 && $tocLevel < 8) {
  611. $tocHtml .= "<div class='toc_item level_$tocLevel'><a href='#par_$currParNo'>{$par_text}</a></div>";
  612. }
  613. }
  614. //设置标题栏的经文名称
  615. echo "<script>";
  616. echo "document.getElementById('tool_bar_title').innerHTML='" . $FetchText[0]["title"] . "'";
  617. echo "</script>";
  618. }
  619. break;
  620. case 4:
  621. break;
  622. case 5:
  623. break;
  624. case 6:
  625. break;
  626. case 7:
  627. break;
  628. }
  629. }
  630. //添加注解
  631. PDO_Connect( _FILE_DB_COMMENTS_);
  632. if ($par_begin == -1) {
  633. $query = "SELECT * FROM \"comments\" WHERE album='$album' order by id DESC";
  634. } else {
  635. $query = "SELECT * FROM \"comments\" WHERE album='$album' AND (\"paragraph\" BETWEEN " . $PDO->quote($par_begin) . " AND " . $PDO->quote($par_end) . ") order by id DESC ";
  636. }
  637. //查询注解内容
  638. $FetchText = PDO_FetchAll($query);
  639. $iFetchText = count($FetchText);
  640. if ($iFetchText > 0) {
  641. for ($i = 0; $i < $iFetchText; $i++) {
  642. $currParNo = $FetchText[$i]["paragraph"];
  643. $comm_id = $FetchText[$i]["id"];
  644. 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>";
  645. echo "<script>";
  646. echo "document.getElementById('comm-a$album-b$book-$currParNo').appendChild(document.getElementById('comm-id-" . $comm_id . "'));";
  647. echo "</script>";
  648. }
  649. }
  650. if ($par_next != -1) {
  651. echo "<a href='reader.php?book=$book&album=$album&paragraph=$par_next'>Next</a>";
  652. }
  653. }
  654. ?>
  655. </div><!--main_text_view end-->
  656. <div id="new_comm_shell" style="display:none;">
  657. <div id="new_comm_div">
  658. <textarea id="new_comm_text"></textarea>
  659. <button onclick="new_comm_submit()">提交</button><button onclick="new_comm_cancel()">取消</button>
  660. </div>
  661. </div>
  662. <div id="dighest_edit_div" class="full_screen_window">
  663. <div class="win_caption">
  664. <div><button onclick="dighest_edit_cancle()">取消</button></div>
  665. <div><button onclick="dighest_edit_submit()">提交</button></div>
  666. </div>
  667. <div id="dighest_edit_body" class="win_body">
  668. <div>
  669. 标题:<input id="dighest_edit_title" />
  670. </div>
  671. <div>
  672. 简介:<textarea id="dighest_edit_summary"></textarea>
  673. </div>
  674. <div>
  675. 标签:<input id="dighest_edit_taget" />
  676. </div>
  677. <div id="dighest_text_preview">
  678. </div>
  679. </div>
  680. </div>
  681. <!-- nav begin-->
  682. <div id="leftmenuinner" class="viewswitch_off">
  683. <div class="win_caption">
  684. <div><button onclick="setNaviVisibility()">返回</button></div>
  685. <div id="menubartoolbar_New">
  686. <ul class="common-tab">
  687. <li id="content_menu_li" class="common-tab_li_act" onclick="menuSelected_2(menu_toc,'content_menu_li')">目录</li>
  688. <li id="palicanon_menu_li" class="common-tab_li" onclick="menuSelected_2(menu_pali_cannon,'palicanon_menu_li')">批注</li>
  689. <li id="bookmark_menu_li" class="common-tab_li" onclick="menuSelected_2(menu_bookmark,'bookmark_menu_li')">书签</li>
  690. </ul>
  691. </div>
  692. </div>
  693. <div class='toc' id='leftmenuinnerinner'>
  694. <!-- toc begin -->
  695. <div class="menu" id="menu_toc">
  696. <a name="_Content" ></a>
  697. <select name="menu" onchange="show_toc_level(this)">
  698. <option value="1">1</option>
  699. <option value="2">2</option>
  700. <option value="3">3</option>
  701. <option value="4">4</option>
  702. <option value="5">5</option>
  703. <option value="6">6</option>
  704. <option value="7">7</option>
  705. </select>
  706. <div class="tocitems" id="content"><?php echo $tocHtml; ?></div>
  707. </div>
  708. <!-- toc end -->
  709. <!-- comments begin -->
  710. <div class="menu" id="menu_comments">
  711. <div id="navi_comments_inner"></div>
  712. </div>
  713. <!-- comments end -->
  714. <!-- book mark begin -->
  715. <div class="menu" id="menu_bookmark" style="display:none;">
  716. <div>
  717. <input id="B_Bookmark_All" onclick="setBookmarkVisibility('all')" type="checkbox" style="width: 20px; height: 20px" />
  718. <input id="B_Bookmark_A" onclick="setBookmarkVisibility('bma','B_Bookmark_A')" type="checkbox" style="width: 20px; height: 20px" /><span class="bookmarkcolora , bookmarkcolorblock" >a</span>
  719. <input id="B_Bookmark_X" onclick="setBookmarkVisibility('bmx','B_Bookmark_X')" type="checkbox" style="width: 20px; height: 20px" checked /><span class="bookmarkcolorx , bookmarkcolorblock" >?</span>
  720. <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>
  721. <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>
  722. <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>
  723. <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>
  724. <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>
  725. <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>
  726. </div>
  727. <div id="navi_bookmark_inner"></div>
  728. </div>
  729. <!-- book mark end -->
  730. </div>
  731. </div>
  732. <!-- nav end -->
  733. <div id="BV" class="blackscreen" onclick="setNaviVisibility()"></div>
  734. <div id="mean_menu" ></div>
  735. <script>
  736. //lookup();
  737. $(".pali").mouseover(function(e){
  738. var targ
  739. if (!e) var e = window.event;
  740. if (e.target) targ = e.target;
  741. else if (e.srcElement) targ = e.srcElement;
  742. if (targ.nodeType == 3) // defeat Safari bug
  743. targ = targ.parentNode;
  744. var pali_word;
  745. pali_word=targ.innerHTML;
  746. objCurrMouseOverPaliMean=targ.nextSibling;
  747. $("#tool_bar_title").html(pali_word);
  748. $("#mean_menu").html(getWordMeanMenu(pali_word));
  749. targ.parentNode.appendChild(document.getElementById("mean_menu"));
  750. });
  751. </script>
  752. </body>
  753. </html>