reader_old.php 25 KB

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