//旧版 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