Commit 71492ce8 authored by Sergey.Konovalov's avatar Sergey.Konovalov Committed by Alexander.Trofimov

x2t32.exe (2.0.2.336)

TrackRevision открытие/сохранение.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@66364 954022d7-b5bf-4e40-9824-e11837661b57
parent bfcae0ab
...@@ -125,7 +125,8 @@ var c_oSerProp_tblPrType = { ...@@ -125,7 +125,8 @@ var c_oSerProp_tblPrType = {
Look: 9, Look: 9,
Style: 10, Style: 10,
tblpPr2: 11, tblpPr2: 11,
Layout: 12 Layout: 12,
tblPrChange: 13
}; };
var c_oSer_tblpPrType = { var c_oSer_tblpPrType = {
Page:0, Page:0,
...@@ -172,7 +173,9 @@ var c_oSerProp_pPrType = { ...@@ -172,7 +173,9 @@ var c_oSerProp_pPrType = {
Spacing_BeforeAuto: 28, Spacing_BeforeAuto: 28,
Spacing_AfterAuto: 29, Spacing_AfterAuto: 29,
FramePr: 30, FramePr: 30,
SectPr: 31 SectPr: 31,
numPr_Ins: 32,
pPrChange: 33
}; };
var c_oSerProp_rPrType = { var c_oSerProp_rPrType = {
Bold:0, Bold:0,
...@@ -207,7 +210,10 @@ var c_oSerProp_rPrType = { ...@@ -207,7 +210,10 @@ var c_oSerProp_rPrType = {
Shd: 29, Shd: 29,
Vanish: 30, Vanish: 30,
TextOutline: 31, TextOutline: 31,
TextFill : 32 TextFill : 32,
Del: 33,
Ins: 34,
rPrChange: 35
}; };
var c_oSerProp_rowPrType = { var c_oSerProp_rowPrType = {
CantSplit:0, CantSplit:0,
...@@ -224,7 +230,10 @@ var c_oSerProp_rowPrType = { ...@@ -224,7 +230,10 @@ var c_oSerProp_rowPrType = {
WAfterBefore_Type:11, WAfterBefore_Type:11,
After:12, After:12,
Before:13, Before:13,
TableHeader:14 TableHeader:14,
Del: 15,
Ins: 16,
trPrChange: 17
}; };
var c_oSerProp_cellPrType = { var c_oSerProp_cellPrType = {
GridSpan:0, GridSpan:0,
...@@ -233,7 +242,11 @@ var c_oSerProp_cellPrType = { ...@@ -233,7 +242,11 @@ var c_oSerProp_cellPrType = {
TableCellW:3, TableCellW:3,
VAlign:4, VAlign:4,
VMerge:5, VMerge:5,
CellMar:6 CellMar:6,
CellDel: 7,
CellIns: 8,
CellMerge: 9,
tcPrChange: 10
}; };
var c_oSerProp_secPrType = { var c_oSerProp_secPrType = {
pgSz: 0, pgSz: 0,
...@@ -242,7 +255,8 @@ var c_oSerProp_secPrType = { ...@@ -242,7 +255,8 @@ var c_oSerProp_secPrType = {
headers: 3, headers: 3,
footers: 4, footers: 4,
hdrftrelem: 5, hdrftrelem: 5,
pageNumType: 6 pageNumType: 6,
sectPrChange: 7
}; };
var c_oSerProp_secPrSettingsType = { var c_oSerProp_secPrSettingsType = {
titlePg: 0, titlePg: 0,
...@@ -264,7 +278,9 @@ var c_oSerParType = { ...@@ -264,7 +278,9 @@ var c_oSerParType = {
OMathPara: 8, OMathPara: 8,
OMath: 9, OMath: 9,
Hyperlink: 10, Hyperlink: 10,
FldSimple: 11 FldSimple: 11,
Del: 12,
Ins: 13
}; };
var c_oSerDocTableType = { var c_oSerDocTableType = {
tblPr:0, tblPr:0,
...@@ -276,7 +292,8 @@ var c_oSerDocTableType = { ...@@ -276,7 +292,8 @@ var c_oSerDocTableType = {
Row_Content: 5, Row_Content: 5,
Cell: 6, Cell: 6,
Cell_Pr: 7, Cell_Pr: 7,
Cell_Content: 8 Cell_Content: 8,
tblGridChange: 9
}; };
var c_oSerRunType = { var c_oSerRunType = {
run:0, run:0,
...@@ -293,7 +310,8 @@ var c_oSerRunType = { ...@@ -293,7 +310,8 @@ var c_oSerRunType = {
CommentReference: 11, CommentReference: 11,
pptxDrawing: 12, pptxDrawing: 12,
_LastRun: 13, //для копирования через бинарник _LastRun: 13, //для копирования через бинарник
object: 14 object: 14,
delText: 15
}; };
var c_oSerImageType = { var c_oSerImageType = {
MediaId:0, MediaId:0,
...@@ -631,6 +649,22 @@ var c_oSer_ColorThemeType = { ...@@ -631,6 +649,22 @@ var c_oSer_ColorThemeType = {
Tint: 2, Tint: 2,
Shade: 3 Shade: 3
}; };
var c_oSerProp_RevisionType = {
Author: 0,
Date: 1,
Id: 2,
UserId: 3,
Content: 4,
VMerge: 5,
VMergeOrigin: 6,
pPrChange: 7,
rPrChange: 8,
sectPrChange: 9,
tblGridChange: 10,
tblPrChange: 11,
tcPrChange: 12,
trPrChange: 13
};
var ETblStyleOverrideType = { var ETblStyleOverrideType = {
tblstyleoverridetypeBand1Horz: 0, tblstyleoverridetypeBand1Horz: 0,
tblstyleoverridetypeBand1Vert: 1, tblstyleoverridetypeBand1Vert: 1,
...@@ -756,6 +790,67 @@ function CreateThemeUnifill(color, tint, shade){ ...@@ -756,6 +790,67 @@ function CreateThemeUnifill(color, tint, shade){
return ret; return ret;
} }
function WriteTrackRevision(bs, Id, reviewInfo, options) {
if(null != reviewInfo.UserName){
bs.memory.WriteByte(c_oSerProp_RevisionType.Author);
bs.memory.WriteString2(reviewInfo.UserName);
}
if(reviewInfo.DateTime > 0){
var dateStr = new Date(reviewInfo.DateTime).toISOString().slice(0, 19) + 'Z';
bs.memory.WriteByte(c_oSerProp_RevisionType.Date);
bs.memory.WriteString2(dateStr);
}
//increment id
bs.WriteItem(c_oSerProp_RevisionType.Id, function(){bs.memory.WriteLong(Id);});
if(null != reviewInfo.UserId){
bs.memory.WriteByte(c_oSerProp_RevisionType.UserId);
bs.memory.WriteString2(reviewInfo.UserId);
}
if(options){
if (null != options.run) {
var delText = reviewtype_Remove == options.ReviewType;
bs.WriteItem(c_oSerProp_RevisionType.Content, function(){options.bdtw.WriteRun(options.run, options.bUseSelection, delText);});
}
if (null != options.rPr) {
bs.WriteItem(c_oSerProp_RevisionType.rPrChange, function(){options.brPrs.Write_rPr(options.rPr, null);});
}
if (null != options.pPr) {
bs.WriteItem(c_oSerProp_RevisionType.pPrChange, function(){options.bpPrs.Write_pPr(options.pPr);});
}
}
};
function ReadTrackRevision(type, length, stream, reviewInfo, options) {
var res = c_oSerConstants.ReadOk;
if(c_oSerProp_RevisionType.Author == type) {
reviewInfo.UserName = stream.GetString2LE(length);
} else if(c_oSerProp_RevisionType.Date == type) {
var dateStr = stream.GetString2LE(length);
var dateMs = Date.parse(dateStr);
if (isNaN(dateMs)) {
dateMs = new Date().getTime();
}
reviewInfo.DateTime = dateMs;
} else if(c_oSerProp_RevisionType.UserId == type) {
reviewInfo.UserId = stream.GetString2LE(length);
} else if(options) {
if(c_oSerProp_RevisionType.Content == type) {
res = options.bdtr.bcr.Read1(length, function (t, l) {
return options.bdtr.ReadParagraphContent(t, l, options.parStruct);
});
} else if(c_oSerProp_RevisionType.rPrChange == type) {
res = options.brPrr.Read(length, options.rPr, null);
} else if(c_oSerProp_RevisionType.pPrChange == type) {
res = options.bpPrr.Read(length, options.pPr, null);
} else {
res = c_oSerConstants.ReadUnknown;
}
} else
res = c_oSerConstants.ReadUnknown;
return res;
};
function BinaryFileWriter(doc, bMailMergeDocx, bMailMergeHtml) function BinaryFileWriter(doc, bMailMergeDocx, bMailMergeHtml)
{ {
this.memory = new CMemory(); this.memory = new CMemory();
...@@ -774,7 +869,8 @@ function BinaryFileWriter(doc, bMailMergeDocx, bMailMergeHtml) ...@@ -774,7 +869,8 @@ function BinaryFileWriter(doc, bMailMergeDocx, bMailMergeHtml)
}; };
this.saveParams = { this.saveParams = {
bMailMergeDocx: bMailMergeDocx, bMailMergeDocx: bMailMergeDocx,
bMailMergeHtml: bMailMergeHtml bMailMergeHtml: bMailMergeHtml,
trackRevisionId: 0
}; };
this.Write = function() this.Write = function()
{ {
...@@ -827,9 +923,9 @@ function BinaryFileWriter(doc, bMailMergeDocx, bMailMergeHtml) ...@@ -827,9 +923,9 @@ function BinaryFileWriter(doc, bMailMergeDocx, bMailMergeHtml)
this.WriteTable(c_oSerTableTypes.Comments, new BinaryCommentsTableWriter(this.memory, this.Document, oMapCommentId)); this.WriteTable(c_oSerTableTypes.Comments, new BinaryCommentsTableWriter(this.memory, this.Document, oMapCommentId));
//Write Numbering //Write Numbering
var oNumIdMap = {}; var oNumIdMap = {};
this.WriteTable(c_oSerTableTypes.Numbering, new BinaryNumberingTableWriter(this.memory, this.Document, oNumIdMap)); this.WriteTable(c_oSerTableTypes.Numbering, new BinaryNumberingTableWriter(this.memory, this.Document, oNumIdMap, null, this.saveParams));
//Write StyleTable //Write StyleTable
this.WriteTable(c_oSerTableTypes.Style, new BinaryStyleTableWriter(this.memory, this.Document, oNumIdMap)); this.WriteTable(c_oSerTableTypes.Style, new BinaryStyleTableWriter(this.memory, this.Document, oNumIdMap, null, this.saveParams));
//Write DocumentTable //Write DocumentTable
var oBinaryHeaderFooterTableWriter = new BinaryHeaderFooterTableWriter(this.memory, this.Document, oNumIdMap, oMapCommentId, this.saveParams); var oBinaryHeaderFooterTableWriter = new BinaryHeaderFooterTableWriter(this.memory, this.Document, oNumIdMap, oMapCommentId, this.saveParams);
this.WriteTable(c_oSerTableTypes.Document, new BinaryDocumentTableWriter(this.memory, this.Document, oMapCommentId, oNumIdMap, null, this.saveParams, oBinaryHeaderFooterTableWriter)); this.WriteTable(c_oSerTableTypes.Document, new BinaryDocumentTableWriter(this.memory, this.Document, oMapCommentId, oNumIdMap, null, this.saveParams, oBinaryHeaderFooterTableWriter));
...@@ -895,8 +991,8 @@ function BinaryFileWriter(doc, bMailMergeDocx, bMailMergeHtml) ...@@ -895,8 +991,8 @@ function BinaryFileWriter(doc, bMailMergeDocx, bMailMergeHtml)
this.bs.WriteItemWithLengthEnd(this.copyParams.nDocumentWriterPos); this.bs.WriteItemWithLengthEnd(this.copyParams.nDocumentWriterPos);
this.WriteTableEnd(this.copyParams.nDocumentWriterTablePos); this.WriteTableEnd(this.copyParams.nDocumentWriterTablePos);
this.WriteTable(c_oSerTableTypes.Numbering, new BinaryNumberingTableWriter(this.memory, this.Document, {}, this.copyParams.oUsedNumIdMap)); this.WriteTable(c_oSerTableTypes.Numbering, new BinaryNumberingTableWriter(this.memory, this.Document, {}, this.copyParams.oUsedNumIdMap, this.saveParams));
this.WriteTable(c_oSerTableTypes.Style, new BinaryStyleTableWriter(this.memory, this.Document, this.copyParams.oUsedNumIdMap, this.copyParams)); this.WriteTable(c_oSerTableTypes.Style, new BinaryStyleTableWriter(this.memory, this.Document, this.copyParams.oUsedNumIdMap, this.copyParams, this.saveParams));
this.WriteMainTableEnd(); this.WriteMainTableEnd();
window.global_pptx_content_writer._End(); window.global_pptx_content_writer._End();
...@@ -944,15 +1040,15 @@ function BinarySigTableWriter(memory) ...@@ -944,15 +1040,15 @@ function BinarySigTableWriter(memory)
this.memory.WriteLong(c_oSerFormat.Version); this.memory.WriteLong(c_oSerFormat.Version);
} }
}; };
function BinaryStyleTableWriter(memory, doc, oNumIdMap, copyParams) function BinaryStyleTableWriter(memory, doc, oNumIdMap, copyParams, saveParams)
{ {
this.memory = memory; this.memory = memory;
this.Document = doc; this.Document = doc;
this.copyParams = copyParams; this.copyParams = copyParams;
this.bs = new BinaryCommonWriter(this.memory); this.bs = new BinaryCommonWriter(this.memory);
this.btblPrs = new Binary_tblPrWriter(this.memory, oNumIdMap); this.btblPrs = new Binary_tblPrWriter(this.memory, oNumIdMap, saveParams);
this.bpPrs = new Binary_pPrWriter(this.memory, oNumIdMap, null); this.bpPrs = new Binary_pPrWriter(this.memory, oNumIdMap, null, saveParams);
this.brPrs = new Binary_rPrWriter(this.memory); this.brPrs = new Binary_rPrWriter(this.memory, saveParams);
this.Write = function() this.Write = function()
{ {
var oThis = this; var oThis = this;
...@@ -968,7 +1064,7 @@ function BinaryStyleTableWriter(memory, doc, oNumIdMap, copyParams) ...@@ -968,7 +1064,7 @@ function BinaryStyleTableWriter(memory, doc, oNumIdMap, copyParams)
//default pPr //default pPr
this.bs.WriteItem(c_oSer_st.DefpPr, function(){oThis.bpPrs.Write_pPr(oDef_pPr);}); this.bs.WriteItem(c_oSer_st.DefpPr, function(){oThis.bpPrs.Write_pPr(oDef_pPr);});
//default rPr //default rPr
this.bs.WriteItem(c_oSer_st.DefrPr, function(){oThis.brPrs.Write_rPr(oDef_rPr);}); this.bs.WriteItem(c_oSer_st.DefrPr, function(){oThis.brPrs.Write_rPr(oDef_rPr, null);});
//styles //styles
this.bs.WriteItem(c_oSer_st.Styles, function(){oThis.WriteStyles(oStyles.Style, oStyles.Default);}); this.bs.WriteItem(c_oSer_st.Styles, function(){oThis.WriteStyles(oStyles.Style, oStyles.Default);});
}; };
...@@ -1059,7 +1155,7 @@ function BinaryStyleTableWriter(memory, doc, oNumIdMap, copyParams) ...@@ -1059,7 +1155,7 @@ function BinaryStyleTableWriter(memory, doc, oNumIdMap, copyParams)
//TextPr //TextPr
if(null != style.TextPr) if(null != style.TextPr)
this.bs.WriteItem(c_oSer_sts.Style_TextPr, function(){oThis.brPrs.Write_rPr(style.TextPr);}); this.bs.WriteItem(c_oSer_sts.Style_TextPr, function(){oThis.brPrs.Write_rPr(style.TextPr, null);});
//ParaPr //ParaPr
if(null != style.ParaPr) if(null != style.ParaPr)
this.bs.WriteItem(c_oSer_sts.Style_ParaPr, function(){oThis.bpPrs.Write_pPr(style.ParaPr);}); this.bs.WriteItem(c_oSer_sts.Style_ParaPr, function(){oThis.bpPrs.Write_pPr(style.ParaPr);});
...@@ -1118,7 +1214,7 @@ function BinaryStyleTableWriter(memory, doc, oNumIdMap, copyParams) ...@@ -1118,7 +1214,7 @@ function BinaryStyleTableWriter(memory, doc, oNumIdMap, copyParams)
var val = oProp.val; var val = oProp.val;
this.bs.WriteItem(c_oSerProp_tblStylePrType.Type, function(){oThis.memory.WriteByte(type);}); this.bs.WriteItem(c_oSerProp_tblStylePrType.Type, function(){oThis.memory.WriteByte(type);});
if(null != val.TextPr) if(null != val.TextPr)
this.bs.WriteItem(c_oSerProp_tblStylePrType.RunPr, function(){oThis.brPrs.Write_rPr(val.TextPr);}); this.bs.WriteItem(c_oSerProp_tblStylePrType.RunPr, function(){oThis.brPrs.Write_rPr(val.TextPr, null);});
if(null != val.ParaPr) if(null != val.ParaPr)
this.bs.WriteItem(c_oSerProp_tblStylePrType.ParPr, function(){oThis.bpPrs.Write_pPr(val.ParaPr);}); this.bs.WriteItem(c_oSerProp_tblStylePrType.ParPr, function(){oThis.bpPrs.Write_pPr(val.ParaPr);});
if(null != val.TablePr) if(null != val.TablePr)
...@@ -1129,14 +1225,15 @@ function BinaryStyleTableWriter(memory, doc, oNumIdMap, copyParams) ...@@ -1129,14 +1225,15 @@ function BinaryStyleTableWriter(memory, doc, oNumIdMap, copyParams)
this.bs.WriteItem(c_oSerProp_tblStylePrType.TcPr, function(){oThis.btblPrs.WriteCellPr(val.TableCellPr);}); this.bs.WriteItem(c_oSerProp_tblStylePrType.TcPr, function(){oThis.btblPrs.WriteCellPr(val.TableCellPr);});
}; };
}; };
function Binary_pPrWriter(memory, oNumIdMap, oBinaryHeaderFooterTableWriter) function Binary_pPrWriter(memory, oNumIdMap, oBinaryHeaderFooterTableWriter, saveParams)
{ {
this.memory = memory; this.memory = memory;
this.oNumIdMap = oNumIdMap; this.oNumIdMap = oNumIdMap;
this.saveParams = saveParams;
this.oBinaryHeaderFooterTableWriter = oBinaryHeaderFooterTableWriter; this.oBinaryHeaderFooterTableWriter = oBinaryHeaderFooterTableWriter;
this.bs = new BinaryCommonWriter(this.memory); this.bs = new BinaryCommonWriter(this.memory);
this.brPrs = new Binary_rPrWriter(this.memory); this.brPrs = new Binary_rPrWriter(this.memory, saveParams);
this.Write_pPr = function(pPr, pPr_rPr, SectPr, oDocument) this.Write_pPr = function(pPr, EndRun, SectPr, oDocument)
{ {
var oThis = this; var oThis = this;
//Стили надо писать первыми, потому что применение стиля при открытии уничтажаются настройки параграфа //Стили надо писать первыми, потому что применение стиля при открытии уничтажаются настройки параграфа
...@@ -1234,12 +1331,12 @@ function Binary_pPrWriter(memory, oNumIdMap, oBinaryHeaderFooterTableWriter) ...@@ -1234,12 +1331,12 @@ function Binary_pPrWriter(memory, oNumIdMap, oBinaryHeaderFooterTableWriter)
this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteByte(c_oSerPropLenType.Variable);
this.bs.WriteItemWithLength(function(){oThis.WriteTabs(pPr.Tabs.Tabs);}); this.bs.WriteItemWithLength(function(){oThis.WriteTabs(pPr.Tabs.Tabs);});
} }
//pPr_rPr //EndRun
if(null != pPr_rPr) if(null != EndRun && null != EndRun.Pr)
{ {
this.memory.WriteByte(c_oSerProp_pPrType.pPr_rPr); this.memory.WriteByte(c_oSerProp_pPrType.pPr_rPr);
this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteByte(c_oSerPropLenType.Variable);
this.bs.WriteItemWithLength(function(){oThis.brPrs.Write_rPr(pPr_rPr);}); this.bs.WriteItemWithLength(function(){oThis.brPrs.Write_rPr(EndRun.Pr, EndRun);});
} }
//pBdr //pBdr
if(null != pPr.Brd) if(null != pPr.Brd)
...@@ -1262,6 +1359,14 @@ function Binary_pPrWriter(memory, oNumIdMap, oBinaryHeaderFooterTableWriter) ...@@ -1262,6 +1359,14 @@ function Binary_pPrWriter(memory, oNumIdMap, oBinaryHeaderFooterTableWriter)
this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteByte(c_oSerPropLenType.Variable);
this.bs.WriteItemWithLength(function(){oThis.WriteSectPr(SectPr, oDocument);}); this.bs.WriteItemWithLength(function(){oThis.WriteSectPr(SectPr, oDocument);});
} }
if(null != pPr.PrChange && pPr.ReviewInfo)
{
var bpPrs = new Binary_pPrWriter(this.memory, this.oNumIdMap, this.oBinaryHeaderFooterTableWriter, this.saveParams);
this.memory.WriteByte(c_oSerProp_pPrType.pPrChange);
this.memory.WriteByte(c_oSerPropLenType.Variable);
this.bs.WriteItemWithLength(function(){WriteTrackRevision(oThis.bs, oThis.saveParams.trackRevisionId++, pPr.ReviewInfo, {bpPrs: bpPrs, pPr: pPr.PrChange});});
}
}; };
this.WriteInd = function(Ind) this.WriteInd = function(Ind)
{ {
...@@ -1620,11 +1725,12 @@ function Binary_pPrWriter(memory, oNumIdMap, oBinaryHeaderFooterTableWriter) ...@@ -1620,11 +1725,12 @@ function Binary_pPrWriter(memory, oNumIdMap, oBinaryHeaderFooterTableWriter)
this.bs.WriteItem(c_oSerProp_secPrPageNumType.start, function(){oThis.memory.WriteLong(PageNumType);}); this.bs.WriteItem(c_oSerProp_secPrPageNumType.start, function(){oThis.memory.WriteLong(PageNumType);});
} }
}; };
function Binary_rPrWriter(memory) function Binary_rPrWriter(memory, saveParams)
{ {
this.memory = memory; this.memory = memory;
this.saveParams = saveParams;
this.bs = new BinaryCommonWriter(this.memory); this.bs = new BinaryCommonWriter(this.memory);
this.Write_rPr = function(rPr) this.Write_rPr = function(rPr, EndRun)
{ {
var _this = this; var _this = this;
//Bold //Bold
...@@ -1875,13 +1981,31 @@ function Binary_rPrWriter(memory) ...@@ -1875,13 +1981,31 @@ function Binary_rPrWriter(memory)
rPr.TextFill.transparent = 255 - rPr.TextFill.transparent; rPr.TextFill.transparent = 255 - rPr.TextFill.transparent;
} }
} }
if (null != rPr.PrChange && null != rPr.ReviewInfo) {
var brPrs = new Binary_rPrWriter(this.memory, this.saveParams)
this.memory.WriteByte(c_oSerProp_rPrType.rPrChange);
this.memory.WriteByte(c_oSerPropLenType.Variable);
this.bs.WriteItemWithLength(function(){WriteTrackRevision(_this.bs, _this.saveParams.trackRevisionId++, rPr.ReviewInfo, {brPrs: brPrs, rPr: rPr.PrChange});});
}
if (EndRun && EndRun.ReviewInfo) {
var ReviewType = EndRun.Get_ReviewType();
if (reviewtype_Remove == ReviewType) {
this.memory.WriteByte(c_oSerProp_rPrType.Del);
this.memory.WriteByte(c_oSerPropLenType.Variable);
this.bs.WriteItemWithLength(function(){WriteTrackRevision(_this.bs, _this.saveParams.trackRevisionId++, EndRun.ReviewInfo);});
} else if (reviewtype_Add == ReviewType) {
this.memory.WriteByte(c_oSerProp_rPrType.Ins);
this.memory.WriteByte(c_oSerPropLenType.Variable);
this.bs.WriteItemWithLength(function(){WriteTrackRevision(_this.bs, _this.saveParams.trackRevisionId++, EndRun.ReviewInfo);});
}
}
}; };
}; };
function Binary_oMathWriter(memory, oMathPara) function Binary_oMathWriter(memory, oMathPara, saveParams)
{ {
this.memory = memory; this.memory = memory;
this.bs = new BinaryCommonWriter(this.memory); this.bs = new BinaryCommonWriter(this.memory);
this.brPrs = new Binary_rPrWriter(this.memory); this.brPrs = new Binary_rPrWriter(this.memory, saveParams);
this.WriteMathElem = function(item) this.WriteMathElem = function(item)
{ {
...@@ -1981,7 +2105,7 @@ function Binary_oMathWriter(memory, oMathPara) ...@@ -1981,7 +2105,7 @@ function Binary_oMathWriter(memory, oMathPara)
} }
} }
this.bs.WriteItem(c_oSer_OMathContentType.RPr, function(){oThis.brPrs.Write_rPr(props.wRPrp);}); // w:rPr this.bs.WriteItem(c_oSer_OMathContentType.RPr, function(){oThis.brPrs.Write_rPr(props.wRPrp, null);}); // w:rPr
this.bs.WriteItem(c_oSer_OMathContentType.MRPr, function(){oThis.WriteMRPr(props.mathRPrp);}); // m:rPr this.bs.WriteItem(c_oSer_OMathContentType.MRPr, function(){oThis.WriteMRPr(props.mathRPrp);}); // m:rPr
this.bs.WriteItem(c_oSer_OMathContentType.MText,function(){oThis.WriteMText(oText.toString());}); // m:t this.bs.WriteItem(c_oSer_OMathContentType.MText,function(){oThis.WriteMText(oText.toString());}); // m:t
} }
...@@ -2172,7 +2296,7 @@ function Binary_oMathWriter(memory, oMathPara) ...@@ -2172,7 +2296,7 @@ function Binary_oMathWriter(memory, oMathPara)
this.WriteCtrlPr = function(oElem) this.WriteCtrlPr = function(oElem)
{ {
var oThis = this; var oThis = this;
this.bs.WriteItem(c_oSerRunType.rPr, function(){oThis.brPrs.Write_rPr(oElem.CtrPrp);}); this.bs.WriteItem(c_oSerRunType.rPr, function(){oThis.brPrs.Write_rPr(oElem.CtrPrp, null);});
} }
this.WriteDegHide = function(DegHide) this.WriteDegHide = function(DegHide)
{ {
...@@ -2887,11 +3011,11 @@ function Binary_oMathWriter(memory, oMathPara) ...@@ -2887,11 +3011,11 @@ function Binary_oMathWriter(memory, oMathPara)
this.memory.WriteBool(ZeroWid); this.memory.WriteBool(ZeroWid);
} }
}; };
function Binary_tblPrWriter(memory, oNumIdMap) function Binary_tblPrWriter(memory, oNumIdMap, saveParams)
{ {
this.memory = memory; this.memory = memory;
this.bs = new BinaryCommonWriter(this.memory); this.bs = new BinaryCommonWriter(this.memory);
this.bpPrs = new Binary_pPrWriter(this.memory, oNumIdMap, null); this.bpPrs = new Binary_pPrWriter(this.memory, oNumIdMap, null, saveParams);
} }
Binary_tblPrWriter.prototype = Binary_tblPrWriter.prototype =
{ {
...@@ -3283,15 +3407,15 @@ function BinaryHeaderFooterTableWriter(memory, doc, oNumIdMap, oMapCommentId, sa ...@@ -3283,15 +3407,15 @@ function BinaryHeaderFooterTableWriter(memory, doc, oNumIdMap, oMapCommentId, sa
this.bs.WriteItem(c_oSerHdrFtrTypes.HdrFtr_Content, function(){dtw.WriteDocumentContent(item.Content);}); this.bs.WriteItem(c_oSerHdrFtrTypes.HdrFtr_Content, function(){dtw.WriteDocumentContent(item.Content);});
}; };
}; };
function BinaryNumberingTableWriter(memory, doc, oNumIdMap, oUsedNumIdMap) function BinaryNumberingTableWriter(memory, doc, oNumIdMap, oUsedNumIdMap, saveParams)
{ {
this.memory = memory; this.memory = memory;
this.Document = doc; this.Document = doc;
this.oNumIdMap = oNumIdMap; this.oNumIdMap = oNumIdMap;
this.oUsedNumIdMap = oUsedNumIdMap; this.oUsedNumIdMap = oUsedNumIdMap;
this.bs = new BinaryCommonWriter(this.memory); this.bs = new BinaryCommonWriter(this.memory);
this.bpPrs = new Binary_pPrWriter(this.memory, null != this.oUsedNumIdMap ? this.oUsedNumIdMap : this.oNumIdMap, null); this.bpPrs = new Binary_pPrWriter(this.memory, null != this.oUsedNumIdMap ? this.oUsedNumIdMap : this.oNumIdMap, null, saveParams);
this.brPrs = new Binary_rPrWriter(this.memory); this.brPrs = new Binary_rPrWriter(this.memory, saveParams);
this.Write = function() this.Write = function()
{ {
var oThis = this; var oThis = this;
...@@ -3456,7 +3580,7 @@ function BinaryNumberingTableWriter(memory, doc, oNumIdMap, oUsedNumIdMap) ...@@ -3456,7 +3580,7 @@ function BinaryNumberingTableWriter(memory, doc, oNumIdMap, oUsedNumIdMap)
{ {
this.memory.WriteByte(c_oSerNumTypes.lvl_TextPr); this.memory.WriteByte(c_oSerNumTypes.lvl_TextPr);
this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteByte(c_oSerPropLenType.Variable);
this.bs.WriteItemWithLength(function(){oThis.brPrs.Write_rPr(lvl.TextPr);}); this.bs.WriteItemWithLength(function(){oThis.brPrs.Write_rPr(lvl.TextPr, null);});
} }
}; };
this.WriteLevelText = function(aText) this.WriteLevelText = function(aText)
...@@ -3489,10 +3613,10 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa ...@@ -3489,10 +3613,10 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa
this.Document = doc; this.Document = doc;
this.oNumIdMap = oNumIdMap; this.oNumIdMap = oNumIdMap;
this.bs = new BinaryCommonWriter(this.memory); this.bs = new BinaryCommonWriter(this.memory);
this.btblPrs = new Binary_tblPrWriter(this.memory, oNumIdMap); this.btblPrs = new Binary_tblPrWriter(this.memory, oNumIdMap, saveParams);
this.bpPrs = new Binary_pPrWriter(this.memory, oNumIdMap, oBinaryHeaderFooterTableWriter); this.bpPrs = new Binary_pPrWriter(this.memory, oNumIdMap, oBinaryHeaderFooterTableWriter, saveParams);
this.brPrs = new Binary_rPrWriter(this.memory); this.brPrs = new Binary_rPrWriter(this.memory, saveParams);
this.boMaths = new Binary_oMathWriter(this.memory); this.boMaths = new Binary_oMathWriter(this.memory, null, saveParams);
this.oMapCommentId = oMapCommentId; this.oMapCommentId = oMapCommentId;
this.copyParams = copyParams; this.copyParams = copyParams;
this.saveParams = saveParams; this.saveParams = saveParams;
...@@ -3567,23 +3691,13 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa ...@@ -3567,23 +3691,13 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa
//pPr //pPr
var ParaStyle = par.Style_Get(); var ParaStyle = par.Style_Get();
var pPr = par.Pr; var pPr = par.Pr;
if(null != pPr || null != ParaStyle || pPr_rPr) if(null != pPr || null != ParaStyle)
{ {
if(null == pPr) if(null == pPr)
pPr = {}; pPr = {};
//проверяем что pPr_rPr не пустые var EndRun = par.Get_ParaEndRun();
var pPr_rPr = null;
var propCount = 0;
for(var prop in par.TextPr.Value)
{
if(par.TextPr.Value.hasOwnProperty(prop))
{
pPr_rPr = par.TextPr.Value;
break;
}
}
this.memory.WriteByte(c_oSerParType.pPr); this.memory.WriteByte(c_oSerParType.pPr);
this.bs.WriteItemWithLength(function(){oThis.bpPrs.Write_pPr(pPr, pPr_rPr, par.Get_SectionPr(), oThis.Document);}); this.bs.WriteItemWithLength(function(){oThis.bpPrs.Write_pPr(pPr, EndRun, par.Get_SectionPr(), oThis.Document);});
} }
//Content //Content
if(null != par.Content) if(null != par.Content)
...@@ -3621,8 +3735,13 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa ...@@ -3621,8 +3735,13 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa
switch ( item.Type ) switch ( item.Type )
{ {
case para_Run: case para_Run:
//if (item.Content.length > 0) var ReviewType = item.Get_ReviewType();
this.WriteRun(item, bUseSelection); if (reviewtype_Remove == ReviewType || reviewtype_Add == ReviewType) {
var recordType = reviewtype_Remove == ReviewType ? c_oSerParType.Del : c_oSerParType.Ins;
this.bs.WriteItem(recordType, function () {WriteTrackRevision(oThis.bs, oThis.saveParams.trackRevisionId++, item.ReviewInfo, {bdtw: oThis, run: item, bUseSelection: bUseSelection, ReviewType: ReviewType});});
} else {
this.WriteRun(item, bUseSelection, false);
}
break; break;
case para_Field: case para_Field:
if(fieldtype_MERGEFIELD == item.FieldType){ if(fieldtype_MERGEFIELD == item.FieldType){
...@@ -3754,11 +3873,15 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa ...@@ -3754,11 +3873,15 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa
oThis.WriteParagraphContent(oHyperlink, bUseSelection, false); oThis.WriteParagraphContent(oHyperlink, bUseSelection, false);
}); });
} }
this.WriteText = function (sCurText) this.WriteText = function (sCurText, delText)
{ {
if("" != sCurText) if("" != sCurText)
{ {
if (delText) {
this.memory.WriteByte(c_oSerRunType.delText);
} else {
this.memory.WriteByte(c_oSerRunType.run); this.memory.WriteByte(c_oSerRunType.run);
}
this.memory.WriteString2(sCurText.toString()); this.memory.WriteString2(sCurText.toString());
sCurText = ""; sCurText = "";
} }
...@@ -3769,14 +3892,14 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa ...@@ -3769,14 +3892,14 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa
this.bs.WriteItem(c_oSerParType.Run, function () { this.bs.WriteItem(c_oSerParType.Run, function () {
//rPr //rPr
if (null != oRun && null != oRun.Pr) if (null != oRun && null != oRun.Pr)
oThis.bs.WriteItem(c_oSerRunType.rPr, function () { oThis.brPrs.Write_rPr(oRun.Pr); }); oThis.bs.WriteItem(c_oSerRunType.rPr, function () { oThis.brPrs.Write_rPr(oRun.Pr, null); });
//Content //Content
oThis.bs.WriteItem(c_oSerRunType.Content, function () { oThis.bs.WriteItem(c_oSerRunType.Content, function () {
fWriter(); fWriter();
}); });
}); });
} }
this.WriteRun = function (oRun, bUseSelection) { this.WriteRun = function (oRun, bUseSelection, delText) {
//Paragraph.Selection последний элемент входит в выделение //Paragraph.Selection последний элемент входит в выделение
//Run.Selection последний элемент не входит в выделение //Run.Selection последний элемент не входит в выделение
var oThis = this; var oThis = this;
...@@ -3822,10 +3945,10 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa ...@@ -3822,10 +3945,10 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa
this.bs.WriteItem(c_oSerParType.Run, function () { this.bs.WriteItem(c_oSerParType.Run, function () {
//rPr //rPr
if (null != oRun.Pr) if (null != oRun.Pr)
oThis.bs.WriteItem(c_oSerRunType.rPr, function () { oThis.brPrs.Write_rPr(oRun.Pr); }); oThis.bs.WriteItem(c_oSerRunType.rPr, function () { oThis.brPrs.Write_rPr(oRun.Pr, null); });
//Content //Content
oThis.bs.WriteItem(c_oSerRunType.Content, function () { oThis.bs.WriteItem(c_oSerRunType.Content, function () {
oThis.WriteRunContent(oRun, elem.nStart, elem.nEnd); oThis.WriteRunContent(oRun, elem.nStart, elem.nEnd, delText);
}); });
}); });
} }
...@@ -3834,7 +3957,7 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa ...@@ -3834,7 +3957,7 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa
this.bs.WriteItem(c_oSerParType.FldSimple, function(){oThis.WriteFldSimple(Instr, function(){ this.bs.WriteItem(c_oSerParType.FldSimple, function(){oThis.WriteFldSimple(Instr, function(){
if(null != elem.pageNum.String && "string" == typeof(elem.pageNum.String)){ if(null != elem.pageNum.String && "string" == typeof(elem.pageNum.String)){
oThis.WriteRun2(function () { oThis.WriteRun2(function () {
oThis.WriteText(elem.pageNum.String); oThis.WriteText(elem.pageNum.String, delText);
}, oRun); }, oRun);
} }
});}); });});
...@@ -3851,7 +3974,7 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa ...@@ -3851,7 +3974,7 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa
//Content //Content
this.bs.WriteItem(c_oSer_FldSimpleType.Content, fWriteContent); this.bs.WriteItem(c_oSer_FldSimpleType.Content, fWriteContent);
}; };
this.WriteRunContent = function (oRun, nStart, nEnd) this.WriteRunContent = function (oRun, nStart, nEnd, delText)
{ {
var oThis = this; var oThis = this;
...@@ -3869,12 +3992,12 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa ...@@ -3869,12 +3992,12 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa
sCurText += " "; sCurText += " ";
break; break;
case para_Tab: case para_Tab:
sCurText = this.WriteText(sCurText); sCurText = this.WriteText(sCurText, delText);
oThis.memory.WriteByte(c_oSerRunType.tab); oThis.memory.WriteByte(c_oSerRunType.tab);
oThis.memory.WriteLong(c_oSerPropLenType.Null); oThis.memory.WriteLong(c_oSerPropLenType.Null);
break; break;
case para_NewLine: case para_NewLine:
sCurText = this.WriteText(sCurText); sCurText = this.WriteText(sCurText, delText);
if (break_Page == item.BreakType) if (break_Page == item.BreakType)
oThis.memory.WriteByte(c_oSerRunType.pagebreak); oThis.memory.WriteByte(c_oSerRunType.pagebreak);
else else
...@@ -3882,7 +4005,7 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa ...@@ -3882,7 +4005,7 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa
oThis.memory.WriteLong(c_oSerPropLenType.Null); oThis.memory.WriteLong(c_oSerPropLenType.Null);
break; break;
case para_Drawing: case para_Drawing:
sCurText = this.WriteText(sCurText); sCurText = this.WriteText(sCurText, delText);
//if (item.Extent && item.GraphicObj && item.GraphicObj.spPr && item.GraphicObj.spPr.xfrm) { //if (item.Extent && item.GraphicObj && item.GraphicObj.spPr && item.GraphicObj.spPr.xfrm) {
// item.Extent.W = item.GraphicObj.spPr.xfrm.extX; // item.Extent.W = item.GraphicObj.spPr.xfrm.extX;
// item.Extent.H = item.GraphicObj.spPr.xfrm.extY; // item.Extent.H = item.GraphicObj.spPr.xfrm.extY;
...@@ -3895,7 +4018,7 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa ...@@ -3895,7 +4018,7 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa
break; break;
} }
} }
sCurText = this.WriteText(sCurText); sCurText = this.WriteText(sCurText, delText);
}; };
this.WriteImage = function(img) this.WriteImage = function(img)
{ {
...@@ -4384,10 +4507,9 @@ function BinaryCommentsTableWriter(memory, doc, oMapCommentId) ...@@ -4384,10 +4507,9 @@ function BinaryCommentsTableWriter(memory, doc, oMapCommentId)
} }
if(null != comment.m_sTime && "" != comment.m_sTime) if(null != comment.m_sTime && "" != comment.m_sTime)
{ {
var oDate = new Date(comment.m_sTime - 0); var dateStr = new Date(comment.m_sTime - 0).toISOString().slice(0, 19) + 'Z';
this.memory.WriteByte(c_oSer_CommentsType.Date); this.memory.WriteByte(c_oSer_CommentsType.Date);
this.memory.WriteString2(this.DateToISO8601(oDate)); this.memory.WriteString2(dateStr);
} }
if(null != comment.m_bSolved) if(null != comment.m_bSolved)
{ {
...@@ -4402,13 +4524,6 @@ function BinaryCommentsTableWriter(memory, doc, oMapCommentId) ...@@ -4402,13 +4524,6 @@ function BinaryCommentsTableWriter(memory, doc, oMapCommentId)
{ {
this.bs.WriteItem(c_oSer_CommentsType.Replies, function(){oThis.WriteReplies(comment.m_aReplies);}); this.bs.WriteItem(c_oSer_CommentsType.Replies, function(){oThis.WriteReplies(comment.m_aReplies);});
} }
};
this.DateToISO8601 = function(d)
{
function pad(n){return n < 10 ? '0' + n : n;}
return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' +
pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' +
pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds())+'Z';
}; };
this.WriteReplies = function(aComments) this.WriteReplies = function(aComments)
{ {
...@@ -5593,7 +5708,7 @@ function BinaryStyleTableReader(doc, oReadResult, stream) ...@@ -5593,7 +5708,7 @@ function BinaryStyleTableReader(doc, oReadResult, stream)
else if(c_oSer_st.DefrPr == type) else if(c_oSer_st.DefrPr == type)
{ {
var TextPr = new CTextPr(); var TextPr = new CTextPr();
res = this.brPrr.Read(length, TextPr ); res = this.brPrr.Read(length, TextPr, null);
this.oReadResult.DefrPr = TextPr; this.oReadResult.DefrPr = TextPr;
} }
else else
...@@ -5659,7 +5774,7 @@ function BinaryStyleTableReader(doc, oReadResult, stream) ...@@ -5659,7 +5774,7 @@ function BinaryStyleTableReader(doc, oReadResult, stream)
else if(c_oSer_sts.Style_TextPr == type) else if(c_oSer_sts.Style_TextPr == type)
{ {
var oNewTextPr = new CTextPr(); var oNewTextPr = new CTextPr();
res = this.brPrr.Read(length, oNewTextPr); res = this.brPrr.Read(length, oNewTextPr, null);
style.Set_TextPr(oNewTextPr); style.Set_TextPr(oNewTextPr);
} }
else if(c_oSer_sts.Style_ParaPr == type) else if(c_oSer_sts.Style_ParaPr == type)
...@@ -5771,7 +5886,7 @@ function BinaryStyleTableReader(doc, oReadResult, stream) ...@@ -5771,7 +5886,7 @@ function BinaryStyleTableReader(doc, oReadResult, stream)
oRes.nType = this.stream.GetUChar(); oRes.nType = this.stream.GetUChar();
else if(c_oSerProp_tblStylePrType.RunPr == type) else if(c_oSerProp_tblStylePrType.RunPr == type)
{ {
res = this.brPrr.Read(length, oNewTableStylePr.TextPr); res = this.brPrr.Read(length, oNewTableStylePr.TextPr, null);
} }
else if(c_oSerProp_tblStylePrType.ParPr == type) else if(c_oSerProp_tblStylePrType.ParPr == type)
{ {
...@@ -5899,9 +6014,18 @@ function Binary_pPrReader(doc, oReadResult, stream) ...@@ -5899,9 +6014,18 @@ function Binary_pPrReader(doc, oReadResult, stream)
case c_oSerProp_pPrType.pPr_rPr: case c_oSerProp_pPrType.pPr_rPr:
if(null != this.paragraph) if(null != this.paragraph)
{ {
var oNewParaTextPr = new CTextPr(); var EndRun = this.paragraph.Get_ParaEndRun();
res = this.brPrr.Read(length, oNewParaTextPr); var rPr = EndRun.Pr;
this.paragraph.TextPr.Apply_TextPr(oNewParaTextPr); res = this.brPrr.Read(length, rPr, EndRun);
EndRun.Set_Pr(rPr);
var trackRevision = this.brPrr.trackRevision;
if (trackRevision) {
if(trackRevision.del) {
EndRun.Set_ReviewTypeWithInfo(reviewtype_Remove, trackRevision.del);
} else if(trackRevision.ins) {
EndRun.Set_ReviewTypeWithInfo(reviewtype_Add, trackRevision.ins);
}
}
} }
else else
res = c_oSerConstants.ReadUnknown; res = c_oSerConstants.ReadUnknown;
...@@ -5925,6 +6049,22 @@ function Binary_pPrReader(doc, oReadResult, stream) ...@@ -5925,6 +6049,22 @@ function Binary_pPrReader(doc, oReadResult, stream)
else else
res = c_oSerConstants.ReadUnknown; res = c_oSerConstants.ReadUnknown;
break; break;
case c_oSerProp_pPrType.numPr_Ins:
res = c_oSerConstants.ReadUnknown;//todo
break;
case c_oSerProp_pPrType.pPrChange:
if(null != this.paragraph && this.Document instanceof CDocument) {
var pPrChange = new CParaPr();
var reviewInfo = new CReviewInfo();
var bpPrr = new Binary_pPrReader(this.Document, this.oReadResult, this.stream);
res = this.bcr.Read1(length, function(t, l){
return ReadTrackRevision(t, l, oThis.stream, reviewInfo, {bpPrr: bpPrr, pPr: pPrChange});
});
this.paragraph.Set_PrChange(pPrChange, reviewInfo);
} else {
res = c_oSerConstants.ReadUnknown;
}
break;
default: default:
res = c_oSerConstants.ReadUnknown; res = c_oSerConstants.ReadUnknown;
break; break;
...@@ -6225,6 +6365,8 @@ function Binary_pPrReader(doc, oReadResult, stream) ...@@ -6225,6 +6365,8 @@ function Binary_pPrReader(doc, oReadResult, stream)
return oThis.Read_pageNumType(t, l, oSectPr); return oThis.Read_pageNumType(t, l, oSectPr);
}); });
} }
else if( c_oSerProp_secPrType.sectPrChange === type )
res = c_oSerConstants.ReadUnknown;//todo
else else
res = c_oSerConstants.ReadUnknown; res = c_oSerConstants.ReadUnknown;
return res; return res;
...@@ -6362,18 +6504,20 @@ function Binary_rPrReader(doc, oReadResult, stream) ...@@ -6362,18 +6504,20 @@ function Binary_rPrReader(doc, oReadResult, stream)
this.oReadResult = oReadResult; this.oReadResult = oReadResult;
this.stream = stream; this.stream = stream;
this.rPr; this.rPr;
this.trackRevision = null;
this.bcr = new Binary_CommonReader(this.stream); this.bcr = new Binary_CommonReader(this.stream);
this.Read = function(stLen, rPr) this.Read = function(stLen, rPr, run)
{ {
this.rPr = rPr; this.rPr = rPr;
this.trackRevision = null;
var oThis = this; var oThis = this;
var res = c_oSerConstants.ReadOk; var res = c_oSerConstants.ReadOk;
res = this.bcr.Read2(stLen, function(type, length){ res = this.bcr.Read2(stLen, function(type, length){
return oThis.ReadContent(type, length); return oThis.ReadContent(type, length, run);
}); });
return res; return res;
}; };
this.ReadContent = function(type, length) this.ReadContent = function(type, length, run)
{ {
var res = c_oSerConstants.ReadOk; var res = c_oSerConstants.ReadOk;
var oThis = this; var oThis = this;
...@@ -6545,6 +6689,29 @@ function Binary_rPrReader(doc, oReadResult, stream) ...@@ -6545,6 +6689,29 @@ function Binary_rPrReader(doc, oReadResult, stream)
else else
res = c_oSerConstants.ReadUnknown; res = c_oSerConstants.ReadUnknown;
break; break;
case c_oSerProp_rPrType.Del:
this.trackRevision = {del: new CReviewInfo()};
res = this.bcr.Read1(length, function(t, l){
return ReadTrackRevision(t, l, oThis.stream, oThis.trackRevision.del, null);
});
break;
case c_oSerProp_rPrType.Ins:
this.trackRevision = {ins: new CReviewInfo()};
res = this.bcr.Read1(length, function(t, l){
return ReadTrackRevision(t, l, oThis.stream, oThis.trackRevision.ins, null);
});
break;
case c_oSerProp_rPrType.rPrChange:
var rPrChange = new CParaPr();
var reviewInfo = new CReviewInfo();
var brPrr = new Binary_rPrReader(this.Document, this.oReadResult, this.stream);
res = this.bcr.Read1(length, function(t, l){
return ReadTrackRevision(t, l, oThis.stream, reviewInfo, {brPrr: brPrr, rPr: rPrChange});
});
if (run) {
run.Set_PrChange(rPrChange, reviewInfo);
}
break;
default: default:
res = c_oSerConstants.ReadUnknown; res = c_oSerConstants.ReadUnknown;
break; break;
...@@ -6682,6 +6849,8 @@ Binary_tblPrReader.prototype = ...@@ -6682,6 +6849,8 @@ Binary_tblPrReader.prototype =
} }
else if( c_oSerProp_tblPrType.Style === type ) else if( c_oSerProp_tblPrType.Style === type )
this.oReadResult.tableStyles.push({pPr: table, style: this.stream.GetString2LE(length)}); this.oReadResult.tableStyles.push({pPr: table, style: this.stream.GetString2LE(length)});
else if( c_oSerProp_tblPrType.tblPrChange === type )
res = c_oSerConstants.ReadUnknown;//todo
else else
res = c_oSerConstants.ReadUnknown; res = c_oSerConstants.ReadUnknown;
} }
...@@ -6880,6 +7049,15 @@ Binary_tblPrReader.prototype = ...@@ -6880,6 +7049,15 @@ Binary_tblPrReader.prototype =
{ {
Pr.TableHeader = (this.stream.GetUChar() != 0); Pr.TableHeader = (this.stream.GetUChar() != 0);
} }
else if( c_oSerProp_rowPrType.Del === type ){
res = c_oSerConstants.ReadUnknown;//todo
}
else if( c_oSerProp_rowPrType.Ins === type ){
res = c_oSerConstants.ReadUnknown;//todo
}
else if( c_oSerProp_rowPrType.trPrChange === type ){
res = c_oSerConstants.ReadUnknown;//todo
}
else else
res = c_oSerConstants.ReadUnknown; res = c_oSerConstants.ReadUnknown;
return res; return res;
...@@ -7007,6 +7185,18 @@ Binary_tblPrReader.prototype = ...@@ -7007,6 +7185,18 @@ Binary_tblPrReader.prototype =
{ {
Pr.VMerge = this.stream.GetUChar(); Pr.VMerge = this.stream.GetUChar();
} }
else if( c_oSerProp_cellPrType.CellDel === type ){
res = c_oSerConstants.ReadUnknown;//todo
}
else if( c_oSerProp_cellPrType.CellIns === type ){
res = c_oSerConstants.ReadUnknown;//todo
}
else if( c_oSerProp_cellPrType.CellMerge === type ){
res = c_oSerConstants.ReadUnknown;//todo
}
else if( c_oSerProp_cellPrType.tcPrChange === type ){
res = c_oSerConstants.ReadUnknown;//todo
}
else else
res = c_oSerConstants.ReadUnknown; res = c_oSerConstants.ReadUnknown;
return res; return res;
...@@ -7240,7 +7430,7 @@ function Binary_NumberingTableReader(doc, oReadResult, stream) ...@@ -7240,7 +7430,7 @@ function Binary_NumberingTableReader(doc, oReadResult, stream)
} }
else if ( c_oSerNumTypes.lvl_TextPr === type ) else if ( c_oSerNumTypes.lvl_TextPr === type )
{ {
res = this.brPrr.Read(length, oNewLvl.TextPr); res = this.brPrr.Read(length, oNewLvl.TextPr, null);
} }
else else
res = c_oSerConstants.ReadUnknown; res = c_oSerConstants.ReadUnknown;
...@@ -7494,9 +7684,8 @@ function Binary_DocumentTableReader(doc, oReadResult, openParams, stream, bAllow ...@@ -7494,9 +7684,8 @@ function Binary_DocumentTableReader(doc, oReadResult, openParams, stream, bAllow
var oThis = this; var oThis = this;
if ( c_oSerParType.pPr === type ) if ( c_oSerParType.pPr === type )
{ {
var oNewParaPr = new CParaPr(); var oNewParaPr = paragraph.Pr;
res = this.bpPrr.Read(length, oNewParaPr, paragraph); res = this.bpPrr.Read(length, oNewParaPr, paragraph);
paragraph.Pr = oNewParaPr;
this.oReadResult.aPostOpenStyleNumCallbacks.push(function(){ this.oReadResult.aPostOpenStyleNumCallbacks.push(function(){
paragraph.Set_Pr(oNewParaPr); paragraph.Set_Pr(oNewParaPr);
}); });
...@@ -7656,6 +7845,32 @@ function Binary_DocumentTableReader(doc, oReadResult, openParams, stream, bAllow ...@@ -7656,6 +7845,32 @@ function Binary_DocumentTableReader(doc, oReadResult, openParams, stream, bAllow
if (para_Field == nFieldType && editor) if (para_Field == nFieldType && editor)
editor.WordControl.m_oLogicDocument.Register_Field(oField); editor.WordControl.m_oLogicDocument.Register_Field(oField);
} }
} else if (c_oSerParType.Del == type) {
var reviewInfo = new CReviewInfo();
var startPos = oParStruct.getCurPos();
res = this.bcr.Read1(length, function(t, l){
return ReadTrackRevision(t, l, oThis.stream, reviewInfo, {parStruct: oParStruct, bdtr: oThis});
});
var endPos = oParStruct.getCurPos();
for(var i = startPos; i < endPos; ++i) {
var elem = oParStruct.GetFromContent(i);
if(elem && elem.Set_ReviewTypeWithInfo) {
elem.Set_ReviewTypeWithInfo(reviewtype_Remove, reviewInfo);
}
}
} else if (c_oSerParType.Ins == type) {
var reviewInfo = new CReviewInfo();
var startPos = oParStruct.getCurPos();
res = this.bcr.Read1(length, function(t, l){
return ReadTrackRevision(t, l, oThis.stream, reviewInfo, {parStruct: oParStruct, bdtr: oThis});
});
var endPos = oParStruct.getCurPos();
for(var i = startPos; i < endPos; ++i) {
var elem = oParStruct.GetFromContent(i);
if(elem && elem.Set_ReviewTypeWithInfo) {
elem.Set_ReviewTypeWithInfo(reviewtype_Add, reviewInfo);
}
}
} }
else else
res = c_oSerConstants.ReadUnknown; res = c_oSerConstants.ReadUnknown;
...@@ -7738,8 +7953,8 @@ function Binary_DocumentTableReader(doc, oReadResult, openParams, stream, bAllow ...@@ -7738,8 +7953,8 @@ function Binary_DocumentTableReader(doc, oReadResult, openParams, stream, bAllow
var oThis = this; var oThis = this;
if (c_oSerRunType.rPr === type) if (c_oSerRunType.rPr === type)
{ {
var rPr = new CTextPr(); var rPr = oRunObject.Pr;
res = this.brPrr.Read(length, rPr); res = this.brPrr.Read(length, rPr, oRunObject);
oRunObject.Set_Pr(rPr); oRunObject.Set_Pr(rPr);
} }
else if (c_oSerRunType.Content === type) else if (c_oSerRunType.Content === type)
...@@ -7758,7 +7973,7 @@ function Binary_DocumentTableReader(doc, oReadResult, openParams, stream, bAllow ...@@ -7758,7 +7973,7 @@ function Binary_DocumentTableReader(doc, oReadResult, openParams, stream, bAllow
var res = c_oSerConstants.ReadOk; var res = c_oSerConstants.ReadOk;
var oThis = this; var oThis = this;
var oNewElem = null; var oNewElem = null;
if (c_oSerRunType.run === type) if (c_oSerRunType.run === type || c_oSerRunType.delText === type)
{ {
var text = this.stream.GetString2LE(length); var text = this.stream.GetString2LE(length);
if(null != this.openParams && true == this.openParams.checkFileSize) if(null != this.openParams && true == this.openParams.checkFileSize)
...@@ -8590,6 +8805,8 @@ function Binary_DocumentTableReader(doc, oReadResult, openParams, stream, bAllow ...@@ -8590,6 +8805,8 @@ function Binary_DocumentTableReader(doc, oReadResult, openParams, stream, bAllow
cell.Content.Internal_Content_Remove(0, 1); cell.Content.Internal_Content_Remove(0, 1);
} }
//если 0 == oCellContent.length в ячейке остается параграф который был там при создании. //если 0 == oCellContent.length в ячейке остается параграф который был там при создании.
} else if( c_oSerDocTableType.tblGridChange === type ) {
res = c_oSerConstants.ReadUnknown;//todo
} }
else else
res = c_oSerConstants.ReadUnknown; res = c_oSerConstants.ReadUnknown;
...@@ -8608,8 +8825,8 @@ function Binary_oMathReader(stream, oReadResult) ...@@ -8608,8 +8825,8 @@ function Binary_oMathReader(stream, oReadResult)
var oThis = this; var oThis = this;
if (c_oSerRunType.rPr === type) if (c_oSerRunType.rPr === type)
{ {
var rPr = new CTextPr(); var rPr = oRunObject.Pr;
res = this.brPrr.Read(length, rPr); res = this.brPrr.Read(length, rPr, oRunObject);
oRunObject.Set_Pr(rPr); oRunObject.Set_Pr(rPr);
} }
else if (c_oSerRunType.Content === type) else if (c_oSerRunType.Content === type)
...@@ -9301,7 +9518,7 @@ function Binary_oMathReader(stream, oReadResult) ...@@ -9301,7 +9518,7 @@ function Binary_oMathReader(stream, oReadResult)
if (c_oSerRunType.rPr === type) if (c_oSerRunType.rPr === type)
{ {
var MathTextRPr = new CTextPr(); var MathTextRPr = new CTextPr();
res = this.brPrr.Read(length, MathTextRPr); res = this.brPrr.Read(length, MathTextRPr, null);
props.ctrPrp = MathTextRPr; props.ctrPrp = MathTextRPr;
} }
else else
...@@ -10117,8 +10334,8 @@ function Binary_oMathReader(stream, oReadResult) ...@@ -10117,8 +10334,8 @@ function Binary_oMathReader(stream, oReadResult)
else if (c_oSer_OMathContentType.RPr === type) else if (c_oSer_OMathContentType.RPr === type)
{ {
//<w:rPr> //<w:rPr>
var rPr = new CTextPr(); var rPr = oMRun.Pr;
res = this.brPrr.Read(length, rPr); res = this.brPrr.Read(length, rPr, oMRun);
oMRun.Set_Pr(rPr); oMRun.Set_Pr(rPr);
} }
else if (c_oSer_OMathContentType.pagebreak === type) else if (c_oSer_OMathContentType.pagebreak === type)
...@@ -11165,9 +11382,12 @@ function Binary_CommentsTableReader(doc, oReadResult, stream, oComments) ...@@ -11165,9 +11382,12 @@ function Binary_CommentsTableReader(doc, oReadResult, stream, oComments)
oNewImage.UserId = this.stream.GetString2LE(length); oNewImage.UserId = this.stream.GetString2LE(length);
else if ( c_oSer_CommentsType.Date === type ) else if ( c_oSer_CommentsType.Date === type )
{ {
var oDate = this.Iso8601ToDate(this.stream.GetString2LE(length)); var dateStr = this.stream.GetString2LE(length);
if(null != oDate) var dateMs = Date.parse(dateStr);
oNewImage.Date = oDate.getTime() + ""; if (isNaN(dateMs)) {
dateMs = new Date().getTime();
}
oNewImage.Date = dateMs + "";
} }
else if ( c_oSer_CommentsType.Text === type ) else if ( c_oSer_CommentsType.Text === type )
oNewImage.Text = this.stream.GetString2LE(length); oNewImage.Text = this.stream.GetString2LE(length);
...@@ -11183,33 +11403,6 @@ function Binary_CommentsTableReader(doc, oReadResult, stream, oComments) ...@@ -11183,33 +11403,6 @@ function Binary_CommentsTableReader(doc, oReadResult, stream, oComments)
else else
res = c_oSerConstants.ReadUnknown; res = c_oSerConstants.ReadUnknown;
return res; return res;
};
this.Iso8601ToDate = function(sDate)
{
var numericKeys = [ 1, 4, 5, 6, 7, 10, 11 ];
var minutesOffset = 0;
var struct;
if ((struct = /^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/.exec(sDate))) {
// avoid NaN timestamps caused by “undefined” values being passed to Date.UTC
for (var i = 0, k; (k = numericKeys[i]); ++i) {
struct[k] = +struct[k] || 0;
}
// allow undefined days and months
struct[2] = (+struct[2] || 1) - 1;
struct[3] = +struct[3] || 1;
if (struct[8] !== 'Z' && struct[9] !== undefined) {
minutesOffset = struct[10] * 60 + struct[11];
if (struct[9] === '+') {
minutesOffset = 0 - minutesOffset;
}
}
return new Date(Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + minutesOffset, struct[6], struct[7]));
}
return null;
}; };
this.ReadReplies = function(type, length, Replies) this.ReadReplies = function(type, length, Replies)
{ {
...@@ -11875,5 +12068,8 @@ OpenParStruct.prototype = { ...@@ -11875,5 +12068,8 @@ OpenParStruct.prototype = {
commitAll: function () { commitAll: function () {
while (this.commitElem()) while (this.commitElem())
; ;
},
getCurPos: function(){
return this.cur.pos;
} }
} }
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment