module_function.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713
  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. var wbw_count = 0;
  291. for (i = 0; i < lstResWbw.length; i++) {
  292. if (i > 0 && lstResWbw[i].author != lstResWbw[i - 1].author && lstResWbw[i].language != lstResWbw[i - 1].language) {
  293. wbwListStr += "<li><input type=\"checkbox\" checked /><a onclick=\"project_res_info_click('wbw'," + (i - 1) + ")\">" + lstResWbw[i - 1].author + "[" + lstResWbw[i - 1].language + "]-" + wbw_count + "</a></li>"
  294. tran_count = 1;
  295. wbwListStr2 += "<option value=\"" + (i - 1) + "\">" + info2 + "</option>"
  296. }
  297. else if (i == lstResWbw.length - 1 && i != 0) {
  298. wbwListStr += "<li><input type=\"checkbox\" checked /><a onclick=\"project_res_info_click('wbw'," + (i - 1) + ")\">" + lstResWbw[i - 1].author + "[" + lstResWbw[i - 1].language + "]-" + wbw_count + "</a></li>"
  299. wbwListStr2 += "<option value=\"" + (i - 1) + "\">" + info2 + "</option>"
  300. }
  301. else {
  302. wbw_count += lstResWbw[i].count;
  303. }
  304. var info1 = lstResWbw[i].author + "," + lstResWbw[i].language
  305. var info2 = lstResWbw[i].author + "[" + lstResWbw[i].language + "]"
  306. }
  307. var tranListStr = "";
  308. var tranListStr2 = ""
  309. var tran_count = 0;
  310. for (i = 0; i < lstResTranslate.length; i++) {
  311. if (i > 0 && lstResTranslate[i].author != lstResTranslate[i - 1].author && lstResTranslate[i].language != lstResTranslate[i - 1].language) {
  312. tranListStr += "<li><input type=\"checkbox\" checked /><a onclick=\"project_res_info_click('translate'," + (i - 1) + ")\">" + lstResTranslate[i - 1].author + "[" + lstResTranslate[i - 1].language + "]-" + tran_count + "</a></li>"
  313. tran_count = 1;
  314. tranListStr2 += "<option value=\"" + (i - 1) + "\">" + info2 + "</option>"
  315. }
  316. else if (i == lstResTranslate.length - 1 && i != 0) {
  317. tranListStr += "<li><input type=\"checkbox\" checked /><a onclick=\"project_res_info_click('translate'," + (i - 1) + ")\">" + lstResTranslate[i - 1].author + "[" + lstResTranslate[i - 1].language + "]-" + tran_count + "</a></li>"
  318. tranListStr2 += "<option value=\"" + (i - 1) + "\">" + info2 + "</option>"
  319. }
  320. else {
  321. tran_count += lstResTranslate[i].count;
  322. }
  323. var info1 = lstResTranslate[i].author + "," + lstResTranslate[i].language
  324. var info2 = lstResTranslate[i].author + "[" + lstResTranslate[i].language + "]"
  325. }
  326. var noteListStr = "";
  327. var noteListStr2 = "";
  328. for (i = 0; i < lstResNote.length; i++) {
  329. 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>"
  330. var info1 = lstResNote[i].author + "," + lstResNote[i].language
  331. var info2 = lstResNote[i].author + "[" + lstResNote[i].language + "]"
  332. noteListStr2 += "<option value=\"" + i + "\">" + info2 + "</option>"
  333. }
  334. var headingListStr = "";
  335. for (i = 0; i < lstResHeading.length; i++) {
  336. 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>"
  337. }
  338. var iCountIld = g_DictWordList.length;
  339. var iCountIldXML = gXmlBookDataInlineDict.getElementsByTagName("word").length;
  340. var ildListStr = "<li>Inline Dict XML(" + iCountIldXML + ")</li><li>Inline Dict Array(" + iCountIld + ")</li>";
  341. document.getElementById("id_editor_project_res_wbw_inner").innerHTML = wbwListStr;
  342. document.getElementById("id_editor_project_res_translate_inner").innerHTML = tranListStr;
  343. document.getElementById("id_editor_project_res_note_inner").innerHTML = noteListStr;
  344. document.getElementById("id_editor_project_res_heading_inner").innerHTML = headingListStr;
  345. document.getElementById("id_editor_project_res_ild_inner").innerHTML = ildListStr;
  346. document.getElementById("id_translate_export_list").innerHTML = tranListStr2;
  347. document.getElementById("id_note_export_list").innerHTML = noteListStr2;
  348. document.getElementById("id_wbw_export_list").innerHTML = wbwListStr2;
  349. }
  350. function project_res_ild_remove() {
  351. var_dump(removeAllInlinDictItem() + " recoder removed");
  352. refreshResource();
  353. }
  354. function project_res_info_click(type, index) {
  355. $("#project_res_album_info").show();
  356. $("#project_res_album_info").siblings().hide();
  357. currResIndex = index;
  358. switch (type) {
  359. case "wbw":
  360. currResObj = lstResWbw;
  361. project_show_album_info(currResObj[index].album_id, currResObj[index].book, type);
  362. break;
  363. case "translate":
  364. currResObj = lstResTranslate;
  365. project_show_album_info(currResObj[index].album_id, currResObj[index].book, type);
  366. break;
  367. case "note":
  368. currResObj = lstResNote
  369. break;
  370. case "heading":
  371. currResObj = lstResHeading
  372. break;
  373. default:
  374. currResObj = null;
  375. break;
  376. }
  377. document.getElementById("id_project_res_info_language").value = currResObj[index].language;
  378. document.getElementById("id_project_res_info_author").value = currResObj[index].author;
  379. document.getElementById("id_project_res_info_editor").value = currResObj[index].editor;
  380. $("#id_project_res_info_edition").val(currResObj[index].edition);
  381. $("#project_res_info_title").html(currResObj[index].author);
  382. }
  383. var g_new_album_guid = "";
  384. function project_show_album_info(album_id, book, type) {
  385. $.get("./album.php",
  386. {
  387. op: "get_album",
  388. book: book,
  389. type: type,
  390. album_id: album_id
  391. },
  392. function (data, status) {
  393. var album_data = JSON.parse(data);
  394. var html = "";
  395. if (album_data.length > 0) {
  396. var bFound = false;
  397. for (var i = 0; i < album_data.length; i++) {
  398. if (album_data[i].id == currResObj[currResIndex].album_id) {
  399. var alink = "./album.php?op=show_info&album_id=" + album_data[i].id;
  400. html = "专辑名称:<a href='" + alink + "' target='_blank'>《" + album_data[i].title + "》</a><button>删除</button>";
  401. bFound = true;
  402. break;
  403. //$("#project_album_id").html(html);
  404. //return;
  405. }
  406. }
  407. if (!bFound) {
  408. html = "专辑名称:无";
  409. }
  410. var html_album_list = "";
  411. //标记文档中已经被使用的
  412. for (var i = 0; i < album_data.length; i++) {
  413. album_data[i].used = false;
  414. for (var j = 0; j < currResObj.length; j++) {
  415. if (album_data[i].id == currResObj[j].album_id) {
  416. album_data[i].used = true;
  417. }
  418. }
  419. }
  420. for (var i = 0; i < album_data.length; i++) {
  421. if (album_data[i].used == false) {
  422. var alink = "./album.php?op=show_info&album_id=" + album_data[i].id;
  423. var album_id = album_data[i].id;
  424. var album_guid = album_data[i].guid;
  425. 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>";
  426. }
  427. }
  428. if (html_album_list != "") {
  429. html += " <br />(可以选择下列已有的专辑)";
  430. html += "<ul>";
  431. html += html_album_list;
  432. html += "</ul>";
  433. }
  434. g_new_album_guid = com_guid();
  435. html += "<button onclick='project_new_album_show()'>新建专辑</button>";
  436. html += "<div id='project_new_album' style='display:none;'>";
  437. html += "<input type='hidden' id='new_album_album_guid' value='" + g_new_album_guid + "'/>";
  438. html += "<input type='hidden' id='new_album_album_type' value='" + currResObj[currResIndex].type + "'/>";
  439. html += "<input type='hidden' id='new_album_book' value='" + currResObj[currResIndex].book + "'/>";
  440. html += "作者(必填):<input type='input' id='new_album_author' value='" + currResObj[currResIndex].author + "'/><br>";
  441. html += "专辑名称(必填):<input type='input' id='new_album_title' value=''/><br>";
  442. html += "语言:" + currResObj[currResIndex].language + "<input type='hidden' id='new_album_lang' value='" + currResObj[currResIndex].language + "'/><br>";
  443. html += "Tag:<input type='input' id='new_album_tag' value=''/><br>";
  444. html += "Summary:<input type='input' id='new_album_summary' value=''/><br>";
  445. html += "Edition:<input type='input' id='new_album_edition' placeholder=\"第一版\" value=''/><br>";
  446. html += "<input type=\"button\" value='完成' onclick='project_new_album_submit()' />";
  447. html += "</div>";
  448. }
  449. else {
  450. var html = "专辑名称:无";
  451. g_new_album_guid = com_guid();
  452. html += "<button onclick='project_new_album_show()'>新建专辑</button>";
  453. html += "<div id='project_new_album' style='display:none;'>";
  454. html += "<input type='hidden' id='new_album_album_guid' value='" + g_new_album_guid + "'/>";
  455. html += "<input type='hidden' id='new_album_album_type' value='" + currResObj[currResIndex].type + "'/>";
  456. html += "<input type='hidden' id='new_album_book' value='" + currResObj[currResIndex].book + "'/>";
  457. html += "作者(必填):<input type='input' id='new_album_author' value='" + currResObj[currResIndex].author + "'/><br>";
  458. html += "专辑名称(必填):<input type='input' id='new_album_title' value=''/><br>";
  459. html += "语言:" + currResObj[currResIndex].language + "<input type='hidden' id='new_album_lang' value='" + currResObj[currResIndex].language + "'/><br>";
  460. html += "Tag:<input type='input' id='new_album_tag' value=''/><br>";
  461. html += "Summary:<input type='input' id='new_album_summary' value=''/><br>";
  462. html += "Edition:<input type='input' id='new_album_edition' placeholder=\"第一版\" value=''/><br>";
  463. html += "<input type=\"button\" value='完成' onclick='project_new_album_submit()' />";
  464. html += "</div>";
  465. }
  466. html += "<div id='project_new_album_server_response'></div>"
  467. $("#project_album_id").html(html);
  468. });
  469. }
  470. function project_apply_album(album_id, album_guid) {
  471. //应用新的专辑号到文档数据块
  472. var count = 0;
  473. var xBlock = currResObj[currResIndex].element;
  474. for (var iBlock = 0; iBlock < xBlock.length; iBlock++) {
  475. var xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
  476. setNodeText(xmlParInfo, "album_guid", album_guid);
  477. setNodeText(xmlParInfo, "album_id", album_id);
  478. count++;
  479. }
  480. currResObj[currResIndex].album_id = album_id;
  481. currResObj[currResIndex].album_guid = album_guid;
  482. alert("应用新的专辑到" + count + "段落");
  483. project_res_info_click(currResObj[currResIndex].type, currResIndex);
  484. }
  485. function project_new_album_show() {
  486. $("#project_new_album").show(200);
  487. }
  488. function project_new_album_submit() {
  489. var album_guid = $("#new_album_album_guid").val();
  490. var album_type = $("#new_album_album_type").val();
  491. var book = $("#new_album_book").val();
  492. var author = $("#new_album_author").val();
  493. var title = $("#new_album_title").val();
  494. var lang = $("#new_album_lang").val();
  495. var tag = $("#new_album_tag").val();
  496. var summary = $("#new_album_summary").val();
  497. var edition = $("#new_album_edition").val();
  498. if (author == "") {
  499. alert("作者不能为空");
  500. return;
  501. }
  502. if (title == "") {
  503. alert("标题不能为空");
  504. return;
  505. }
  506. $.get("./album.php",
  507. {
  508. op: "new",
  509. album_guid: album_guid,
  510. album_type: album_type,
  511. book: book,
  512. lang: lang,
  513. tag: tag,
  514. summary: summary,
  515. author: author,
  516. edition: edition,
  517. title: title
  518. },
  519. function (data, status) {
  520. $("#project_new_album_server_response").html(data);
  521. if (data.substring(0, 5) != "error") {
  522. //新建专辑成功 传回新建的album id
  523. alert("新建专辑成功");
  524. //应用新的专辑号到文档数据块
  525. var old_album_guid = currResObj[currResIndex].album_guid;
  526. var count = 0;
  527. var xBlock = currResObj[currResIndex].element;
  528. for (var iBlock = 0; iBlock < xBlock.length; iBlock++) {
  529. var xmlParInfo = xBlock[iBlock].getElementsByTagName("info")[0];
  530. setNodeText(xmlParInfo, "album_guid", g_new_album_guid);
  531. setNodeText(xmlParInfo, "album_id", data);
  532. count++;
  533. }
  534. currResObj[currResIndex].album_id = data;
  535. currResObj[currResIndex].album_guid = g_new_album_guid;
  536. alert("应用新的专辑到" + count + "段落");
  537. project_res_info_click(currResObj[currResIndex].type, currResIndex);
  538. }
  539. else {
  540. $("#project_new_album_server_response").html(data);
  541. }
  542. });
  543. }
  544. function addItemToResList(obj, resList) {
  545. var isFind = false
  546. for (i = 0; i < resList.length; i++) {
  547. if (resList[i].album_guid == obj.album_guid) {
  548. isFind = true;
  549. resList[i].count++;
  550. resList[i].element.push(obj.element[0])
  551. return;
  552. }
  553. }
  554. resList.push(obj);
  555. }
  556. function editor_project_publish() {
  557. xmlHttp = null;
  558. if (window.XMLHttpRequest) {// code for IE7, Firefox, Opera, etc.
  559. xmlHttp = new XMLHttpRequest();
  560. }
  561. else if (window.ActiveXObject) {// code for IE6, IE5
  562. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  563. }
  564. if (xmlHttp != null) {
  565. xmlHttp.open("POST", "./pc_publish.php", false);
  566. xmlHttp.send(com_xmlToString(gXmlBookData));
  567. var_dump(xmlHttp.responseText);
  568. }
  569. else {
  570. var_dump("Your browser does not support XMLHTTP.");
  571. }
  572. }
  573. function editor_project_res_info_modify() {
  574. xBlocks = currResObj[currResIndex].element
  575. for (x in xBlocks) {
  576. xmlParInfo = xBlocks[x].getElementsByTagName("info")[0];
  577. setNodeText(xmlParInfo, "language", document.getElementById("id_project_res_info_language").value);
  578. setNodeText(xmlParInfo, "author", document.getElementById("id_project_res_info_author").value);
  579. setNodeText(xmlParInfo, "editor", document.getElementById("id_project_res_info_editor").value);
  580. setNodeText(xmlParInfo, "edition", document.getElementById("id_project_res_info_edition").value);
  581. }
  582. refreshResource()
  583. }
  584. function editor_project_res_remove() {
  585. var r = confirm("Remove a resource!");
  586. if (r == true) {
  587. xBlocks = currResObj[currResIndex].element
  588. for (x in xBlocks) {
  589. xmlParInfo = xBlocks[x].getElementsByTagName("info")[0];
  590. blockid = getNodeText(xmlParInfo, "id");
  591. type = getNodeText(xmlParInfo, "type");
  592. var htmlDivId = "";
  593. switch (type) {
  594. case "wbw":
  595. htmlDivId = "id_wbw_" + blockid;
  596. break;
  597. case "translate":
  598. htmlDivId = "id_tran_" + blockid;
  599. break;
  600. case "note":
  601. htmlDivId = "id_note_" + blockid;
  602. break;
  603. case "heading":
  604. htmlDivId = "id_heading_" + blockid;
  605. break;
  606. }
  607. xHtmlDom = document.getElementById(htmlDivId);
  608. if (xHtmlDom) {
  609. xHtmlDom.parentNode.removeChild(xHtmlDom);
  610. }
  611. else {
  612. //alert("错误的数据包id-"+blockid);
  613. }
  614. xBlocks[x].parentNode.removeChild(xBlocks[x]);
  615. }
  616. refreshResource()
  617. alert("Removed OK! \nPlease save and open project again.");
  618. }
  619. }
  620. function editor_project_res_publish() {
  621. var xBlocks = currResObj[currResIndex].element;
  622. if (xBlocks.length) {
  623. var xmlParInfo = xBlocks[0].getElementsByTagName("info")[0];
  624. var album_id = getNodeText(xmlParInfo, "album_id");
  625. var album_guid = getNodeText(xmlParInfo, "album_guid");
  626. var album_type = getNodeText(xmlParInfo, "type");
  627. var album_lang = getNodeText(xmlParInfo, "language");
  628. var album_author = getNodeText(xmlParInfo, "author");
  629. var album_title = getNodeText(xmlParInfo, "album_title");
  630. var book = getNodeText(xmlParInfo, "book");
  631. 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");
  632. }
  633. }
  634. function project_res_type_click(sType) {
  635. var html = "";
  636. switch (sType) {
  637. case "doc":
  638. $("#id_editor_project_res_docinfo").show();
  639. $("#id_editor_project_res_docinfo").siblings().hide();
  640. break;
  641. case "wbw":
  642. $("#id_editor_project_res_wbw").show();
  643. $("#id_editor_project_res_wbw").siblings().hide();
  644. break;
  645. case "tran":
  646. $("#id_editor_project_res_translate").show();
  647. $("#id_editor_project_res_translate").siblings().hide();
  648. break;
  649. case "note":
  650. $("#id_editor_project_res_note").show();
  651. $("#id_editor_project_res_note").siblings().hide();
  652. break;
  653. }
  654. }