reader.php 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932
  1. <?php
  2. require_once "../public/_pdo.php";
  3. require_once "../path.php";
  4. require_once '../public/load_lang.php';
  5. require_once '../public/function.php';
  6. ?>
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  8. <html>
  9. <head>
  10. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  11. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  12. <link type="text/css" rel="stylesheet" href="../studio/css/font.css"/>
  13. <link type="text/css" rel="stylesheet" href="css/reader.css"/>
  14. <link type="text/css" rel="stylesheet" href="css/reader_mob.css" media="screen and (max-width:767px)">
  15. <title id="page_title">PCD Reader</title>
  16. <script src="js/jquery-3.3.1.min.js"></script>
  17. <script src="js/fixedsticky.js"></script>
  18. <script src="js/reader.js"></script>
  19. <script src="../public/js/comm.js"></script>
  20. <script src="../term/term.js"></script>
  21. <script src="../term/note.js"></script>
  22. <body class="reader_body" >
  23. <a name="page_head"></a>
  24. <script type="text/javascript">
  25. $(document).ready(function(){
  26. $(".toc_1_title").click(function(){
  27. $(this).parent().siblings().children(".toc_2").hide();
  28. $(this).siblings().slideToggle("200");
  29. });
  30. });
  31. </script>
  32. <style>
  33. #para_nav {
  34. display: flex;
  35. justify-content: space-between;
  36. padding: 5px 1em;
  37. border-top: 1px solid gray;
  38. }
  39. .word{
  40. display:inline-block;
  41. padding: 1px 3px;
  42. }
  43. .mean{
  44. font-size: 65%;
  45. }
  46. /* 下拉内容 (默认隐藏) */
  47. #mean_menu {
  48. margin: 0.3em;
  49. position: absolute;
  50. background-color: white;
  51. min-width: 8em;
  52. max-width: 30em;
  53. margin: -1px 0px;
  54. box-shadow: 0px 3px 13px 0px black;
  55. color: var(--main-color);
  56. z-index: 200;
  57. }
  58. /* 下拉菜单的链接 */
  59. #mean_menu a {
  60. /*padding: 0.3em 0.4em;*/
  61. line-height: 160%;
  62. text-decoration: none;
  63. display: block;
  64. cursor: pointer;
  65. text-align: left;
  66. font-size:80%;
  67. }
  68. /* 鼠标移上去后修改下拉菜单链接颜色 */
  69. .mean_menu a:hover {
  70. background-color: blue;
  71. color: white;
  72. }
  73. .par_pali_div{
  74. margin-top:1em;
  75. }
  76. .par_pali_div{
  77. font-weight:700;
  78. }
  79. sent{
  80. font-weight:500;
  81. font-size:110%;
  82. line-height: 150%;
  83. }
  84. sent:hover{
  85. background-color:#fefec1;
  86. }
  87. para {
  88. color: white;
  89. background-color: #F1CA23;
  90. min-width: 2em;
  91. display: inline-block;
  92. text-align: center;
  93. padding: 3px 6px;
  94. border-radius: 99px;
  95. margin-right: 5px;
  96. cursor:pointer;
  97. font-size:80%;
  98. }
  99. para:hover{
  100. }
  101. .sent_count{
  102. font-size:80%;
  103. color: white;
  104. background-color: #1cb70985;
  105. min-width: 2em;
  106. display: inline-block;
  107. text-align: center;
  108. padding: 2px 0;
  109. border-radius: 99px;
  110. margin-left: 5px;
  111. cursor:pointer;
  112. }
  113. .toc_1{
  114. padding: 5px;
  115. cursor: pointer;
  116. border-left: 2px solid #aaaaaa;
  117. }
  118. .toc_1_title{
  119. font-weight:700;
  120. }
  121. .toc_2{
  122. font-weight:500;
  123. padding-left:1em;
  124. display:none;
  125. }
  126. .curr_chapter{
  127. border-color: #4d4dff;
  128. color: #4d4dff;
  129. }
  130. .toc_curr_chapter2{
  131. display:block;
  132. }
  133. .toc_title2 a{
  134. color:black;
  135. line-height:1.4em;
  136. text-decoration: none;
  137. }
  138. .toc_title2 a:hover{
  139. text-decoration: underline;
  140. }
  141. .curr_chapter_title2 a{
  142. color:#4d4dff;
  143. font-weight:900;
  144. }
  145. #leftmenuinner{
  146. width: 17em;
  147. overflow-y: scroll;
  148. border-right: unset;
  149. }
  150. #leftmenuinnerinner{
  151. }
  152. #leftmenuinnerinner{
  153. margin-left: 2em;
  154. font-size: 0.8em;
  155. border-right: unset;
  156. }
  157. .sent_toc{
  158. font-weight:700;
  159. font-size:120%;
  160. }
  161. </style>
  162. <!-- tool bar begin-->
  163. <div id="main_tool_bar" class='reader_toolbar'>
  164. <div id="index_nav">
  165. <button onclick="setNaviVisibility()">
  166. <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>
  167. </button>
  168. </div>
  169. <div>
  170. <span id="tool_bar_title" style="font-family: 'Noto Serif';"><?php echo $_local->gui->title; ?></span>
  171. </div>
  172. <div style="display: flex;">
  173. <form action="../studio/project.php" method="post" onsubmit="return pali_canon_edit_now(this)" target="_blank" style="display: inline-block;">
  174. <div style="display:none;">
  175. <input type="input" name="op" value="create">
  176. <input type="hidden" name="view" value="<?php echo $_GET["view"]?>" />
  177. <input type="hidden" name="book" value="<?php echo $_GET["book"]?>" />
  178. <input type="hidden" id = "para" name="para" value="" />
  179. <input type="hidden" id = "para_end" name="para_end" value="" />
  180. <input type="hidden" id = "chapter_title" name="chapter_title" value="" />
  181. <textarea id="project_new_res_data" rows="3" cols="18" name="data"></textarea>
  182. </div>
  183. <input type="submit" value="<?php echo $_local->gui->edit_now; ?>">
  184. </form>
  185. <div class="case_dropdown">
  186. <p class="case_dropbtn"><button>
  187. <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>
  188. </button></p>
  189. <div class="case_dropdown-content" style="right: 0;width:10em;">
  190. <div ><button>A+</button><button>A-</button></div>
  191. <div ><button><?php echo $_local->gui->white;?></button><button><?php echo $_local->gui->dawn;//棕?></button><button><?php echo $_local->gui->night;//夜?></button></div>
  192. </div>
  193. </div>
  194. <div class="case_dropdown">
  195. <p class="case_dropbtn"><button>
  196. <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>
  197. </button></p>
  198. <div class="case_dropdown-content" style="right: 2em;min-width:6em;">
  199. <a onclick="tool_changed('dighest')"><?php echo $_local->gui->digest; //书摘?></a>
  200. <a onclick="tool_changed('comments')"><?php echo $_local->gui->comment; //批注?></a>
  201. <a onclick="tool_changed('target')"><?php echo $_local->gui->tag; //标签?></a>
  202. <a onclick="tool_changed('layout')"><?php echo $_local->gui->layout; //布局?></a>
  203. <a onclick="tool_changed('porpername')"><?php echo $_local->gui->dict_terms; //术语?></a>
  204. <a onclick="tool_changed('share')"><?php echo $_local->gui->share; //分享?></a>
  205. <a onclick="tool_changed('fix')"><?php echo $_local->gui->modify; //修改?></a>
  206. </div>
  207. </div>
  208. </div>
  209. </div>
  210. <div id="tool_bar_comments">
  211. <div class='reader_toolbar' style="height:auto;">
  212. <div>
  213. </div>
  214. <div>
  215. <span>单击段落文字添加批注</span>
  216. </div>
  217. <div>
  218. </div>
  219. </div>
  220. </div>
  221. <div id="tool_bar_dighest">
  222. <div class='reader_toolbar' style="height:auto;">
  223. <div>
  224. <button onclick="dighest_cancle()">取消</button>
  225. </div>
  226. <div>
  227. <span id="dighest_message">单击文字选择段落</span>
  228. </div>
  229. <div>
  230. <button onclick="dighest_ok()">完成</button>
  231. </div>
  232. </div>
  233. </div>
  234. <div id="tool_bar_fix">
  235. <div class='reader_toolbar' style="height:auto;">
  236. <div>
  237. <button onclick="fix_cancle()">取消</button>
  238. </div>
  239. <div>
  240. <span id="fix_message">单击按钮调整段落</span>
  241. </div>
  242. <div>
  243. <button onclick="fix_ok()">完成</button>
  244. </div>
  245. </div>
  246. </div>
  247. <!--tool bar end -->
  248. <div id="main_text_view" style="padding-bottom: 10em;">
  249. <?php
  250. $tocHtml="";
  251. if(isset($_GET["album"])){
  252. $album=$_GET["album"];
  253. }
  254. if(isset($_GET["book"])){
  255. $book=$_GET["book"];
  256. }
  257. else{
  258. echo "no book id";
  259. }
  260. if(substr($book,0,1)=='p'){
  261. $book=substr($book,1);
  262. }
  263. if(isset($_GET["paragraph"])){
  264. $paragraph = $_GET["paragraph"];
  265. }
  266. else if(isset($_GET["para"])){
  267. $paragraph = $_GET["para"];
  268. }
  269. else{
  270. $paragraph = -1;
  271. }
  272. if(isset($_GET["view"])){
  273. $_view = $_GET["view"];
  274. }
  275. else{
  276. echo "Error : 未定义必要的参数view";
  277. exit;
  278. }
  279. if(isset($_GET["display"])){
  280. $_display = $_GET["display"];
  281. }
  282. else{
  283. if($_view=="para" || $_view=="sent"){
  284. $_display = "sent";//默认值
  285. }
  286. else{
  287. $_display = "para";
  288. }
  289. }
  290. $tocList = array();
  291. if($_view=="chapter" || $_view=="para" || $_view=="sent" ){
  292. PDO_Connect("sqlite:"._FILE_DB_PALITEXT_);
  293. //生成目录
  294. $htmlToc2 = "<div><a href='#page_head'>页首</a></div>";
  295. //找到该位置对应的书
  296. $query = "select paragraph,level,chapter_len,parent from 'pali_text' where book='$book' and paragraph='$paragraph'";
  297. $FetchParInfo = PDO_FetchAll($query);
  298. $deep = 0;
  299. if(count($FetchParInfo)>0){
  300. $para = $FetchParInfo[0]["paragraph"];
  301. $level = $FetchParInfo[0]["level"];
  302. $chapter_len = $FetchParInfo[0]["chapter_len"];
  303. $parent = $FetchParInfo[0]["parent"];
  304. $currParaBegin = $para;
  305. $currParaEnd = $para + $chapter_len;
  306. $currParaLevel = $level;
  307. $currParaParentLevel = 0;
  308. //循环查找父标题 找到level=1的段落 也就是书名
  309. while($parent>-1){
  310. $query = "select paragraph,level,parent,chapter_len from pali_text where \"book\" = '{$book}' and \"paragraph\" = '{$parent}' limit 0,1";
  311. $FetParent = PDO_FetchAll($query);
  312. if(count($FetParent)>0){
  313. $para = $FetParent[0]["paragraph"];
  314. $level = $FetParent[0]["level"];
  315. $chapter_len = $FetParent[0]["chapter_len"];
  316. $parent = $FetParent[0]["parent"];
  317. if($currParaParentLevel==0){
  318. $currParaParentLevel = $level;
  319. }
  320. }
  321. $deep++;
  322. if($deep>8){
  323. break;
  324. }
  325. }
  326. $paraBegin = $para+1;
  327. $paraEnd = $para+$chapter_len;
  328. $query = "SELECT toc,paragraph,level,chapter_len,parent FROM 'pali_text' WHERE book='$book' AND (paragraph BETWEEN '$paraBegin' AND '$paraEnd') and level<100";
  329. $chapter_toc = PDO_FetchAll($query);
  330. $tocMaxLevel = 0;
  331. $tocMinLevel = 0;
  332. $tocBegin = 0;
  333. $tocEnd = 0;
  334. $toc1Level = 0;
  335. $toc2Level = 0;
  336. echo "<div><div>";
  337. foreach ($chapter_toc as $key => $value) {
  338. $classCurrToc="";
  339. $classCurrToc2 = "";
  340. $classCurrTocTitle2="";
  341. if($paragraph>=$value["paragraph"] && $paragraph<$value["paragraph"]+$value["chapter_len"]){
  342. $classCurrToc = " curr_chapter";
  343. $classCurrToc2 = " toc_curr_chapter2";
  344. $classCurrTocTitle2=" curr_chapter_title2";
  345. }
  346. if($tocBegin==0 || ($tocBegin>0 && $value["paragraph"]>=$tocEnd)){
  347. //开始新的标题1
  348. $tocBegin =$value["paragraph"];
  349. $tocEnd = $tocBegin + $value["chapter_len"];
  350. $toc1Level = $value["level"];
  351. if(isset($chapter_toc[$key+1])){
  352. if($chapter_toc[$key+1]["level"]>$toc1Level){
  353. $toc2Level = $chapter_toc[$key+1]["level"];
  354. }
  355. else{
  356. $tocBegin=0;
  357. }
  358. }
  359. $tocHtml .= "</div></div><div class='toc_1 {$classCurrToc}'>";
  360. $tocHtml .= "<div class='toc_1_title {$classCurrToc}'>{$value["toc"]}</div><div class='toc_2 $classCurrToc2'>";
  361. }
  362. else{
  363. //下一级标题
  364. if($value["level"]==$toc2Level ){
  365. $tocHtml .= "<div class='toc_title2 {$classCurrToc}{$classCurrTocTitle2}'><a href='reader.php?view=chapter&book={$book}&para={$value["paragraph"]}&display={$_display}'>{$value["toc"]}</a></div>";
  366. }
  367. }
  368. /*
  369. if($tocMinLevel==0){
  370. if($value["level"]>$tocMaxLevel){
  371. $tocMinLevel = $value["level"];
  372. $tocHtml .= "<div class='toc_title2 {$classCurrToc}{$classCurrTocTitle2}'><a href='reader.php?view=chapter&book={$book}&para={$value["paragraph"]}&display={$_display}'>{$value["toc"]}</a></div>";
  373. }
  374. else{
  375. $tocHtml .= "</div></div><div class='toc_1 {$classCurrToc}'>";
  376. $tocHtml .= "<div class='toc_1_title {$classCurrToc}'>{$value["toc"]}</div><div class='toc_2 $classCurrToc2'>";
  377. }
  378. }
  379. else{
  380. if($value["level"] == $tocMaxLevel){
  381. $tocHtml .= "</div></div><div class='toc_1 {$classCurrToc}'>";
  382. $tocHtml .= "<div class='toc_1_title {$classCurrToc}'>{$value["toc"]}</div><div class='toc_2 $classCurrToc2' >";
  383. }
  384. else if($value["level"] == $tocMinLevel){
  385. $tocHtml .= "<div class='toc_title2 {$classCurrToc}{$classCurrTocTitle2}'><a href='reader.php?view=chapter&book={$book}&para={$value["paragraph"]}&display={$_display}'>{$value["toc"]}</a></div>";
  386. }
  387. }
  388. */
  389. //右侧目录
  390. if($value["paragraph"]>$currParaBegin && $value["paragraph"]<$currParaEnd){
  391. $tocList[$value["paragraph"]] = $value["level"];
  392. $htmlToc2 .= "<div><a href='#para_{$value["paragraph"]}'>{$value["toc"]}</a></div>";
  393. }
  394. }
  395. echo " </div></div>";
  396. }
  397. $htmlToc2 .= "<div><a href='#nav_foot'>导航</a></div>";
  398. $htmlToc2 .= "<div><a href='#sim_doc'>相关文档</a></div>";
  399. //获取段落信息 如 父段落 下一个段落等
  400. $query = "select * from 'pali_text' where book='$book' and paragraph='$paragraph'";
  401. $FetchParInfo = PDO_FetchAll($query);
  402. if(count($FetchParInfo)==0){
  403. echo "Error:no paragraph info";
  404. echo $query;
  405. }
  406. $currLevel = $FetchParInfo[0]["level"];
  407. $par_begin=$paragraph+1-1;
  408. if($_view=="para"){
  409. $par_end = $par_begin;
  410. }
  411. else{
  412. $par_end=$par_begin+$FetchParInfo[0]["chapter_len"]-1;
  413. }
  414. $par_next=$FetchParInfo[0]["next_chapter"];
  415. $par_prev=$FetchParInfo[0]["prev_chapter"];
  416. $par_parent=$FetchParInfo[0]["parent"];
  417. if($par_parent >= 0){
  418. $query = "select toc from 'pali_text' where book='$book' and paragraph='$par_parent'";
  419. $FetchToc = PDO_FetchAll($query);
  420. if(count($FetchToc)>0){
  421. $_parent_title = $FetchToc[0]["toc"];
  422. }
  423. }
  424. //查询标题
  425. if($_view=="chapter"){
  426. $par_title = $FetchParInfo[0]["toc"];
  427. }
  428. else{
  429. $par_title = $_parent_title;
  430. }
  431. //导航按钮
  432. if($_view=="sent"){
  433. $next_para_link = "";
  434. $prev_para_link = "";
  435. }
  436. else{
  437. if($par_next != -1){
  438. $query = "select paragraph , toc from 'pali_text' where book='$book' and paragraph='$par_next' ";
  439. $FetchPara = PDO_FetchAll($query);
  440. if(count($FetchPara)>0){
  441. $next_para_link = "<a href='reader.php?view={$_view}&book={$book}&para={$par_next}&display={$_display}'><span id='para_nav_next'>{$FetchPara[0]["toc"]}</span><span id='para_nav_next_a'>";
  442. $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>";
  443. $next_para_link .= "</span></a>";
  444. }
  445. else{
  446. $next_para_link = $_local->gui->text_without_title;
  447. }
  448. }
  449. else{
  450. $next_para_link = $_local->gui->end_of_text;
  451. }
  452. if($par_prev != -1){
  453. $query = "select paragraph , toc from 'pali_text' where book='$book' and paragraph='$par_prev' ";
  454. $FetchPara = PDO_FetchAll($query);
  455. if(count($FetchPara)>0){
  456. $prev_para_link = "<a href='reader.php?view={$_view}&book={$book}&para={$par_prev}&display={$_display}'><span id='para_nav_prev_a'>";
  457. $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>";
  458. if($FetchPara[0]["toc"]==""){
  459. $prev_para_link .= "</span><span id='para_nav_prev'>({$_local->gui->text_without_title})</span></a>";
  460. }
  461. else{
  462. $prev_para_link .= "</span><span id='para_nav_prev'>{$FetchPara[0]["toc"]}</span></a>";
  463. }
  464. }
  465. else{
  466. $prev_para_link = $_local->gui->text_without_title;
  467. }
  468. }
  469. else{
  470. $prev_para_link = $_local->gui->begin_of_text;
  471. }
  472. }
  473. //设置标题栏的经文名称
  474. echo "<script>";
  475. echo "document.getElementById('tool_bar_title').innerHTML='".$par_title."';\n";
  476. echo "$('#chapter_title').val('".$par_title."');\n";
  477. echo "$('#para_end').val('".$par_end."');\n";
  478. echo "$('#para').val('".$par_begin."');\n";
  479. echo "</script>";
  480. }
  481. if($currParaLevel==1 || $currParaParentLevel==1){
  482. echo $_local->gui->chapter_select;
  483. }
  484. else{
  485. //上一级
  486. echo "<div>";
  487. switch($_view){
  488. case 1 :
  489. break;
  490. case 2:
  491. break;
  492. case 3:
  493. break;
  494. case 4:
  495. break;
  496. case 5:
  497. break;
  498. case 5:
  499. break;
  500. case 6:
  501. break;
  502. case "chapter":
  503. if($par_parent >= 0 && $currLevel>$tocMinLevel){
  504. echo "<a href='reader.php?view={$_view}&book={$book}&paragraph={$par_parent}'>";
  505. 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>";
  506. echo "{$_parent_title}</a>";
  507. }
  508. break;
  509. case "para":
  510. if($par_parent >= 0){
  511. echo "<a href='reader.php?view=chapter&book={$book}&paragraph={$par_parent}'>";
  512. 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>";
  513. echo "{$_parent_title}</a>";
  514. }
  515. break;
  516. case "sent":
  517. echo "<a href='reader.php?view=para&book={$book}&paragraph={$paragraph}'>";
  518. 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>";
  519. echo "{$paragraph}</a>";
  520. break;
  521. case 10:
  522. break;
  523. }
  524. echo "</div>";
  525. //生成一个段落空壳 等会儿查询数据,按照不同数据类型填充进去
  526. PDO_Connect("sqlite:"._FILE_DB_PALI_SENTENCE_);
  527. if($_display=="sent"){
  528. //逐句显示
  529. for($iPar=$par_begin;$iPar<=$par_end;$iPar++){
  530. if($_view=="sent"){
  531. $query = "select text, begin, end from 'pali_sent' where book='$book' and paragraph='$paragraph' and begin='{$_GET["begin"]}' and end ='{$_GET["end"]}'";
  532. }
  533. else{
  534. $query = "select text, begin, end from 'pali_sent' where book='$book' and paragraph='$iPar'";
  535. }
  536. if(isset($tocList[$iPar])){
  537. $sentClass = " sent_toc";
  538. }
  539. else{
  540. $sentClass = "";
  541. }
  542. $FetchSent = PDO_FetchAll($query);
  543. echo "<div id='par-b$book-$iPar' class='par_div'>";
  544. echo "<para book='$book' para='$iPar'>$iPar</para><a name='para_{$iPar}'></a>";
  545. foreach ($FetchSent as $key => $value) {
  546. echo "<div id='sent-pali-b$book-$iPar-{$value["begin"]}' class='par_pali_div'>";
  547. $pali_sent = str_replace("{","<b>",$value["text"]);
  548. $pali_sent = str_replace("}","</b>",$pali_sent);
  549. echo "<sent class='{$sentClass}' book='{$book}' para='{$iPar}' begin='{$value["begin"]}' end='{$value["end"]}' >".$pali_sent."</sent>";
  550. echo "</div>";
  551. echo "<div id='sent-wbwdiv-b$book-$iPar-{$value["begin"]}' class='par_translate_div'>";
  552. echo "</div>";
  553. echo "<div id='sent-translate-b$book-$iPar-{$value["begin"]}' class='par_translate_div'>";
  554. echo "</div>";
  555. }
  556. echo "</div>";
  557. }
  558. }
  559. else{
  560. //段落显示
  561. for($iPar=$par_begin;$iPar<=$par_end;$iPar++){
  562. if(isset($tocList[$iPar])){
  563. $sentClass = " sent_toc";
  564. }
  565. else{
  566. $sentClass = "";
  567. }
  568. $query = "select text , begin, end from 'pali_sent' where book='$book' and paragraph='$iPar'";
  569. $FetchSent = PDO_FetchAll($query);
  570. echo "<div id='par-b$book-$iPar' class='par_div'>";
  571. echo "<div id='par-pali-b$book-$iPar' class='par_pali_div'>";
  572. echo "<para book='$book' para='$iPar'>$iPar</para><a name='para_{$iPar}'></a>";
  573. foreach ($FetchSent as $key => $value) {
  574. $sent_text = str_replace("{","<b>",$value["text"]) ;
  575. $sent_text = str_replace("}","</b>",$sent_text) ;
  576. echo "<sent class='{$sentClass}' book='{$book}' para='{$iPar}' begin='{$value["begin"]}' end='{$value["end"]}' >{$sent_text}</sent>";
  577. }
  578. echo "</div>";
  579. echo "<div id='par-wbwdiv-b$book-$iPar' class='par_translate_div'>";
  580. echo "</div>";
  581. echo "<div id='par-translate-b$book-$iPar' class='par_translate_div'>";
  582. echo "</div>";
  583. echo "<div id='par-note-b$book-$iPar' class='par_translate_div'>";
  584. echo "</div>";
  585. echo "</div>";
  586. }
  587. }
  588. if(isset($_GET["sent_mode"])){
  589. }
  590. PDO_Connect("sqlite:"._FILE_DB_SENTENCE_);
  591. $dbh = new PDO("sqlite:"._FILE_DB_PALI_SENTENCE_, "", "");
  592. $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  593. for($iPar=$par_begin;$iPar<=$par_end;$iPar++){
  594. if($_view=="sent"){
  595. $FetchPaliSent = array(array("begin" => $_GET["begin"] , "end" => $_GET["end"]));
  596. }
  597. else{
  598. $query = "select begin, end from 'pali_sent' where book='$book' and paragraph='$iPar'";
  599. $stmt = $dbh->query($query);
  600. $FetchPaliSent = $stmt->fetchAll(PDO::FETCH_ASSOC);
  601. }
  602. foreach ($FetchPaliSent as $key => $value) {
  603. $begin = $value["begin"];
  604. $end = $value["end"];
  605. if($_view=="sent"){
  606. $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";
  607. }
  608. else{
  609. $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";
  610. }
  611. $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 ";
  612. $sent_count = PDO_FetchOne($query_count);
  613. if($sent_count>9){
  614. $sent_count = "9+";
  615. }
  616. $FetchText = PDO_FetchAll($query);
  617. $iFetchText=count($FetchText);
  618. if($iFetchText>0){
  619. for($i=0;$i<$iFetchText;$i++){
  620. $currParNo=$iPar;
  621. if($_display=="sent"){
  622. $sent_style = "display:block";
  623. }
  624. else{
  625. $sent_style = "";
  626. }
  627. $tran_text = str_replace("[[","<term status='0'>",$FetchText[$i]["text"]);
  628. $tran_text = str_replace("]]","</term>",$tran_text);
  629. 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;
  630. if($_view!="sent" && $_display=="sent"){
  631. echo "<span class='sent_count'>$sent_count</span>";
  632. }
  633. echo "</sent_trans>";
  634. echo "<script>";
  635. if($_display=="sent"){
  636. echo "document.getElementById('sent-translate-b{$book}-{$currParNo}-{$FetchText[$i]["begin"]}').appendChild(document.getElementById('sent-tran-b{$book}-{$currParNo}-{$FetchText[$i]["begin"]}-{$i}'));";
  637. }
  638. else{
  639. echo "document.getElementById('par-translate-b{$book}-{$currParNo}').appendChild(document.getElementById('sent-tran-b{$book}-{$currParNo}-{$FetchText[$i]["begin"]}-{$i}'));";
  640. }
  641. echo "</script>";
  642. }
  643. }
  644. }
  645. }
  646. //查询句子译文内容
  647. //查询句子译文内容结束
  648. echo "<div id='para_nav'><a name='nav_foot'></a>";
  649. echo "<div style='display:inline-flex;'>";
  650. 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>";
  651. echo "$prev_para_link</div>";
  652. echo "<div style='display:inline-flex;'>$next_para_link";
  653. 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>";
  654. echo "</div>";
  655. echo "</div>";
  656. }
  657. ?>
  658. <div>
  659. <a name="sim_doc"></a>
  660. <div>相关段落</div>
  661. <ul>
  662. <?php
  663. //查找相关标题
  664. if(strtolower(mb_substr($par_title,mb_strlen($par_title,"UTF-8")-7,null,"UTF-8"))=="vaṇṇanā"){
  665. $searchToc = strtolower(mb_substr($par_title,0,-7,"UTF-8"));
  666. }
  667. else{
  668. $searchToc = strtolower(mb_substr($par_title,0,-1,"UTF-8"));
  669. }
  670. PDO_Connect("sqlite:"._FILE_DB_RESRES_INDEX_);
  671. $query = "select book, paragraph,title from 'index' where \"title\" like ".$PDO->quote($searchToc.'%')." limit 0,50";
  672. $Fetch = PDO_FetchAll($query);
  673. foreach ($Fetch as $key => $value) {
  674. echo "<div style='margin-bottom: 0.5em;'>";
  675. echo "<div><a href='reader.php?view=chapter&book={$value["book"]}&para={$value["paragraph"]}' target='_blank'> {$value["title"]} </a></div>";
  676. echo "<div>". _get_para_path($value["book"],$value["paragraph"])."</div>";
  677. echo "</div>";
  678. }
  679. ?>
  680. </ul>
  681. </div>
  682. </div><!--main_text_view end-->
  683. <div id="new_comm_shell" style="display:none;">
  684. <div id="new_comm_div">
  685. <textarea id="new_comm_text"></textarea>
  686. <button onclick="new_comm_submit()">提交</button><button onclick="new_comm_cancel()">取消</button>
  687. </div>
  688. </div>
  689. <div id="dighest_edit_div" class="full_screen_window">
  690. <div class="win_caption">
  691. <div><button onclick="dighest_edit_cancle()">取消</button></div>
  692. <div><button onclick="dighest_edit_submit()">提交</button></div>
  693. </div>
  694. <div id="dighest_edit_body" class="win_body">
  695. <div>
  696. 标题:<input id="dighest_edit_title" />
  697. </div>
  698. <div>
  699. 简介:<textarea id="dighest_edit_summary"></textarea>
  700. </div>
  701. <div>
  702. 标签:<input id="dighest_edit_taget" />
  703. </div>
  704. <div id="dighest_text_preview">
  705. </div>
  706. </div>
  707. </div>
  708. <div id="right_panal_toc" style="position: fixed;top:3em;width:17em;left: calc(100% - 17em);height:auto; min-height:30em;border-left: 1px solid gray; font-size: 80%;padding: 2em 0.5em;">
  709. <?php
  710. if($currLevel>=$tocMinLevel){
  711. echo $htmlToc2;
  712. }
  713. ?>
  714. </div>
  715. </div>
  716. <!-- 全屏 黑色背景 -->
  717. <div id="BV" class="blackscreen" onclick="setNaviVisibility()"></div>
  718. <!-- nav begin-->
  719. <div id="leftmenuinner" class="viewswitch_off">
  720. <div class="win_caption">
  721. <div><button id="left_menu_hide" onclick="setNaviVisibility()">返回</button></div>
  722. <div id="menubartoolbar_New">
  723. <ul class="common-tab">
  724. <li id="content_menu_li" class="common-tab_li_act" onclick="menuSelected_2(menu_toc,'content_menu_li')">目录</li>
  725. <li id="palicanon_menu_li" class="common-tab_li" onclick="menuSelected_2(menu_pali_cannon,'palicanon_menu_li')">批注</li>
  726. <li id="bookmark_menu_li" class="common-tab_li" onclick="menuSelected_2(menu_bookmark,'bookmark_menu_li')">书签</li>
  727. </ul>
  728. </div>
  729. </div>
  730. <div class='toc' id='leftmenuinnerinner' style="font-family: 'Noto Serif';">
  731. <!-- toc begin -->
  732. <div class="menu" id="menu_toc">
  733. <a name="_Content" ></a>
  734. <div id="toc_content"><?php echo $tocHtml; ?></div>
  735. </div>
  736. <!-- toc end -->
  737. <!-- comments begin -->
  738. <div class="menu" id="menu_comments">
  739. <div id="navi_comments_inner"></div>
  740. </div>
  741. <!-- comments end -->
  742. <!-- book mark begin -->
  743. <div class="menu" id="menu_bookmark" style="display:none;">
  744. <div>
  745. <input id="B_Bookmark_All" onclick="setBookmarkVisibility('all')" type="checkbox" style="width: 20px; height: 20px" />
  746. <input id="B_Bookmark_A" onclick="setBookmarkVisibility('bma','B_Bookmark_A')" type="checkbox" style="width: 20px; height: 20px" /><span class="bookmarkcolora , bookmarkcolorblock" >a</span>
  747. <input id="B_Bookmark_X" onclick="setBookmarkVisibility('bmx','B_Bookmark_X')" type="checkbox" style="width: 20px; height: 20px" checked /><span class="bookmarkcolorx , bookmarkcolorblock" >?</span>
  748. <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>
  749. <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>
  750. <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>
  751. <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>
  752. <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>
  753. <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>
  754. </div>
  755. <div id="navi_bookmark_inner"></div>
  756. </div>
  757. <!-- book mark end -->
  758. </div>
  759. </div>
  760. <!-- nav end -->
  761. </div>
  762. <div id="mean_menu" ></div>
  763. <script>
  764. //lookup();
  765. $(".pali").mouseover(function(e){
  766. var targ
  767. if (!e) var e = window.event;
  768. if (e.target) targ = e.target;
  769. else if (e.srcElement) targ = e.srcElement;
  770. if (targ.nodeType == 3) // defeat Safari bug
  771. targ = targ.parentNode;
  772. var pali_word;
  773. pali_word=targ.innerHTML;
  774. objCurrMouseOverPaliMean=targ.nextSibling;
  775. $("#tool_bar_title").html(pali_word);
  776. $("#mean_menu").html(getWordMeanMenu(pali_word));
  777. targ.parentNode.appendChild(document.getElementById("mean_menu"));
  778. });
  779. $("sent").click(function(e){
  780. let book = $(this).attr("book");
  781. let para = $(this).attr("para");
  782. let begin = $(this).attr("begin");
  783. let end = $(this).attr("end");
  784. window.location.assign("reader.php?view=sent&book="+book+"&para="+para+"&begin="+begin+"&end="+end);
  785. });
  786. $("sent").mouseenter(function(e){
  787. let book = $(this).attr("book");
  788. let para = $(this).attr("para");
  789. let begin = $(this).attr("begin");
  790. $(this).css("background-color","#fefec1");
  791. $("sent_trans[book='"+book+"'][para='"+para+"'][begin='"+begin+"']").css("background-color","#fefec1");
  792. });
  793. $("sent").mouseleave(function(e){
  794. let book = $(this).attr("book");
  795. let para = $(this).attr("para");
  796. let begin = $(this).attr("begin");
  797. $(this).css("background-color","unset");
  798. $("sent_trans[book='"+book+"'][para='"+para+"'][begin='"+begin+"']").css("background-color","unset");
  799. });
  800. $("para").mouseenter(function(e){
  801. let book = $(this).attr("book");
  802. let para = $(this).attr("para");
  803. $("sent[book='"+book+"'][para='"+para+"']").css("background-color","#fefec1");
  804. });
  805. $("para").mouseleave(function(e){
  806. let book = $(this).attr("book");
  807. let para = $(this).attr("para");
  808. $("sent[book='"+book+"'][para='"+para+"']").css("background-color","unset");
  809. });
  810. $("sent_trans").mouseenter(function(e){
  811. let book = $(this).attr("book");
  812. let para = $(this).attr("para");
  813. let begin = $(this).attr("begin");
  814. $(this).css("background-color","#fefec1");
  815. $("sent[book='"+book+"'][para='"+para+"'][begin='"+begin+"']").css("background-color","#fefec1");
  816. });
  817. $("sent_trans").mouseleave(function(e){
  818. let book = $(this).attr("book");
  819. let para = $(this).attr("para");
  820. let begin = $(this).attr("begin");
  821. $(this).css("background-color","unset");
  822. $("sent[book='"+book+"'][para='"+para+"'][begin='"+begin+"']").css("background-color","unset");
  823. });
  824. $("para").click(function(e){
  825. let book = $(this).attr("book");
  826. let para = $(this).attr("para");
  827. window.location.assign("reader.php?view=para&book="+book+"&para="+para);
  828. });
  829. term_updata_translation();
  830. var wordlist = new Array();
  831. $("term").each(function(index,element){
  832. wordlist.push($(this).attr("pali"));
  833. }
  834. );
  835. function haha(){
  836. var wordquery ="('" + wordlist.join("','")+"')";
  837. $.post("../term/term.php",
  838. {
  839. op:"extract",
  840. words:wordquery
  841. },
  842. function(data,status){
  843. if(data.length>0){
  844. try{
  845. arrMyTerm = JSON.parse(data);
  846. term_updata_translation();
  847. }
  848. catch(e){
  849. console.error(e.error+" data:"+data);
  850. }
  851. }
  852. });
  853. }
  854. </script>
  855. </body>
  856. </html>