//旧版 xml的根节点 var xmlDoc = null; var xmlDict = null; var gXmlOldVerData;//old ver xml file xml doc var g_filename="";//工程文件名 var arrDocFileInfo=null; //全部的逐词译单词xml 节点数组 var gXmlAllWordInWBW = new Array(); var gXmlBookData; var gXmlBookDataHead; var gXmlBookDataHeadToc; var gXmlBookDataBody=null; var gXmlBookDataInlineDict; //内联字典数据 var gXmlBookDataMsg; //消息数据 var gDocMsgList=new Array();//消息数组 var gXmlParIndex;//段落列表 var gArrayDocParagraph=new Array();//文档中的段落列表 //资源列表 var lstResTranslate = new Array(); var lstResNote = new Array(); var lstResWbw = new Array(); var lstResHeading = new Array(); var doc_info = new Object(); doc_info.msg_run = function(value){ if(value){ this.sendmsg = value; } else{ return(this.sendmsg); } } function createXmlDoc(){ var strXml=""; strXml+="\n" strXml+=" \n" strXml+=" pcdsset\n" strXml+=" package\n" strXml+=" 1\n" strXml+=" \n" strXml+=" \n" strXml+=" \n" strXml+=" \n" strXml+=" \n" strXml+=" \n" strXml+=" \n" strXml+="\n" if (window.DOMParser){ parser=new DOMParser(); gXmlBookData=parser.parseFromString(strXml,"text/xml"); } else // Internet Explorer { gXmlBookData=new ActiveXObject("Microsoft.XMLDOM"); gXmlBookData.async="false"; gXmlBookData.loadXML(strXml); } if (gXmlBookData == null){ alert("error:can not load book index."); return; } gXmlBookDataBody = gXmlBookData.getElementsByTagName("body")[0]; gXmlBookDataHead= gXmlBookData.getElementsByTagName("head")[0]; gXmlBookDataInlineDict= gXmlBookData.getElementsByTagName("dict")[0]; gXmlBookDataMsg= gXmlBookData.getElementsByTagName("message")[0]; gXmlBookDataHeadToc= gXmlBookDataHead.getElementsByTagName("toc")[0]; } function com_XmlAllWordRefresh(){ gXmlAllWordInWBW = gXmlBookDataBody.getElementsByTagName("word"); } function insertBlockToXmlBookData(element){ xmlParInfo = element.getElementsByTagName("info")[0]; xmlParData = element.getElementsByTagName("data")[0]; bookId=getNodeText(xmlParInfo,"book") paragraph=getNodeText(xmlParInfo,"paragraph") type=getNodeText(xmlParInfo,"type") switch(type){ case "wbw": xWords=element.getElementsByTagName("word"); for(iWord=0;iWord0 && newPar.level<9){ if(temp[bookpara].level>0 && temp[bookpara].level<9){ if(temp[bookpara].level>newPar.level){ temp[bookpara].level=newPar.level; } } else{ temp[bookpara].level=newPar.level; } } } else{ temp[bookpara]=newPar; } } for(var iTemp in temp){ gArrayDocParagraph.push(temp[iTemp]); } } function parIsSet(inBook,inPar){ for(var iPar=0;iPar 0 ){ strMsgDocList=arrDocFileInfo.parent_id; msg_start();//该文档是他人分享的文档,需要发送消息 doc_info.sendmsg=true; } else{ if(parseInt(arrDocFileInfo.share)==1){ strMsgDocList=arrDocFileInfo.id; msg_start(); doc_info.sendmsg=true;//共享给其他人,需要发送消息 } else{ doc_info.sendmsg=false;//无需发送消息 } } }); } function doc_info_change(field,value){ $.post("file_index.php", { op:"set", doc_id:g_docid, field:"accese_time", value:value }, function(data,status){ console.log("doc_info_change",data); }); } function doc_info_title_change(obj){ setNodeText(gXmlBookDataHead,"doc_title",obj.value); document.getElementById("editor_doc_title").innerHTML=obj.value; document.getElementById("file_title").innerHTML=obj.value; $.post("file_index.php", { op:"set", doc_id:g_docid, field:"title", value:obj.value }, function(data,status){ alert("Data: " + data + "\nStatus: " + status); }); } function getTranslateText(id){ var xBlock=gXmlBookDataBody.getElementsByTagName("block"); for(var iBlock=0;iBlock"); setNodeText(xSen[iSen],"text",strValue); ntf_show("修改:"+strValue); //准备消息数据 並發送 if(doc_info.sendmsg == true){ let d=new Date(); let msg_doc_id; if(doc_info.parent_id!=""){ msg_doc_id=doc_info.parent_id; } else{ msg_doc_id=doc_info.doc_id; } let blockId ; if(parent_id.length>0){ blockId = parent_id; } else{ blockId = id; } let objMsg = new Object(); objMsg.id=blockId; objMsg.begin=aBegin; objMsg.end = aEnd; objMsg.text = strValue; let strMsg=JSON.stringify(objMsg); msg_push(2,strMsg,msg_doc_id,d.getTime(),book,para); console.log("send mseeage:"+strMsg); } } } } } } function setNoteText(id,strValue){ xBlock=gXmlBookDataBody.getElementsByTagName("block"); for(let iBlock=0;iBlock0){ newText=strValue.replace(/\n/g,"
"); setNodeText(xSen[0],"text",strValue); //var_dump(strValue); } } } } function doc_head(key,value=null){ if(value){//set setNodeText(gXmlBookDataHead,key,value); } else{//get return(getNodeText(gXmlBookDataHead,key)); } } function doc_msg_push(msgobj){ gDocMsgList.push(msgobj); if(gXmlBookDataMsg){ var newNode=gXmlBookData.createElement("msg"); setNodeText(newNode,"id",msgobj.id); setNodeText(newNode,"sender",msgobj.sender); setNodeText(newNode,"type",msgobj.type); setNodeText(newNode,"docid",msgobj.docid); setNodeText(newNode,"time",msgobj.time); setNodeText(newNode,"read",msgobj.read); setNodeText(newNode,"data",msgobj.data); gXmlBookDataMsg.appendChild(newNode); } } function doc_block(strSelector=""){ if(strSelector==""){ var xBlock = gXmlBookDataBody.getElementsByTagName("block"); return(xBlock); } else if(strSelector.substr(0,1)=="#"){ var sBlockId=strSelector.substr(1); var xBlock = gXmlBookDataBody.getElementsByTagName("block"); for(let i in xBlock){ let xmlParInfo = xBlock[i].getElementsByTagName("info")[0]; let xmlParData = xBlock[iBlock].getElementsByTagName("data")[0]; let blockId=getNodeText(xmlParInfo,"id"); if(blockId==sBlockId){ var blockObj=new Object(); blockObj.info=xmlParInfo; blockObj.data=xmlParData; blockObj.element=xAllWord[wid]; return(blockObj); } } return(null); } else{ return(null); } } /* word("#p34-3-3").val("mean","jiji@en") add remove .draw doc_word("#p34-3-3").block.info("id") */ function doc_word(strSelector=""){ if(strSelector==""){ var xAllWord = gXmlBookDataBody.getElementsByTagName("word"); return(xAllWord); } else if(strSelector.substr(0,1)=="#"){ var sWordId=strSelector.substr(1); var xAllWord = gXmlBookDataBody.getElementsByTagName("word"); var wid=getWordIndex(sWordId); if(xAllWord[wid]){ var wordobj=new Object(); wordobj.wordid=strSelector; wordobj.element=xAllWord[wid]; wordobj.val=_doc_word_value; var objBlock=new Object(); objBlock.element=wordobj.element.parentNode.parentNode; objBlock.info=_block_info; wordobj.block=objBlock; return(wordobj); } else{ var wordobj=new Object(); wordobj.wordid=strSelector; wordobj.element=null; wordobj.val=_doc_word_value; return(wordobj); } } else{ } } function _doc_word_value(key,value=null){ if(this.element){ if(value){ setNodeText(this.element,key,value); } else{ var output = getNodeText(this.element,key); return(output); } } else{ if(!value){ return(""); } } } function _block_info(key,value=null){ if(this.element){ let xmlParInfo = this.element.getElementsByTagName("info")[0]; if(value){ setNodeText(xmlParInfo,key,value); } else{ var output = getNodeText(xmlParInfo,key); return(output); } } else{ if(!value){ return(""); } } } /* doc_data_tran["guid"][2].begin=2 doc_tran("guid").info("book"); doc_tran("guid").info("author","new author"); doc_tran("guid").text(); doc_tran("guid").sen(1).begin() .end() .text() doc_tran("guid").split(array); */ function doc_tran(strSelector="",search_parent=false){ if(strSelector==""){ let xBlock = gXmlBookDataBody.getElementsByTagName("block"); return(xBlock); } else if(strSelector.substr(0,1)=="#"){ var sBlockId=strSelector.substr(1); var xBlock = gXmlBookDataBody.getElementsByTagName("block"); let i=0; for(i=0; i0){ blockId = this.info("parent"); } else{ blockId = this.info("id"); } let book = this.info("book"); let para = this.info("paragraph"); update_tran_block_text(blockId); //准备消息数据 並發送 if(doc_info.sendmsg){ let d=new Date(); let msg_doc_id; if(doc_info.parent_id!=""){ msg_doc_id=doc_info.parent_id; } else{ msg_doc_id=doc_info.doc_id; } let objMsg = new Object(); objMsg.id=blockId; objMsg.begin=aBegin; objMsg.end = aEnd; objMsg.text = value; msg_push(2,JSON.stringify(objMsg),msg_doc_id,d.getTime(),book,para); } } } else{ var output = getNodeText(xSen[iSen],key); return(output); } } } } else{ if(!value){ return(""); } } } function _doc_tran_sent_list(){ if(this._data){ xSen=this._data.getElementsByTagName("sen"); let output = new Array(); for(let iSen = 0; iSen < xSen.length; iSen++){ let objSent = new Object(); objSent.begin=getNodeText(xSen[iSen],"begin"); objSent.end=getNodeText(xSen[iSen],"end"); objSent.text=getNodeText(xSen[iSen],"text"); output.push(objSent); } return(output); } else{ return(null); } } function _doc_tran_info(key,value=null){ if(this._info){ if(value){ setNodeText(this._info,key,value); } else{ var output = getNodeText(this._info,key); return(output); } } else{ if(!value){ return(""); } } } //工程文件数据解析 function projectDataParse(xmlBookData){ gXmlBookDataBody = xmlBookData.getElementsByTagName("body")[0]; gXmlBookDataHead= xmlBookData.getElementsByTagName("head")[0]; gXmlBookDataInlineDict= xmlBookData.getElementsByTagName("dict")[0]; gXmlBookDataHeadToc= xmlBookData.getElementsByTagName("toc")[0]; if(xmlBookData.getElementsByTagName("message")){ gXmlBookDataMsg= gXmlBookData.getElementsByTagName("message")[0]; } else{ gXmlBookDataMsg=null; } //解析消息队列 if(gXmlBookDataMsg){ var msgElements=gXmlBookDataMsg.getElementsByTagName("msg"); for(var iMsg=0;iMsg