Commit 5e416de1 authored by Igor.Zotov's avatar Igor.Zotov

при copy/paste пользую функцию Get_SelectedContent() для получения...

при copy/paste пользую функцию Get_SelectedContent() для получения заселекченного контента + добавил функцию для получения отдельно бинарника(без полчения html)

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@59019 954022d7-b5bf-4e40-9824-e11837661b57
parent 3913601a
...@@ -331,15 +331,21 @@ function Editor_Copy(api, bCut) ...@@ -331,15 +331,21 @@ function Editor_Copy(api, bCut)
} }
*/ */
}; };
function CopyProcessor(api, ElemToSelect) function CopyProcessor(api, ElemToSelect, onlyBinaryCopy)
{ {
this.api = api; this.api = api;
this.oDocument = api.WordControl.m_oLogicDocument; this.oDocument = api.WordControl.m_oLogicDocument;
this.oBinaryFileWriter = new BinaryFileWriter(this.oDocument); this.oBinaryFileWriter = new BinaryFileWriter(this.oDocument);
this.fontsArray = api.FontLoader.fontInfos; this.fontsArray = api.FontLoader.fontInfos;
this.ElemToSelect = ElemToSelect; this.ElemToSelect = ElemToSelect;
if(!onlyBinaryCopy)
{
this.Ul = document.createElement( "ul" ); this.Ul = document.createElement( "ul" );
this.Ol = document.createElement( "ol" ); this.Ol = document.createElement( "ol" );
}
this.onlyBinaryCopy = onlyBinaryCopy;
this.Para; this.Para;
this.bOccurEndPar; this.bOccurEndPar;
this.oCurHyperlink = null; this.oCurHyperlink = null;
...@@ -398,9 +404,9 @@ CopyProcessor.prototype = ...@@ -398,9 +404,9 @@ CopyProcessor.prototype =
{ {
//pPr //pPr
var apPr = []; var apPr = [];
var Def_pPr = this.oDocument.Styles.Default.ParaPr; var Def_pPr = this.oDocument.Styles ? this.oDocument.Styles.Default.ParaPr : null;
var Item_pPr = Item.CompiledPr.Pr.ParaPr; var Item_pPr = Item.CompiledPr && Item.CompiledPr.Pr && Item.CompiledPr.Pr.ParaPr ? Item.CompiledPr.Pr.ParaPr : Item.Pr;
if(Item_pPr) if(Item_pPr && Def_pPr)
{ {
//Ind //Ind
if(Def_pPr.Ind.Left != Item_pPr.Ind.Left) if(Def_pPr.Ind.Left != Item_pPr.Ind.Left)
...@@ -671,14 +677,20 @@ CopyProcessor.prototype = ...@@ -671,14 +677,20 @@ CopyProcessor.prototype =
if(ParaStart < 0) if(ParaStart < 0)
ParaStart = 0; ParaStart = 0;
for (var i = ParaStart; i <= ParaEnd; i++) { for (var i = 0; i < Container.Content.length; i++) {
var item = Container.Content[i]; var item = Container.Content[i];
if (para_Run == item.Type) { if (para_Run == item.Type) {
var sRunContent = this.CopyRun(item, bUseSelection); var sRunContent = this.CopyRun(item, bUseSelection);
if(sRunContent) if(sRunContent)
{ {
sRes += "<span"; sRes += "<span";
var oStyle = this.parse_para_TextPr(item.CompiledPr);
var oStyle;
if(g_bIsDocumentCopyPaste)
oStyle = this.parse_para_TextPr(item.Get_CompiledTextPr());
else
oStyle = this.parse_para_TextPr(item.Pr);
if (oStyle && oStyle.style) if (oStyle && oStyle.style)
sRes += " style=\"" + oStyle.style + "\""; sRes += " style=\"" + oStyle.style + "\"";
sRes += ">"; sRes += ">";
...@@ -986,7 +998,7 @@ CopyProcessor.prototype = ...@@ -986,7 +998,7 @@ CopyProcessor.prototype =
if("" != tcStyle) if("" != tcStyle)
tc.setAttribute("style", tcStyle); tc.setAttribute("style", tcStyle);
//Content //Content
this.CopyDocument(tc, cell.Content, false); this.CopyDocument2(tc, cell.Content, false);
tr.appendChild(tc); tr.appendChild(tc);
}, },
...@@ -997,12 +1009,15 @@ CopyProcessor.prototype = ...@@ -997,12 +1009,15 @@ CopyProcessor.prototype =
elems = {gridStart: 0, gridEnd: table.TableGrid.length - 1, indexStart: null, indexEnd: null, after: null, before: null, cells: row.Content}; elems = {gridStart: 0, gridEnd: table.TableGrid.length - 1, indexStart: null, indexEnd: null, after: null, before: null, cells: row.Content};
var tr = document.createElement( "tr" ); var tr = document.createElement( "tr" );
//Pr //Pr
table.Internal_RecalculateGrid();
var gridSum = table.TableSumGrid; var gridSum = table.TableSumGrid;
var trStyle = ""; var trStyle = "";
var nGridBefore = 0; var nGridBefore = 0;
var rowPr = null; var rowPr = null;
if(null != row.CompiledPr && null != row.CompiledPr.Pr)
rowPr = row.CompiledPr.Pr; var CompiledPr = row.Get_CompiledPr();
if(null != CompiledPr)
rowPr = CompiledPr;
if(null != rowPr) if(null != rowPr)
{ {
if(null == elems.before && null != rowPr.GridBefore && rowPr.GridBefore > 0) if(null == elems.before && null != rowPr.GridBefore && rowPr.GridBefore > 0)
...@@ -1043,6 +1058,11 @@ CopyProcessor.prototype = ...@@ -1043,6 +1058,11 @@ CopyProcessor.prototype =
tr.appendChild(oNewTd); tr.appendChild(oNewTd);
} }
} }
var tablePr = null;
var compiledTablePr = table.Get_CompiledPr();
if(null != compiledTablePr && null != compiledTablePr.TablePr)
tablePr = compiledTablePr.TablePr;
//tc //tc
for(var i in elems.cells) for(var i in elems.cells)
{ {
...@@ -1060,9 +1080,6 @@ CopyProcessor.prototype = ...@@ -1060,9 +1080,6 @@ CopyProcessor.prototype =
if(nRowSpan <= 0) if(nRowSpan <= 0)
nRowSpan = 1; nRowSpan = 1;
} }
var tablePr = null;
if(null != table.CompiledPr && null != table.CompiledPr.Pr && null != table.CompiledPr.Pr.TablePr)
tablePr = table.CompiledPr.Pr.TablePr;
this.CopyCell(tr, cell, tablePr, width, nRowSpan); this.CopyCell(tr, cell, tablePr, width, nRowSpan);
} }
} }
...@@ -1097,9 +1114,12 @@ CopyProcessor.prototype = ...@@ -1097,9 +1114,12 @@ CopyProcessor.prototype =
{ {
this.CommitList(oDomTarget); this.CommitList(oDomTarget);
var DomTable = document.createElement( "table" ); var DomTable = document.createElement( "table" );
var compiledPr = table.Get_CompiledPr();
var Pr = null; var Pr = null;
if(null != table.CompiledPr && null != table.CompiledPr.Pr && null != table.CompiledPr.Pr.TablePr) if(compiledPr && null != compiledPr.TablePr)
Pr = table.CompiledPr.Pr.TablePr; Pr = compiledPr.TablePr;
var tblStyle = ""; var tblStyle = "";
var bBorder = false; var bBorder = false;
if(null != Pr) if(null != Pr)
...@@ -1158,10 +1178,11 @@ CopyProcessor.prototype = ...@@ -1158,10 +1178,11 @@ CopyProcessor.prototype =
if(table.Content.length > 0) if(table.Content.length > 0)
{ {
var firstRow = table.Content[0]; var firstRow = table.Content[0];
if(null != firstRow.Pr && null != firstRow.Pr.TableCellSpacing) var rowPr = firstRow.Get_CompiledPr();
if(null != rowPr && null != rowPr.TableCellSpacing)
{ {
bAddSpacing = true; bAddSpacing = true;
var cellSpacingMM = firstRow.Pr.TableCellSpacing; var cellSpacingMM = rowPr.TableCellSpacing;
tblStyle += "mso-cellspacing:"+(cellSpacingMM * g_dKoef_mm_to_pt)+"pt;"; tblStyle += "mso-cellspacing:"+(cellSpacingMM * g_dKoef_mm_to_pt)+"pt;";
DomTable.setAttribute("cellspacing", Math.round(cellSpacingMM * g_dKoef_mm_to_pix)); DomTable.setAttribute("cellspacing", Math.round(cellSpacingMM * g_dKoef_mm_to_pix));
} }
...@@ -1389,247 +1410,245 @@ CopyProcessor.prototype = ...@@ -1389,247 +1410,245 @@ CopyProcessor.prototype =
} }
this.CommitList(oDomTarget); this.CommitList(oDomTarget);
}, },
Start : function(node)
CopyDocument2 : function(oDomTarget, oDocument, bUseSelection, elementsContent)
{ {
this.oBinaryFileWriter.CopyStart();
var oDocument = this.oDocument;
if(g_bIsDocumentCopyPaste) if(g_bIsDocumentCopyPaste)
{ {
if(!this.api.DocumentReaderMode) if(!elementsContent && oDocument && oDocument.Content)
elementsContent = oDocument.Content;
for ( var Index = 0; Index < elementsContent.length; Index++ )
{ {
var Def_pPr = oDocument.Styles.Default.ParaPr; var Item;
if(docpostype_HdrFtr === oDocument.CurPos.Type) if(elementsContent[Index].Element)
Item = elementsContent[Index].Element;
else
Item = elementsContent[Index];
if(type_Table === Item.GetType() )
{ {
if(null != oDocument.HdrFtr && null != oDocument.HdrFtr.CurHdrFtr && null != oDocument.HdrFtr.CurHdrFtr.Content) this.oBinaryFileWriter.copyParams.bLockCopyElems++;
oDocument = oDocument.HdrFtr.CurHdrFtr.Content; if(!this.onlyBinaryCopy)
this.CopyTable(oDomTarget, Item, null);
this.oBinaryFileWriter.copyParams.bLockCopyElems--;
this.oBinaryFileWriter.CopyTable(Item, null);
} }
if ( oDocument.CurPos.Type == docpostype_FlowObjects ) else if ( type_Paragraph === Item.GetType() )
{ {
var oData = oDocument.Selection.Data.FlowObject; //todo ����� ������ ��� �������� ������ ���� Index == End
switch ( oData.Get_Type() ) this.oBinaryFileWriter.CopyParagraph(Item, elementsContent[Index].SelectedAll);
if(!this.onlyBinaryCopy)
this.CopyParagraph(oDomTarget, Item, true, false);
}
}
}
else//presentation
{ {
case flowobject_Image: //DocContent/ Drawings/ SlideObjects
var presentation = this.oDocument;
this.oPresentationWriter.WriteString2(editor.DocumentUrl);
this.oPresentationWriter.WriteDouble(presentation.Width);
this.oPresentationWriter.WriteDouble(presentation.Height);
if(elementsContent.DocContent)//пишем контент
{ {
this.Para = document.createElement("p"); var docContent = elementsContent.DocContent;
var sInnerHtml = this.ParseItem(oData);
var oImg = oData; if(docContent.Elements)
var sSrc = oImg.Img;
if(sSrc.length > 0)
{ {
sSrc = this.getSrc(sSrc); var elements = docContent.Elements;
if (this.api.DocumentReaderMode) //пишем метку и длины
sInnerHtml += "<img style=\"max-width:100%;\" width=\""+Math.round(oImg.W * g_dKoef_mm_to_pix)+"\" height=\""+Math.round(oImg.H * g_dKoef_mm_to_pix)+"\" src=\""+sSrc+"\" />"; this.oPresentationWriter.WriteString2("Content");
this.oPresentationWriter.WriteDouble(elements.length);
//пишем контент
for ( var Index = 0; Index < elements.length; Index++ )
{
var Item;
if(elements[Index].Element)
Item = elements[Index].Element;
else else
sInnerHtml += "<img width=\""+Math.round(oImg.W * g_dKoef_mm_to_pix)+"\" height=\""+Math.round(oImg.H * g_dKoef_mm_to_pix)+"\" src=\""+sSrc+"\" />"; Item = elements[Index];
}
this.Para.innerHTML = sInnerHtml; if ( type_Paragraph === Item.GetType() )
this.ElemToSelect.appendChild( this.Para );
return;
}
case flowobject_Table:
{ {
if(null != oData.Table && null != oData.Table.CurCell && null != oData.Table.CurCell.Content) //todo ����� ������ ��� �������� ������ ���� Index == End
oDocument = oData.Table.CurCell.Content; //this.oPresentationWriter.WriteParagraph(Item);
break; //this.CopyPresentationText(this.ElemToSelect, graphicObjects.State.textObject.graphicObject.CurCell.Content, true);
//this.CopyParagraph(oDomTarget, Item, true, false);
this.oPresentationWriter.StartRecord(0);
this.oPresentationWriter.WriteParagraph(Item);
this.oPresentationWriter.EndRecord();
this.CopyParagraph(oDomTarget, Item, true, false);
} }
} }
} }
if(oDocument.CurPos.Type === docpostype_DrawingObjects)
{
var content = oDocument.DrawingObjects.getTargetDocContent();
if(content)
{
oDocument = content;
} }
else if(oDocument.DrawingObjects.selection.groupSelection && oDocument.DrawingObjects.selection.groupSelection.selectedObjects && oDocument.DrawingObjects.selection.groupSelection.selectedObjects.length) else if(elementsContent.Drawings && elementsContent.Drawings.length)//пишем графические объекты
{ {
var elements = elementsContent.Drawings;
var s_arr = oDocument.DrawingObjects.selection.groupSelection.selectedObjects; this.Para = document.createElement("p");
this.Para = document.createElement( "p" ); //var selected_objects = graphicObjects.State.id === STATES_ID_GROUP ? graphicObjects.State.group.selectedObjects : graphicObjects.selectedObjects;
if(copyPasteUseBinary) //пишем метку и длины
{ this.oPresentationWriter.WriteString2("Drawings");
var newArr = null; this.oPresentationWriter.WriteULong(elements.length);
var tempAr = null;
if(s_arr) for(var i = 0; i < elements.length; ++i)
{ {
tempAr = []; if(!(elements[i] instanceof CGraphicFrame))
for(var k = 0; k < s_arr.length; k++)
{ {
tempAr[k] = s_arr[k].y; this.oPresentationWriter.WriteBool(true);
}
this.CopyGraphicObject(this.ElemToSelect, elements[i].Drawing);
this.oPresentationWriter.WriteDouble(elements[i].X);
this.oPresentationWriter.WriteDouble(elements[i].Y);
this.oPresentationWriter.WriteDouble(elements[i].ExtX);
this.oPresentationWriter.WriteDouble(elements[i].ExtY);
} }
tempAr.sort(fSortAscending); else
newArr = [];
for(var k = 0; k < tempAr.length; k++)
{
var absOffsetY = tempAr[k];
for(var i = 0; i < s_arr.length; i++)
{
if(absOffsetY == s_arr[i].y)
{ {
newArr[k] = s_arr[i]; this.oPresentationWriter.WriteBool(false);
} this.CopyPresentationTableFull(this.ElemToSelect, elements[i].Drawing);
}
} }
if(newArr != null)
s_arr = newArr;
} }
for(var i = 0; i < s_arr.length; ++i) for(var i = 0; i < this.Para.childNodes.length; i++)
{ this.ElemToSelect.appendChild( this.Para.childNodes[i].cloneNode(true));
var paraDrawing = s_arr[i].parent ? s_arr[i].parent : s_arr[i].group.parent; }
var graphicObj = s_arr[i]; else if(elementsContent.SlideObjects && elementsContent.SlideObjects.length)//пишем слайды целиком
if(isRealObject(paraDrawing.Parent))
{
var base64_img = paraDrawing.getBase64Img();
if(copyPasteUseBinary)
{ {
var wrappingType = oDocument.DrawingObjects.selection.groupSelection.parent.wrappingType; var selected_slides = elementsContent.SlideObjects;
var DrawingType = oDocument.DrawingObjects.selection.groupSelection.parent.DrawingType;
var tempParagraph = new Paragraph(oDocument, oDocument, 0, 0, 0, 0, 0);
var index = 0;
tempParagraph.Content.unshift(new ParaRun());
var paraRun = tempParagraph.Content[index];
paraRun.Content.unshift(new ParaDrawing());
paraRun.Content[index].wrappingType = wrappingType;
paraRun.Content[index].DrawingType = DrawingType;
paraRun.Content[index].GraphicObj = graphicObj;
paraRun.Selection.EndPos = index + 1; this.Para = document.createElement( "p" );
paraRun.Selection.StartPos = index; this.oPresentationWriter.WriteString2("SlideObjects");
paraRun.Selection.Use = true;
tempParagraph.Selection.EndPos = index + 1;
tempParagraph.Selection.StartPos = index;
tempParagraph.Selection.Use = true;
tempParagraph.bFromDocument = true;
this.oBinaryFileWriter.CopyParagraph(tempParagraph);
};
var src = this.getSrc(base64_img); this.oPresentationWriter.WriteULong(selected_slides.length);
this.Para.innerHTML += "<img style=\"max-width:100%;\" width=\""+Math.round(paraDrawing.absExtX * g_dKoef_mm_to_pix)+"\" height=\""+Math.round(paraDrawing.absExtY * g_dKoef_mm_to_pix)+"\" src=\""+src+"\" />"; var layouts_map = {};
var layout_count = 0;
editor.WordControl.m_oLogicDocument.CalculateComments();
this.ElemToSelect.appendChild( this.Para ); //пишем слайд
var slide;
for(var i = 0; i < selected_slides.length; ++i)
{
slide = selected_slides[i].Slide;
this.CopySlide(this.ElemToSelect, slide);
if(!layouts_map[slide.Layout.Get_Id()])
++layout_count;
layouts_map[slide.Layout.Get_Id()] = slide.Layout;
} }
//пишем layout
this.oPresentationWriter.WriteULong(layout_count);
var arr_layouts_id = [];
var t = 0;
for(var key in layouts_map)
{
this.CopyLayout(layouts_map[key]);
arr_layouts_id[t] = layouts_map[key];
++t;
} }
if(copyPasteUseBinary) var arr_ind = [];
for(var i = 0; i < selected_slides.length; ++i)
{ {
this.oBinaryFileWriter.CopyEnd(); for(t = 0; t < arr_layouts_id.length; ++t)
var sBase64 = this.oBinaryFileWriter.GetResult();
if(this.ElemToSelect.children && this.ElemToSelect.children.length == 1 && window.USER_AGENT_SAFARI_MACOS)
{ {
$(this.ElemToSelect.children[0]).css("font-weight", "normal"); if(selected_slides[i].Slide.Layout === arr_layouts_id[t])
$(this.ElemToSelect.children[0]).wrap(document.createElement("b")); {
arr_ind[i] = t;
break;
} }
if(this.ElemToSelect.children[0])
$(this.ElemToSelect.children[0]).addClass("docData;" + sBase64);
} }
} }
else for(var i = 0; i < arr_ind.length; ++i)
{
var gr_objects = oDocument.DrawingObjects;
var selection_array = gr_objects.selectedObjects;
this.Para = document.createElement( "span" );
var selectionTrue;
var selectIndex;
for(var i = 0; i < selection_array.length; ++i)
{ {
var cur_element = selection_array[i].parent; this.oPresentationWriter.WriteULong(arr_ind[i]);
var base64_img = cur_element.getBase64Img(); }
var src = this.getSrc(base64_img); for(var i = 0; i < this.Para.childNodes.length; i++)
this.ElemToSelect.appendChild( this.Para.childNodes[i].cloneNode(true) );
this.Para.innerHTML = "<img style=\"max-width:100%;\" width=\""+Math.round(cur_element.W * g_dKoef_mm_to_pix)+"\" height=\""+Math.round(cur_element.H * g_dKoef_mm_to_pix)+"\" src=\""+src+"\" />"; }
}
this.ElemToSelect.appendChild( this.Para ); if(!this.onlyBinaryCopy)
this.CommitList(oDomTarget);
},
if(copyPasteUseBinary) getSelectedBinary : function()
{ {
var paragraph = cur_element.Parent; var oDocument = this.oDocument;
var inIndex; if(g_bIsDocumentCopyPaste)
var paragraphIndex;
var content;
var curParaRun;
for(var k = 0; k < paragraph.Content.length;k++)
{ {
content = paragraph.Content[k].Content; var selectedContent = oDocument.Get_SelectedContent();
if(!content)
continue;
for(var n = 0; n < content.length; n++) var elementsContent;
if(selectedContent && selectedContent.Elements && selectedContent.Elements[0] && selectedContent.Elements[0].Element)
elementsContent = selectedContent.Elements;
else
return false;
var drawingUrls = [];
if(selectedContent.DrawingObjects && selectedContent.DrawingObjects.length)
{ {
if(content[n] == cur_element) var url, correctUrl, graphicObj;
for(var i = 0; i < selectedContent.DrawingObjects.length; i++)
{ {
curParaRun = paragraph.Content[k]; graphicObj = selectedContent.DrawingObjects[i].GraphicObj;
inIndex = n; if(graphicObj.isImage())
paragraphIndex = k;
break;
};
};
};
selectionTrue =
{ {
EndPos : curParaRun.Selection.EndPos, url = graphicObj.getImageUrl();
StartPos: curParaRun.Selection.StartPos, if(window.NativeCorrectImageUrlOnCopy)
EndPosParagraph : paragraph.Selection.EndPos, {
StartPosParagraph: paragraph.Selection.StartPos correctUrl = window.NativeCorrectImageUrlOnCopy(url);
};
//меняем Selection drawingUrls[i] = correctUrl;
curParaRun.Selection.EndPos = inIndex + 1; }
curParaRun.Selection.StartPos = inIndex; }
curParaRun.Selection.Use = true; }
}
paragraph.Selection.EndPos = paragraphIndex; //подменяем Document для копирования(если не подменить, то commentId будет не соответствовать)
paragraph.Selection.StartPos = paragraphIndex; this.oBinaryFileWriter.Document = elementsContent[0].Element.LogicDocument;
paragraph.Selection.Use = true;
this.oBinaryFileWriter.CopyParagraph(paragraph); this.oBinaryFileWriter.CopyStart();
this.CopyDocument2(null, oDocument, false, elementsContent);
this.oBinaryFileWriter.CopyEnd();
//возвращаем Selection var sBase64 = this.oBinaryFileWriter.GetResult();
curParaRun.Selection.StartPos = selectionTrue.StartPos; var text = "";
curParaRun.Selection.EndPos = selectionTrue.EndPos;
paragraph.Selection.StartPos = selectionTrue.StartPosParagraph; return {sBase64: sBase64, text: text, drawingUrls: drawingUrls};
paragraph.Selection.EndPos = selectionTrue.EndPosParagraph;
}
} }
},
if(copyPasteUseBinary) Start : function(node)
{
this.oBinaryFileWriter.CopyEnd();
var sBase64 = this.oBinaryFileWriter.GetResult();
if(this.ElemToSelect.children && this.ElemToSelect.children.length == 1 && window.USER_AGENT_SAFARI_MACOS)
{ {
$(this.ElemToSelect.children[0]).css("font-weight", "normal"); var oDocument = this.oDocument;
$(this.ElemToSelect.children[0]).wrap(document.createElement("b"));
} if(g_bIsDocumentCopyPaste)
if(this.ElemToSelect.children[0])
$(this.ElemToSelect.children[0]).addClass("docData;" + sBase64);
}
return;
}
}
if ( true === oDocument.Selection.Use )
{ {
this.CopyDocument(this.ElemToSelect, oDocument, true); var selectedContent = oDocument.Get_SelectedContent();
}
} var elementsContent;
if(selectedContent && selectedContent.Elements && selectedContent.Elements[0] && selectedContent.Elements[0].Element)
elementsContent = selectedContent.Elements;
else else
this.CopyDocument(this.ElemToSelect, oDocument, false); return;
//подменяем Document для копирования(если не подменить, то commentId будет не соответствовать)
this.oBinaryFileWriter.Document = elementsContent[0].Element.LogicDocument;
this.oBinaryFileWriter.CopyStart();
this.CopyDocument2(this.ElemToSelect, oDocument, false, elementsContent);
this.oBinaryFileWriter.CopyEnd();
} }
else else
{ {
...@@ -2929,11 +2948,12 @@ PasteProcessor.prototype = ...@@ -2929,11 +2948,12 @@ PasteProcessor.prototype =
this.bInBlock = oRes.bInBlock; this.bInBlock = oRes.bInBlock;
return oRes; return oRes;
}, },
Start : function(node, nodeDisplay, bDuplicate) Start : function(node, nodeDisplay, bDuplicate, onlyBinary)
{ {
//PASTE
if(null == nodeDisplay) if(null == nodeDisplay)
nodeDisplay = node; nodeDisplay = node;
if(g_bIsDocumentCopyPaste) if(g_bIsDocumentCopyPaste)//document
{ {
var oThis = this; var oThis = this;
//удаляем в начале, иначе может получиться что будем вставлять в элементы, которое потом удалим. //удаляем в начале, иначе может получиться что будем вставлять в элементы, которое потом удалим.
...@@ -2953,6 +2973,15 @@ PasteProcessor.prototype = ...@@ -2953,6 +2973,15 @@ PasteProcessor.prototype =
// return; // return;
if(copyPasteUseBinary) if(copyPasteUseBinary)
{
if(onlyBinary)
{
base64 = onlyBinary;
if(base64 != null)
aContent = this.ReadFromBinary(base64);
pasteFromBinary = true;
}
else
{ {
var base64 = null, base64FromExcel = null,classNode, aContent, aContentExcel, pasteFromBinary = false; var base64 = null, base64FromExcel = null,classNode, aContent, aContentExcel, pasteFromBinary = false;
...@@ -3004,6 +3033,8 @@ PasteProcessor.prototype = ...@@ -3004,6 +3033,8 @@ PasteProcessor.prototype =
pasteFromBinary = true; pasteFromBinary = true;
else if(aContentExcel != null && aContent && aContent.content) else if(aContentExcel != null && aContent && aContent.content)
pasteFromBinary = true; pasteFromBinary = true;
}
if(pasteFromBinary) if(pasteFromBinary)
{ {
...@@ -3029,10 +3060,31 @@ PasteProcessor.prototype = ...@@ -3029,10 +3060,31 @@ PasteProcessor.prototype =
oImagesToDownload[src] = 1; oImagesToDownload[src] = 1;
} }
} }
var aImagesToDownload = []; var aImagesToDownload = [];
for(var i in oImagesToDownload) for(var i in oImagesToDownload)
aImagesToDownload.push(i); aImagesToDownload.push(i);
if(aImagesToDownload.length > 0) if(aImagesToDownload.length > 0)
{
if(onlyBinary && window.NativeCorrectImageUrlOnPaste)
{
var url;
for(var i = 0, length = aContent.aPastedImages.length; i < length; ++i)
{
url = window.NativeCorrectImageUrlOnPaste(aContent.aPastedImages[i].Url);
aContent.images[i] = url;
var imageElem = aContent.aPastedImages[i];
if(null != imageElem)
{
imageElem.SetUrl(url);
}
}
oThis.api.pre_Paste(aContent.fonts, aContent.images, fPrepasteCallback);
}
else
{ {
var rData = {"id":documentId, "c":"imgurls", "vkey": documentVKey, "data": JSON.stringify(aImagesToDownload)}; var rData = {"id":documentId, "c":"imgurls", "vkey": documentVKey, "data": JSON.stringify(aImagesToDownload)};
sendCommand( this.api, function(incomeObject){ sendCommand( this.api, function(incomeObject){
...@@ -3060,10 +3112,11 @@ PasteProcessor.prototype = ...@@ -3060,10 +3112,11 @@ PasteProcessor.prototype =
oThis.api.pre_Paste(aContent.fonts, aContent.images, fPrepasteCallback); oThis.api.pre_Paste(aContent.fonts, aContent.images, fPrepasteCallback);
}, rData ); }, rData );
} }
}
else else
oThis.api.pre_Paste(aContent.fonts, aContent.images, fPrepasteCallback); oThis.api.pre_Paste(aContent.fonts, aContent.images, fPrepasteCallback);
return; return;
}; }
}; };
var presentation = editor.WordControl.m_oLogicDocument; var presentation = editor.WordControl.m_oLogicDocument;
......
...@@ -846,13 +846,13 @@ function BinaryFileWriter(doc) ...@@ -846,13 +846,13 @@ function BinaryFileWriter(doc)
this.copyParams.nDocumentWriterTablePos = this.WriteTableStart(c_oSerTableTypes.Document); this.copyParams.nDocumentWriterTablePos = this.WriteTableStart(c_oSerTableTypes.Document);
this.copyParams.nDocumentWriterPos = this.bs.WriteItemWithLengthStart(); this.copyParams.nDocumentWriterPos = this.bs.WriteItemWithLengthStart();
} }
this.CopyParagraph = function(Item) this.CopyParagraph = function(Item, selectedAll)
{ {
//сами параграфы скопируются в методе CopyTable, нужно только проанализировать стили //сами параграфы скопируются в методе CopyTable, нужно только проанализировать стили
if(this.copyParams.bLockCopyElems > 0) if(this.copyParams.bLockCopyElems > 0)
return; return;
var oThis = this; var oThis = this;
this.bs.WriteItem(c_oSerParType.Par, function(){oThis.copyParams.bdtw.WriteParapraph(Item, true);}); this.bs.WriteItem(c_oSerParType.Par, function(){oThis.copyParams.bdtw.WriteParapraph(Item, false, selectedAll);});
this.copyParams.itemCount++; this.copyParams.itemCount++;
} }
this.CopyTable = function(Item, aRowElems, nMinGrid, nMaxGrid) this.CopyTable = function(Item, aRowElems, nMinGrid, nMaxGrid)
...@@ -3489,7 +3489,7 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa ...@@ -3489,7 +3489,7 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa
this.bs.WriteItem(c_oSerParType.sectPr, function(){oThis.bpPrs.WriteSectPr(oThis.Document.SectPr, oThis.Document);}); this.bs.WriteItem(c_oSerParType.sectPr, function(){oThis.bpPrs.WriteSectPr(oThis.Document.SectPr, oThis.Document);});
} }
}; };
this.WriteParapraph = function(par, bUseSelection) this.WriteParapraph = function(par, bUseSelection, selectedAll)
{ {
var oThis = this; var oThis = this;
if(null != this.copyParams) if(null != this.copyParams)
...@@ -3547,10 +3547,10 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa ...@@ -3547,10 +3547,10 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa
if(null != par.Content) if(null != par.Content)
{ {
this.memory.WriteByte(c_oSerParType.Content); this.memory.WriteByte(c_oSerParType.Content);
this.bs.WriteItemWithLength(function(){oThis.WriteParagraphContent(par, bUseSelection ,true);}); this.bs.WriteItemWithLength(function(){oThis.WriteParagraphContent(par, bUseSelection ,true, selectedAll);});
} }
}; };
this.WriteParagraphContent = function (par, bUseSelection, bLastRun) this.WriteParagraphContent = function (par, bUseSelection, bLastRun, selectedAll)
{ {
var ParaStart = 0; var ParaStart = 0;
var ParaEnd = par.Content.length - 1; var ParaEnd = par.Content.length - 1;
...@@ -3628,7 +3628,7 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa ...@@ -3628,7 +3628,7 @@ function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyPa
} }
} }
if (bLastRun && bUseSelection && !par.Selection_CheckParaEnd() ) if ((bLastRun && bUseSelection && !par.Selection_CheckParaEnd()) || (selectedAll != undefined && selectedAll === false) )
{ {
this.WriteRun2( function () { this.WriteRun2( function () {
oThis.memory.WriteByte(c_oSerRunType._LastRun); oThis.memory.WriteByte(c_oSerRunType._LastRun);
......
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