module_function.js 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. 
  2. /*
  3. * Modle Init.
  4. * public
  5. * @param param1 (type)
  6. *
  7. * Example usage:
  8. * @code
  9. * @endcode
  10. */
  11. function editor_layout_init(){
  12. }
  13. function layoutWordHeadCode(showTo,obj){
  14. menu_view_script(showTo,obj.value);
  15. }
  16. function menu_view_script(showto,code){
  17. var xAllWord = gXmlBookDataBody.getElementsByTagName("word");
  18. if(showto==0 && code=="org"){
  19. for(iWord=0;iWord<xAllWord.length;iWord++){
  20. wordId=getNodeText(xAllWord[iWord],"id");
  21. xDiv = document.getElementById("wb"+wordId);
  22. xPali1 = xDiv.getElementsByClassName("paliword1")[0];
  23. xPali1.innerHTML=getNodeText(xAllWord[iWord],"pali");
  24. }
  25. return;
  26. }
  27. if(showto==1){
  28. if(code=="none"){
  29. $(".paliword2").css("display","none");
  30. return;
  31. }
  32. else{
  33. $(".paliword2").css("display","block");
  34. }
  35. }
  36. var xmlHttp=null;
  37. var xmlText="";
  38. var xmlScript=null;
  39. if(window.XMLHttpRequest)
  40. {// code for IE7, Firefox, Opera, etc.
  41. xmlHttp=new XMLHttpRequest();
  42. }
  43. else if(window.ActiveXObject)
  44. {// code for IE6, IE5
  45. xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  46. }
  47. if (xmlHttp!=null)
  48. {
  49. var d=new Date();
  50. var strLink = "spt_get.php?code="+code;
  51. xmlHttp.open("GET", strLink, false);
  52. xmlHttp.send(null);
  53. xmlText=xmlHttp.responseText;
  54. //xmlDict=xmlHttp.responseXML;
  55. }
  56. else
  57. {
  58. alert("Your browser does not support XMLHTTP.");
  59. }
  60. if (window.DOMParser)
  61. {
  62. parser=new DOMParser();
  63. xmlScript=parser.parseFromString(xmlText,"text/xml");
  64. }
  65. else // Internet Explorer
  66. {
  67. xmlScript=new ActiveXObject("Microsoft.XMLDOM");
  68. xmlScript.async="false";
  69. xmlScript.loadXML(xmlText);
  70. }
  71. var arrPaliWords="";
  72. var xScriptWord = xmlScript.getElementsByTagName("word");
  73. var xPaliWords = document.getElementsByClassName("paliword");
  74. for(iWord=0;iWord<xAllWord.length;iWord++){
  75. arrPaliWords = arrPaliWords + "$" + getNodeText(xAllWord[iWord],"real");
  76. }
  77. for(i=0;i<xScriptWord.length;i++){
  78. var src = getNodeText(xScriptWord[i],"src");
  79. var dest = getNodeText(xScriptWord[i],"dest");
  80. eval("arrPaliWords = arrPaliWords.replace(/"+src+"/g, dest);");
  81. }
  82. // document.getElementById("scriptinner").innerHTML=arrPaliWords;
  83. var arrDestWords = arrPaliWords.split("$");
  84. for(iWord=0;iWord<xAllWord.length;iWord++){
  85. wordId=getNodeText(xAllWord[iWord],"id");
  86. xDiv = document.getElementById("wb"+wordId);
  87. if(xDiv){
  88. if(showto==0){
  89. xPali = xDiv.getElementsByClassName("paliword1")[0];
  90. }
  91. else{
  92. xPali = xDiv.getElementsByClassName("paliword2")[0];
  93. }
  94. if(arrDestWords[iWord+1].length>0){
  95. xPali.innerHTML=arrDestWords[iWord+1];
  96. }
  97. else{
  98. xPali.innerHTML=getNodeText(xAllWord[iWord],"pali");
  99. }
  100. }
  101. }
  102. if (xmlScript == null){
  103. alert("error:can not load dict.");
  104. return;
  105. }
  106. }
  107. function editro_layout_loadStyle(){
  108. var strStyle = getNodeText(gXmlBookDataHead,"style");
  109. document.getElementById("id_layout_style").value=strStyle;
  110. document.getElementById("mycss").innerHTML=strStyle;
  111. }
  112. function editor_layout_applyNewStyle(){
  113. var strStyle=document.getElementById("id_layout_style").value;
  114. document.getElementById("mycss").innerHTML=strStyle;
  115. setNodeText(gXmlBookDataHead,"style",strStyle);
  116. }
  117. //自动将逐词译段落切分为句子
  118. function layout_wbw_auto_cut(){
  119. var xBlock=gXmlBookDataBody.getElementsByTagName("block");
  120. for(var iBlock=0;iBlock<xBlock.length;iBlock++){
  121. xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
  122. xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
  123. var mId = getNodeText(xmlParInfo,"id")
  124. var par_num = getNodeText(xmlParInfo,"paragraph");
  125. var type = getNodeText(xmlParInfo,"type");
  126. if(type=="wbw"){
  127. var splited = getNodeText(xmlParInfo,"splited");
  128. if(splited != 1){
  129. var Note_Mark=0;
  130. var sent_gramma_i=0;
  131. var word_length_count=0;
  132. var sent_num=0;
  133. var arr_Para_ID=new Array();
  134. var allWord = xmlParData.getElementsByTagName("word");
  135. for(var iWord=0;iWord<allWord.length;iWord++){
  136. var wID=getNodeText(allWord[iWord],"id");
  137. var wPali=getNodeText(allWord[iWord],"pali");
  138. var wReal=getNodeText(allWord[iWord],"real");
  139. var wType=getNodeText(allWord[iWord],"type");
  140. var wGramma=getNodeText(allWord[iWord],"gramma");
  141. var wCase=getNodeText(allWord[iWord],"case");
  142. var wUn=getNodeText(allWord[iWord],"un");
  143. var wStyle=getNodeText(allWord[iWord],"style");
  144. if((wType=="" || wType=="?") && wCase!=""){
  145. wType=wCase.split("#")[0];
  146. }
  147. word_length_count += wPali.length;
  148. if(iWord>=1){
  149. var pre_pali_spell=getNodeText(allWord[iWord-1],"pali");
  150. var pre_pali_type=getNodeText(allWord[iWord-1],"type")
  151. var pre_pali_Gramma=getNodeText(allWord[iWord-1],"gramma")
  152. var pre_pali_Case=getNodeText(allWord[iWord-1],"case")
  153. if(pre_pali_type=="" && pre_pali_Case!=""){
  154. pre_pali_type=pre_pali_Case.split("#")[0];
  155. }
  156. if(pre_pali_Case!="" && pre_pali_Case.lastIndexOf("$")!=-1){
  157. var pre_case_array=pre_pali_Case.split("$");
  158. pre_pali_Case=pre_case_array[pre_case_array.length-1]
  159. }
  160. }
  161. if((iWord+2)<=allWord.length){
  162. var next_pali_spell=getNodeText(allWord[iWord+1],"pali");
  163. var next_pali_type=getNodeText(allWord[iWord+1],"type")
  164. var next_pali_Gramma=getNodeText(allWord[iWord+1],"gramma")
  165. var next_pali_Case=getNodeText(allWord[iWord+1],"case")
  166. if(next_pali_type=="" && next_pali_Case!=""){
  167. next_pali_type=next_pali_Case.split("#")[0];
  168. }
  169. if(next_pali_Case!="" && next_pali_Case.lastIndexOf("$")!=-1){
  170. var next_case_array=next_pali_Case.split("$");
  171. next_pali_Case=next_case_array[next_case_array.length-1]
  172. }
  173. }
  174. if(next_pali_spell=="("){
  175. Note_Mark=1;
  176. }
  177. else if(pre_pali_spell==")" && Note_Mark==1){
  178. Note_Mark=0;
  179. }
  180. else{
  181. }
  182. var isEndOfSen=false;
  183. if(wPali=="." && iWord>=1 && isNaN(pre_pali_spell) && iWord!=allWord.length-1 && Note_Mark==0){//以.結尾且非註釋
  184. if(next_pali_spell!="("){
  185. isEndOfSen=true;
  186. }
  187. }
  188. /*else if(wPali=="," && iWord>=1 && isNaN(pre_pali_spell) && iWord!=allWord.length-1 && pre_pali_type==".v." && Note_Mark==0){
  189. isEndOfSen=true;
  190. }导致自动匹配前后,句子切分不一致,注释*/
  191. else if(wPali=="–" && allWord.length>=(iWord+2) && next_pali_spell=="‘" && iWord!=allWord.length-1 && Note_Mark==0){
  192. isEndOfSen=true;
  193. }
  194. else if(allWord.length>=(iWord+2) && iWord!=allWord.length-1 && Note_Mark==0){//以!或?或;結尾
  195. if(/*wPali=="!" || */wPali==";" || wPali=="?"){
  196. if(next_pali_spell!="("){
  197. isEndOfSen=true;
  198. }
  199. }
  200. }
  201. if(isEndOfSen==true){
  202. var wEnter=getNodeText(allWord[iWord],"enter");
  203. if(wEnter=="" || wEnter==0){
  204. setNodeText(allWord[iWord],"enter","1");
  205. }
  206. var sent_ID="sent_"+par_num+"_"+sent_num;
  207. sent_num+=1
  208. word_length_count=0;
  209. sent_gramma_i=0;
  210. arr_Para_ID.push(wID);
  211. }
  212. if(wPali==","){
  213. if(next_pali_Case.lastIndexOf(".voc.")!=-1 || pre_pali_Case.lastIndexOf(".voc.")!=-1){
  214. sent_gramma_i += 0;
  215. }
  216. else{
  217. sent_gramma_i+=1;
  218. }
  219. }
  220. if(wType==".v:ind." && allWord.length>=(iWord+2) && next_pali_spell!=","){
  221. sent_gramma_i += 1;
  222. }
  223. else if(wType==".v." && allWord.length>=(iWord+2) && next_pali_spell!="." && next_pali_spell!=","){
  224. sent_gramma_i += 1;
  225. }
  226. }//段落结束
  227. //重绘
  228. //_display_sbs=1;
  229. //updateWordParBlockInner(xBlock[iBlock]);
  230. var sent_ID="sent_"+par_num+"_"+sent_num;
  231. arr_Para_ID.push(wID);
  232. arr_par_sent_num.push(sent_ID);
  233. g_arr_Para_ID[par_num]=arr_Para_ID;
  234. //设置已经切分标志
  235. setNodeText(xmlParInfo,"splited","1");
  236. }
  237. }
  238. }
  239. }