module_function.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694
  1. 
  2. /*
  3. * Modle Init.
  4. * public
  5. * @param param1 (type)
  6. *
  7. * Example usage:
  8. * @code
  9. * @endcode
  10. */
  11. /*
  12. Modle:
  13. Name:editor_project
  14. */
  15. var currResObj=null
  16. var currResIndex=-1
  17. /*
  18. * Modle Init.
  19. * public
  20. * @param param1 (type)
  21. *
  22. * Example usage:
  23. * @code
  24. * @endcode
  25. */
  26. function editor_project_init(){
  27. }
  28. function editor_project_wbw_export(){
  29. var allText="";
  30. var resId=document.getElementById("id_wbw_export_list").value;
  31. var resList = lstResWbw[resId]
  32. for(var iBlock=0;iBlock<resList.element.length;iBlock++){
  33. currBlock=resList.element[iBlock]
  34. xmlParInfo = currBlock.getElementsByTagName("info")[0];
  35. xmlParData = currBlock.getElementsByTagName("data")[0];
  36. {
  37. wbwTextNode=xmlParData.getElementsByTagName("word");
  38. for(var iText=0;iText<wbwTextNode.length;iText++){
  39. if(getNodeText(wbwTextNode[iText],"type")!=".ctl."){
  40. allText+=getNodeText(wbwTextNode[iText],"pali")+" ";
  41. }
  42. }
  43. allText+="\r\n"
  44. }
  45. }
  46. document.getElementById("id_project_wbw_export_text").value=allText;
  47. }
  48. function editor_project_translate_export(){
  49. var allText="";
  50. var resId=document.getElementById("id_translate_export_list").value;
  51. var resList = lstResTranslate[resId]
  52. for(var iBlock=0;iBlock<resList.element.length;iBlock++){
  53. currBlock=resList.element[iBlock]
  54. xmlParInfo = currBlock.getElementsByTagName("info")[0];
  55. xmlParData = currBlock.getElementsByTagName("data")[0];
  56. {
  57. tranTextNode=xmlParData.getElementsByTagName("sen");
  58. for(var iText=0;iText<tranTextNode.length;iText++){
  59. allText+=getNodeText(tranTextNode[iText],"text")+"\r\n";
  60. }
  61. }
  62. }
  63. document.getElementById("id_project_translate_export_text").value=allText;
  64. }
  65. function editor_project_note_export(){
  66. var allText="";
  67. var resId=document.getElementById("id_note_export_list").value;
  68. var resList = lstResNote[resId]
  69. for(var iBlock=0;iBlock<resList.element.length;iBlock++){
  70. currBlock=resList.element[iBlock]
  71. xmlParInfo = currBlock.getElementsByTagName("info")[0];
  72. xmlParData = currBlock.getElementsByTagName("data")[0];
  73. {
  74. tranTextNode=xmlParData.getElementsByTagName("sen");
  75. for(var iText=0;iText<tranTextNode.length;iText++){
  76. allText+=getNodeText(tranTextNode[iText],"text")+"\r\n";
  77. }
  78. }
  79. }
  80. document.getElementById("id_project_note_export_text").value=allText;
  81. }
  82. //添加新的译文
  83. function editor_project_translate_addnew(bWithText){
  84. var strXml="";
  85. strXml+="<pkg>"
  86. if(bWithText){
  87. var strSen=document.getElementById("id_project_translate_import_text").value.split("\n");
  88. }
  89. let newTranslateLanguage=document.getElementById("id_project_translate_new_language").value;
  90. let newTranslateAuthor=document.getElementById("id_project_translate_new_author").value;
  91. let newTranslateEditor=document.getElementById("id_project_translate_new_editor").value;
  92. let newTranslateTag=document.getElementById("id_project_translate_new_tag").value;
  93. var album_guid = new Array();
  94. for(var iPar=0;iPar<gArrayDocParagraph.length;iPar++){
  95. BookId=gArrayDocParagraph[iPar].book;
  96. album_guid[BookId.toString()]=com_uuid();
  97. }
  98. for(let iPar=0;iPar<gArrayDocParagraph.length;iPar++){
  99. let BookId=gArrayDocParagraph[iPar].book;
  100. let ParId=gArrayDocParagraph[iPar].paragraph;
  101. let iLevel=gArrayDocParagraph[iPar].level;
  102. let blockId = com_uuid();
  103. strXml += "<block>";
  104. strXml += "<info>";
  105. strXml += "<album_id>-1</album_id>";
  106. strXml += "<album_guid>"+album_guid[BookId.toString()]+"</album_guid>";
  107. strXml += "<id>"+blockId+"</id>";
  108. strXml += "<book>"+BookId+"</book>";
  109. strXml += "<paragraph>"+ParId+"</paragraph>";
  110. strXml += "<level>"+iLevel+"</level>";
  111. strXml += "<type>translate</type>";
  112. strXml += "<tag>"+newTranslateTag+"</tag>";
  113. strXml += "<author>"+newTranslateAuthor+"</author>";
  114. strXml += "<editor>"+newTranslateEditor+"</editor>";
  115. strXml += "<version>1</version>";
  116. strXml += "<edition>第一版</edition>";
  117. strXml += "<language>"+newTranslateLanguage+"</language>";
  118. strXml += "</info>";
  119. usent_block_create(blockId,BookId,ParId,newTranslateLanguage,newTranslateAuthor,newTranslateEditor,newTranslateTag);
  120. fileinfo_add_block(doc_head("doc_id"),2,blockId);
  121. if(bWithText && iPar<strSen.length){
  122. strXml+="<data><sen><begin></begin><end></end><text>"+strSen[iPar]+"</text></sen></data>"
  123. }
  124. else{
  125. strXml+="<data>";
  126. var xBlock=gXmlBookDataBody.getElementsByTagName("block");
  127. for(var iBlock=0;iBlock<xBlock.length;iBlock++){
  128. xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
  129. xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
  130. let mId=getNodeText(xmlParInfo,"id");
  131. let book=getNodeText(xmlParInfo,"book");
  132. let paragraph=getNodeText(xmlParInfo,"paragraph");
  133. let type=getNodeText(xmlParInfo,"type");
  134. if(BookId==book && ParId==paragraph && type=="wbw"){
  135. var xWord=xBlock[iBlock].getElementsByTagName("word");
  136. if(xWord.length>0){
  137. var ibegin=getNodeText(xWord[0],"id").split("-")[2];
  138. var iend=0;
  139. for(var iWord=0;iWord<xWord.length;iWord++){
  140. var wEnter=getNodeText(xWord[iWord],"enter");
  141. if(wEnter==1){
  142. iend=getNodeText(xWord[iWord],"id").split("-")[2];
  143. let sentId = com_uuid();
  144. strXml+="<sen>";
  145. strXml+="<id>"+sentId+"</id>";
  146. strXml+="<begin>"+ibegin+"</begin>";
  147. strXml+="<end>"+iend+"</end>";
  148. strXml+="<text></text>";
  149. strXml+="<status>1</status>";
  150. strXml+="</sen>";
  151. usent_create(blockId,sentId,book,paragraph,ibegin,iend,"",newTranslateTag,newTranslateLanguage,newTranslateAuthor,newTranslateEditor);
  152. iend++;
  153. ibegin=iend;
  154. }
  155. }
  156. iend=getNodeText(xWord[xWord.length-1],"id").split("-")[2];
  157. let sentId = com_uuid();
  158. strXml+="<sen>";
  159. strXml+="<id>"+sentId+"</id>";
  160. strXml+="<begin>"+ibegin+"</begin>";
  161. strXml+="<end>"+iend+"</end>";
  162. strXml+="<text></text>";
  163. strXml+="<status>1</status>";
  164. strXml+="</sen>";
  165. usent_create(blockId,sentId,book,paragraph,ibegin,iend,"",newTranslateTag,newTranslateLanguage,newTranslateAuthor,newTranslateEditor);
  166. }
  167. }
  168. }
  169. strXml+="</data>";
  170. }
  171. strXml+="</block>"
  172. }
  173. strXml+="</pkg>";
  174. usent_block_commit();
  175. usent_commit();
  176. fileinfo_add_block_commit(g_docid);
  177. if (window.DOMParser){
  178. parser=new DOMParser();
  179. newXmlData=parser.parseFromString(strXml,"text/xml");
  180. }
  181. else // Internet Explorer
  182. {
  183. newXmlData=new ActiveXObject("Microsoft.XMLDOM");
  184. newXmlData.async="false";
  185. newXmlData.loadXML(strXml);
  186. }
  187. if (newXmlData == null){
  188. alert("error:can not load book index.");
  189. return;
  190. }
  191. xmlParBlocks = newXmlData.getElementsByTagName("block");
  192. for(iXml=0;iXml<xmlParBlocks.length;iXml++){
  193. insertBlockToHtml(xmlParBlocks[iXml])
  194. insertBlockToXmlBookData(xmlParBlocks[iXml])
  195. }
  196. refreshResource();
  197. }
  198. //添加新的注解
  199. function editor_project_note_addnew(bWithText){
  200. var strXml="";
  201. strXml+="<pkg>"
  202. if(bWithText){
  203. var strSen=document.getElementById("id_project_note_import_text").value.split("\n");
  204. }
  205. newNoteLanguage=document.getElementById("id_project_note_new_language").value;
  206. newNoteAuthor=document.getElementById("id_project_note_new_author").value;
  207. xmlBookToc= gXmlBookDataHeadToc.getElementsByTagName("paragraph");
  208. for(var iPar=0;iPar<gArrayDocParagraph.length;iPar++){
  209. BookId=gArrayDocParagraph[iPar].book
  210. ParId=gArrayDocParagraph[iPar].paragraph
  211. strXml+="<block>"
  212. strXml+= "<info><id>"+com_guid()+"</id><book>"+BookId+"</book><paragraph>"+ParId+"</paragraph><type>note</type><author>"+newNoteAuthor+"</author><edition>1</edition><subver>0</subver><language>"+newNoteLanguage+"</language></info>";
  213. if(bWithText && iPar<strSen.length){
  214. strXml+="<data><sen><a></a><text>"+strSen[iPar]+"</text></sen></data>"
  215. }
  216. else{
  217. strXml+="<data><sen><a></a><text>"+gui_string_editor_project[1]+"</text></sen></data>"
  218. }
  219. strXml+="</block>"
  220. }
  221. strXml+="</pkg>"
  222. if (window.DOMParser){
  223. parser=new DOMParser();
  224. newXmlData=parser.parseFromString(strXml,"text/xml");
  225. }
  226. else // Internet Explorer
  227. {
  228. newXmlData=new ActiveXObject("Microsoft.XMLDOM");
  229. newXmlData.async="false";
  230. newXmlData.loadXML(strXml);
  231. }
  232. if (newXmlData == null){
  233. alert("error:can not load book index.");
  234. return;
  235. }
  236. xmlParBlocks = newXmlData.getElementsByTagName("block");
  237. for(iXml=0;iXml<xmlParBlocks.length;iXml++){
  238. insertBlockToHtml(xmlParBlocks[iXml])
  239. insertBlockToXmlBookData(xmlParBlocks[iXml])
  240. }
  241. refreshResource();
  242. }
  243. /*refresh resource list
  244. */
  245. function refreshResource(){
  246. lstResTranslate = new Array();
  247. lstResNote = new Array();
  248. lstResWbw = new Array();
  249. lstResHeading = new Array();
  250. lstResIld = new Array();
  251. xBlock=gXmlBookDataBody.getElementsByTagName("block");
  252. for(var iBlock=0;iBlock<xBlock.length;iBlock++){
  253. var xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
  254. var xmlParData = xBlock[iBlock].getElementsByTagName("data")[0];
  255. var bookId=getNodeText(xmlParInfo,"book");
  256. var paragraph=getNodeText(xmlParInfo,"paragraph");
  257. var type=getNodeText(xmlParInfo,"type");
  258. newRes = new Object();
  259. newRes.type=type;
  260. newRes.book=getNodeText(xmlParInfo,"book");
  261. newRes.paragraph=getNodeText(xmlParInfo,"paragraph");
  262. newRes.album_id=getNodeText(xmlParInfo,"album_id");
  263. newRes.album_guid=getNodeText(xmlParInfo,"album_guid");
  264. newRes.album_author=getNodeText(xmlParInfo,"album_author");
  265. newRes.author=getNodeText(xmlParInfo,"author");
  266. newRes.editor=getNodeText(xmlParInfo,"editor");
  267. newRes.revision=getNodeText(xmlParInfo,"revision");
  268. newRes.edition=getNodeText(xmlParInfo,"edition");
  269. newRes.subver=getNodeText(xmlParInfo,"subver");
  270. newRes.language=getNodeText(xmlParInfo,"language");
  271. newRes.count=1
  272. newRes.element=new Array(xBlock[iBlock]);
  273. switch(type){
  274. case "wbw":
  275. addItemToResList(newRes,lstResWbw)
  276. break;
  277. case "translate":
  278. addItemToResList(newRes,lstResTranslate)
  279. break;
  280. case "note":
  281. addItemToResList(newRes,lstResNote)
  282. break;
  283. case "heading":
  284. addItemToResList(newRes,lstResHeading)
  285. break;
  286. }
  287. }
  288. var wbwListStr="";
  289. var wbwListStr2="";
  290. for(i=0;i<lstResWbw.length;i++){
  291. wbwListStr+="<li><input type=\"checkbox\" checked /><a onclick=\"project_res_info_click('wbw',"+i+")\">"+lstResWbw[i].author+"["+lstResWbw[i].language+"]-"+lstResWbw[i].count+"</a></li>"
  292. var info1=lstResWbw[i].author+","+lstResWbw[i].language
  293. var info2=lstResWbw[i].author+"["+lstResWbw[i].language+"]"
  294. wbwListStr2+="<option value=\""+i+"\">"+info2+"</option>"
  295. }
  296. var tranListStr="";
  297. var tranListStr2=""
  298. for(i=0;i<lstResTranslate.length;i++){
  299. tranListStr+="<li><input type=\"checkbox\" checked /><a onclick=\"project_res_info_click('translate',"+i+")\">"+lstResTranslate[i].author+"["+lstResTranslate[i].language+"]-"+lstResTranslate[i].count+"</a></li>"
  300. var info1=lstResTranslate[i].author+","+lstResTranslate[i].language
  301. var info2=lstResTranslate[i].author+"["+lstResTranslate[i].language+"]"
  302. tranListStr2+="<option value=\""+i+"\">"+info2+"</option>"
  303. }
  304. var noteListStr="";
  305. var noteListStr2="";
  306. for(i=0;i<lstResNote.length;i++){
  307. noteListStr+="<li><input type=\"checkbox\" checked /><a onclick=\"project_res_info_click('note',"+i+")\">"+lstResNote[i].author+"["+lstResNote[i].language+"]-"+lstResNote[i].count+"</a></li>"
  308. var info1=lstResNote[i].author+","+lstResNote[i].language
  309. var info2=lstResNote[i].author+"["+lstResNote[i].language+"]"
  310. noteListStr2+="<option value=\""+i+"\">"+info2+"</option>"
  311. }
  312. var headingListStr="";
  313. for(i=0;i<lstResHeading.length;i++){
  314. headingListStr+="<li><input type=\"checkbox\" checked /><a onclick=\"project_res_info_click('heading',"+i+")\">"+lstResHeading[i].author+"["+lstResHeading[i].language+"]-"+lstResHeading[i].count+"</a></li>"
  315. }
  316. var iCountIld=g_DictWordList.length;
  317. var iCountIldXML=gXmlBookDataInlineDict.getElementsByTagName("word").length;
  318. var ildListStr="<li>Inline Dict XML("+iCountIldXML+")</li><li>Inline Dict Array("+iCountIld+")</li>";
  319. document.getElementById("id_editor_project_res_wbw_inner").innerHTML=wbwListStr;
  320. document.getElementById("id_editor_project_res_translate_inner").innerHTML=tranListStr;
  321. document.getElementById("id_editor_project_res_note_inner").innerHTML=noteListStr;
  322. document.getElementById("id_editor_project_res_heading_inner").innerHTML=headingListStr;
  323. document.getElementById("id_editor_project_res_ild_inner").innerHTML=ildListStr;
  324. document.getElementById("id_translate_export_list").innerHTML=tranListStr2;
  325. document.getElementById("id_note_export_list").innerHTML=noteListStr2;
  326. document.getElementById("id_wbw_export_list").innerHTML=wbwListStr2;
  327. }
  328. function project_res_ild_remove(){
  329. var_dump(removeAllInlinDictItem()+" recoder removed");
  330. refreshResource();
  331. }
  332. function project_res_info_click(type,index){
  333. $("#project_res_album_info").show();
  334. $("#project_res_album_info").siblings().hide();
  335. currResIndex=index;
  336. switch(type){
  337. case "wbw":
  338. currResObj = lstResWbw;
  339. project_show_album_info(currResObj[index].album_id,currResObj[index].book,type);
  340. break;
  341. case "translate":
  342. currResObj = lstResTranslate;
  343. project_show_album_info(currResObj[index].album_id,currResObj[index].book,type);
  344. break;
  345. case "note":
  346. currResObj = lstResNote
  347. break;
  348. case "heading":
  349. currResObj = lstResHeading
  350. break;
  351. default:
  352. currResObj=null;
  353. break;
  354. }
  355. document.getElementById("id_project_res_info_language").value=currResObj[index].language;
  356. document.getElementById("id_project_res_info_author").value=currResObj[index].author;
  357. document.getElementById("id_project_res_info_editor").value=currResObj[index].editor;
  358. $("#id_project_res_info_edition").val(currResObj[index].edition);
  359. $("#project_res_info_title").html(currResObj[index].author);
  360. }
  361. var g_new_album_guid="";
  362. function project_show_album_info(album_id,book,type){
  363. $.get("album.php",
  364. {
  365. op:"get_album",
  366. book:book,
  367. type:type,
  368. album_id:album_id
  369. },
  370. function(data,status){
  371. var album_data=JSON.parse(data);
  372. var html="";
  373. if(album_data.length>0){
  374. var bFound=false;
  375. for(var i=0;i<album_data.length;i++){
  376. if(album_data[i].id==currResObj[currResIndex].album_id){
  377. var alink="album.php?op=show_info&album_id="+album_data[i].id;
  378. html="专辑名称:<a href='"+alink+"' target='_blank'>《"+album_data[i].title+"》</a><button>删除</button>";
  379. bFound=true;
  380. break;
  381. //$("#project_album_id").html(html);
  382. //return;
  383. }
  384. }
  385. if(!bFound){
  386. html="专辑名称:无";
  387. }
  388. var html_album_list="";
  389. //标记文档中已经被使用的
  390. for(var i=0;i<album_data.length;i++){
  391. album_data[i].used=false;
  392. for(var j=0;j<currResObj.length;j++){
  393. if(album_data[i].id==currResObj[j].album_id){
  394. album_data[i].used=true;
  395. }
  396. }
  397. }
  398. for(var i=0;i<album_data.length;i++){
  399. if(album_data[i].used==false){
  400. var alink="album.php?op=show_info&album_id="+album_data[i].id;
  401. var album_id=album_data[i].id;
  402. var album_guid=album_data[i].guid;
  403. html_album_list+="<li><a href='"+alink+"' target='_blank'>《"+album_data[i].title+"》</a>"+album_data[i].author+album_data[i].language+" <button onclick=\"project_apply_album('"+album_id+"','"+album_guid+"')\">使用此专辑发布</button></li>";
  404. }
  405. }
  406. if(html_album_list!=""){
  407. html+=" <br />(可以选择下列已有的专辑)";
  408. html+="<ul>";
  409. html+=html_album_list;
  410. html+="</ul>";
  411. }
  412. g_new_album_guid=com_guid();
  413. html+="<button onclick='project_new_album_show()'>新建专辑</button>";
  414. html+= "<div id='project_new_album' style='display:none;'>";
  415. html+= "<input type='hidden' id='new_album_album_guid' value='"+g_new_album_guid+"'/>";
  416. html+= "<input type='hidden' id='new_album_album_type' value='"+currResObj[currResIndex].type+"'/>";
  417. html+= "<input type='hidden' id='new_album_book' value='"+currResObj[currResIndex].book+"'/>";
  418. html+= "作者(必填):<input type='input' id='new_album_author' value='"+currResObj[currResIndex].author+"'/><br>";
  419. html+= "专辑名称(必填):<input type='input' id='new_album_title' value=''/><br>";
  420. html+= "语言:"+currResObj[currResIndex].language+"<input type='hidden' id='new_album_lang' value='"+currResObj[currResIndex].language+"'/><br>";
  421. html+= "Tag:<input type='input' id='new_album_tag' value=''/><br>";
  422. html+= "Summary:<input type='input' id='new_album_summary' value=''/><br>";
  423. html+= "Edition:<input type='input' id='new_album_edition' placeholder=\"第一版\" value=''/><br>";
  424. html+= "<input type=\"button\" value='完成' onclick='project_new_album_submit()' />";
  425. html+= "</div>";
  426. }
  427. else{
  428. var html="专辑名称:无";
  429. g_new_album_guid=com_guid();
  430. html+="<button onclick='project_new_album_show()'>新建专辑</button>";
  431. html+= "<div id='project_new_album' style='display:none;'>";
  432. html+= "<input type='hidden' id='new_album_album_guid' value='"+g_new_album_guid+"'/>";
  433. html+= "<input type='hidden' id='new_album_album_type' value='"+currResObj[currResIndex].type+"'/>";
  434. html+= "<input type='hidden' id='new_album_book' value='"+currResObj[currResIndex].book+"'/>";
  435. html+= "作者(必填):<input type='input' id='new_album_author' value='"+currResObj[currResIndex].author+"'/><br>";
  436. html+= "专辑名称(必填):<input type='input' id='new_album_title' value=''/><br>";
  437. html+= "语言:"+currResObj[currResIndex].language+"<input type='hidden' id='new_album_lang' value='"+currResObj[currResIndex].language+"'/><br>";
  438. html+= "Tag:<input type='input' id='new_album_tag' value=''/><br>";
  439. html+= "Summary:<input type='input' id='new_album_summary' value=''/><br>";
  440. html+= "Edition:<input type='input' id='new_album_edition' placeholder=\"第一版\" value=''/><br>";
  441. html+= "<input type=\"button\" value='完成' onclick='project_new_album_submit()' />";
  442. html+= "</div>";
  443. }
  444. html+= "<div id='project_new_album_server_response'></div>"
  445. $("#project_album_id").html(html);
  446. });
  447. }
  448. function project_apply_album(album_id,album_guid){
  449. //应用新的专辑号到文档数据块
  450. var count=0;
  451. var xBlock=currResObj[currResIndex].element;
  452. for(var iBlock=0;iBlock<xBlock.length;iBlock++){
  453. var xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
  454. setNodeText(xmlParInfo,"album_guid",album_guid);
  455. setNodeText(xmlParInfo,"album_id",album_id);
  456. count++;
  457. }
  458. currResObj[currResIndex].album_id=album_id;
  459. currResObj[currResIndex].album_guid=album_guid;
  460. alert("应用新的专辑到"+count+"段落");
  461. project_res_info_click(currResObj[currResIndex].type,currResIndex);
  462. }
  463. function project_new_album_show(){
  464. $("#project_new_album").show(200);
  465. }
  466. function project_new_album_submit(){
  467. var album_guid = $("#new_album_album_guid").val();
  468. var album_type = $("#new_album_album_type").val();
  469. var book = $("#new_album_book").val();
  470. var author = $("#new_album_author").val();
  471. var title = $("#new_album_title").val();
  472. var lang = $("#new_album_lang").val();
  473. var tag = $("#new_album_tag").val();
  474. var summary = $("#new_album_summary").val();
  475. var edition = $("#new_album_edition").val();
  476. if(author==""){
  477. alert("作者不能为空");
  478. return;
  479. }
  480. if(title==""){
  481. alert("标题不能为空");
  482. return;
  483. }
  484. $.get("album.php",
  485. {
  486. op:"new",
  487. album_guid:album_guid,
  488. album_type:album_type,
  489. book:book,
  490. lang:lang,
  491. tag:tag,
  492. summary:summary,
  493. author:author,
  494. edition:edition,
  495. title:title
  496. },
  497. function(data,status){
  498. $("#project_new_album_server_response").html(data);
  499. if(data.substring(0,5)!="error"){
  500. //新建专辑成功 传回新建的album id
  501. alert("新建专辑成功");
  502. //应用新的专辑号到文档数据块
  503. var old_album_guid=currResObj[currResIndex].album_guid;
  504. var count=0;
  505. var xBlock=currResObj[currResIndex].element;
  506. for(var iBlock=0;iBlock<xBlock.length;iBlock++){
  507. var xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
  508. setNodeText(xmlParInfo,"album_guid",g_new_album_guid);
  509. setNodeText(xmlParInfo,"album_id",data);
  510. count++;
  511. }
  512. currResObj[currResIndex].album_id=data;
  513. currResObj[currResIndex].album_guid=g_new_album_guid;
  514. alert("应用新的专辑到"+count+"段落");
  515. project_res_info_click(currResObj[currResIndex].type,currResIndex);
  516. }
  517. else{
  518. $("#project_new_album_server_response").html(data);
  519. }
  520. });
  521. }
  522. function addItemToResList(obj,resList){
  523. var isFind=false
  524. for(i=0;i<resList.length;i++){
  525. if(resList[i].album_guid==obj.album_guid){
  526. isFind=true;
  527. resList[i].count++;
  528. resList[i].element.push(obj.element[0])
  529. return;
  530. }
  531. }
  532. resList.push(obj);
  533. }
  534. function editor_project_publish(){
  535. xmlHttp=null;
  536. if (window.XMLHttpRequest)
  537. {// code for IE7, Firefox, Opera, etc.
  538. xmlHttp=new XMLHttpRequest();
  539. }
  540. else if (window.ActiveXObject)
  541. {// code for IE6, IE5
  542. xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  543. }
  544. if (xmlHttp!=null)
  545. {
  546. xmlHttp.open("POST", "pc_publish.php", false);
  547. xmlHttp.send(com_xmlToString(gXmlBookData));
  548. var_dump(xmlHttp.responseText);
  549. }
  550. else
  551. {
  552. var_dump("Your browser does not support XMLHTTP.");
  553. }
  554. }
  555. function editor_project_res_info_modify(){
  556. xBlocks=currResObj[currResIndex].element
  557. for(x in xBlocks){
  558. xmlParInfo = xBlocks[x].getElementsByTagName("info")[0];
  559. setNodeText(xmlParInfo,"language",document.getElementById("id_project_res_info_language").value);
  560. setNodeText(xmlParInfo,"author",document.getElementById("id_project_res_info_author").value);
  561. setNodeText(xmlParInfo,"editor",document.getElementById("id_project_res_info_editor").value);
  562. setNodeText(xmlParInfo,"edition",document.getElementById("id_project_res_info_edition").value);
  563. }
  564. refreshResource()
  565. }
  566. function editor_project_res_remove(){
  567. var r=confirm("Remove a resource!");
  568. if (r==true)
  569. {
  570. xBlocks=currResObj[currResIndex].element
  571. for(x in xBlocks){
  572. xmlParInfo = xBlocks[x].getElementsByTagName("info")[0];
  573. blockid=getNodeText(xmlParInfo,"id");
  574. type=getNodeText(xmlParInfo,"type");
  575. var htmlDivId="";
  576. switch(type){
  577. case "wbw":
  578. htmlDivId="id_wbw_"+blockid;
  579. break;
  580. case "translate":
  581. htmlDivId="id_tran_"+blockid;
  582. break;
  583. case "note":
  584. htmlDivId="id_note_"+blockid;
  585. break;
  586. case "heading":
  587. htmlDivId="id_heading_"+blockid;
  588. break;
  589. }
  590. xHtmlDom=document.getElementById(htmlDivId);
  591. if(xHtmlDom){
  592. xHtmlDom.parentNode.removeChild(xHtmlDom);
  593. }
  594. else{
  595. //alert("错误的数据包id-"+blockid);
  596. }
  597. xBlocks[x].parentNode.removeChild(xBlocks[x]);
  598. }
  599. refreshResource()
  600. alert("Removed OK! \nPlease save and open project again.");
  601. }
  602. }
  603. function editor_project_res_publish(){
  604. var xBlocks=currResObj[currResIndex].element;
  605. if(xBlocks.length){
  606. var xmlParInfo = xBlocks[0].getElementsByTagName("info")[0];
  607. var album_id=getNodeText(xmlParInfo,"album_id");
  608. var album_guid=getNodeText(xmlParInfo,"album_guid");
  609. var album_type=getNodeText(xmlParInfo,"type");
  610. var album_lang=getNodeText(xmlParInfo,"language");
  611. var album_author=getNodeText(xmlParInfo,"author");
  612. var album_title=getNodeText(xmlParInfo,"album_title");
  613. var book=getNodeText(xmlParInfo,"book");
  614. window.open("publish.php?step=1&id="+album_id+"&filename="+g_filename+"&type="+album_type+"&book="+book+"&lang="+album_lang+"&author="+album_author+"&title="+album_title,"_blank");
  615. }
  616. }
  617. function project_res_type_click(sType){
  618. var html="";
  619. switch(sType){
  620. case "doc":
  621. $("#id_editor_project_res_docinfo").show();
  622. $("#id_editor_project_res_docinfo").siblings().hide();
  623. break;
  624. case "wbw":
  625. $("#id_editor_project_res_wbw").show();
  626. $("#id_editor_project_res_wbw").siblings().hide();
  627. break;
  628. case "tran":
  629. $("#id_editor_project_res_translate").show();
  630. $("#id_editor_project_res_translate").siblings().hide();
  631. break;
  632. case "note":
  633. $("#id_editor_project_res_note").show();
  634. $("#id_editor_project_res_note").siblings().hide();
  635. break;
  636. }
  637. }