Commit aafcfbb6 authored by Ilya.Kirillov's avatar Ilya.Kirillov Committed by Alexander.Trofimov

Сделано, чтобы при возврате из режима просмотра результатов рассылок...

Сделано, чтобы при возврате из режима просмотра результатов рассылок восстанавливались стандартные тексты для полей, если нет совместного редактирования. Исправлен баг, с тем что при добавлении полей не удалялся текст, вместо которого вставлялось поле. Исправлен баг с тем, что при включении опции "подсветить все поля" текущее поле становилось темнее остальных.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@61620 954022d7-b5bf-4e40-9824-e11837661b57
parent 518252f5
......@@ -1440,6 +1440,7 @@ var historydescription_Document_AddTextFromTextBox = 0x00ab;
var historydescription_Document_AddMailMergeField = 0x00ac;
var historydescription_Document_MoveInlineTable = 0x00ad;
var historydescription_Document_MoveFlowTable = 0x00ae;
var historydescription_Document_RestoreFieldTemplateText = 0x00af;
function Get_HistoryPointStringDescription(nDescription)
......@@ -1621,6 +1622,7 @@ function Get_HistoryPointStringDescription(nDescription)
case historydescription_Document_AddMailMergeField : sString = "Document_AddMailMergeField "; break;
case historydescription_Document_MoveInlineTable : sString = "Document_MoveInlineTable "; break;
case historydescription_Document_MoveFlowTable : sString = "Document_MoveFlowTable "; break;
case historydescription_Document_RestoreFieldTemplateText : sString = "Document_RestoreFieldTemplateText "; break;
}
return sString;
......
......@@ -668,6 +668,14 @@ function CCollaborativeEditing()
var oThis = this;
this.Is_SingleUser = function()
{
if (1 === this.m_nUseType)
return true;
return false;
};
this.Start_CollaborationEditing = function()
{
this.m_nUseType = -1;
......
......@@ -589,12 +589,71 @@ CDocumentFieldsManager.prototype.Replace_MailMergeFields = function(Map)
};
CDocumentFieldsManager.prototype.Restore_MailMergeTemplate = function()
{
for (var FieldName in this.m_oMailMergeFields)
if (true === CollaborativeEditing.Is_SingleUser())
{
for (var Index = 0, Count = this.m_oMailMergeFields[FieldName].length; Index < Count; Index++)
// В такой ситуации мы восстанавливаем стандартный текст полей. Чтобы это сделать нам сначала надо пробежаться
// по всем таким полям, определить параграфы, в которых необходимо восстановить поля. Залочить эти параграфы,
// и произвести восстановление полей.
var FieldsToRestore = [];
var FieldsRemain = [];
var ParagrapsToRestore = [];
for (var FieldName in this.m_oMailMergeFields)
{
for (var Index = 0, Count = this.m_oMailMergeFields[FieldName].length; Index < Count; Index++)
{
var oField = this.m_oMailMergeFields[FieldName][Index];
var oFieldPara = oField.Get_Paragraph();
if (oFieldPara && oField.Is_NeedRestoreTemplate())
{
var bNeedAddPara = true;
for (var ParaIndex = 0, ParasCount = ParagrapsToRestore.length; ParaIndex < ParasCount; ParaIndex++)
{
if (oFieldPara === ParagrapsToRestore[ParaIndex])
{
bNeedAddPara = false;
break;
}
}
if (true === bNeedAddPara)
ParagrapsToRestore.push(oFieldPara);
FieldsToRestore.push(oField);
}
else
{
FieldsRemain.push(oField);
}
}
}
var LogicDocument = (ParagrapsToRestore.length > 0 ? ParagrapsToRestore[0].LogicDocument : null);
if (LogicDocument && false === LogicDocument.Document_Is_SelectionLocked(changestype_None, { Type : changestype_2_ElementsArray_and_Type, Elements : ParagrapsToRestore, CheckType : changestype_Paragraph_Content }))
{
var oField = this.m_oMailMergeFields[FieldName][Index];
oField.Restore_Template();
History.Create_NewPoint(historydescription_Document_RestoreFieldTemplateText);
for (var nIndex = 0, nCount = FieldsToRestore.length; nIndex < nCount; nIndex++)
{
var oField = FieldsToRestore[nIndex];
oField.Restore_StandardTemplate();
}
for (var nIndex = 0, nCount = FieldsRemain.length; nIndex < nCount; nIndex++)
{
var oField = FieldsRemain[nIndex];
oField.Restore_Template();
}
}
}
else
{
for (var FieldName in this.m_oMailMergeFields)
{
for (var Index = 0, Count = this.m_oMailMergeFields[FieldName].length; Index < Count; Index++)
{
var oField = this.m_oMailMergeFields[FieldName][Index];
oField.Restore_Template();
}
}
}
};
......@@ -3234,6 +3293,7 @@ CDocument.prototype =
case para_Space:
case para_Tab:
case para_PageNum:
case para_Field:
{
// Если у нас что-то заселекчено и мы вводим текст или пробел
// и т.д., тогда сначала удаляем весь селект.
......@@ -14234,6 +14294,7 @@ CDocument.prototype.Set_HightlightMailMergeFields = function(Value)
this.MailMergeFieldsHighlight = Value;
this.DrawingDocument.ClearCachePages();
this.DrawingDocument.FirePaint();
this.DrawingDocument.Update_FieldTrack(false);
editor.sync_HighlightMailMergeFields(this.MailMergeFieldsHighlight);
}
};
......
......@@ -230,12 +230,48 @@ ParaField.prototype.Map_MailMerge = function(Value)
History.TurnOn();
};
ParaField.prototype.Restore_StandardTemplate = function()
{
// В любом случае сначала восстанавливаем исходное содержимое.
this.Restore_Template();
if (fieldtype_MERGEFIELD === this.FieldType && true === CollaborativeEditing.Is_SingleUser() && 1 === this.Arguments.length)
{
var oRun = this.private_GetMappedRun("«" + this.Arguments[0] + "»");
this.Remove_FromContent(0, this.Content.length);
this.Add_ToContent(0, oRun);
this.Cursor_MoveToStartPos();
this.TemplateContent = this.Content;
}
};
ParaField.prototype.Restore_Template = function()
{
// Восстанавливаем содержимое поля.
this.Content = this.TemplateContent;
this.Cursor_MoveToStartPos();
};
ParaField.prototype.Is_NeedRestoreTemplate = function()
{
if (1 !== this.TemplateContent.length)
return true;
var oRun = this.TemplateContent[0];
if (fieldtype_MERGEFIELD === this.FieldType)
{
var sStandardText = "«" + this.Arguments[0] + "»";
var oRunText = new CParagraphGetText();
oRun.Get_Text(oRunText);
if (sStandardText === oRunText.Text)
return false;
return true;
}
return false;
};
ParaField.prototype.Replace_MailMerge = function(Value)
{
var Paragraph = this.Paragraph;
......
......@@ -4931,7 +4931,7 @@ Paragraph.prototype =
{
// В данной функции мы корректируем содержимое параграфа:
// 1. Спаренные пустые раны мы удаляем (удаляем 1 ран)
// 2. Удаляем пустые гиперссылки и пустые формулы
// 2. Удаляем пустые гиперссылки, пустые формулы, пустые поля
// 3. Добавляем пустой ран в место, где нет рана (например, между двумя идущими подряд гиперссылками)
// 4. Удаляем пустые комментарии
......@@ -4943,7 +4943,7 @@ Paragraph.prototype =
{
var CurElement = this.Content[CurPos];
if ((para_Hyperlink === CurElement.Type || para_Math === CurElement.Type) && true === CurElement.Is_Empty() && true !== CurElement.Is_CheckingNearestPos())
if ((para_Hyperlink === CurElement.Type || para_Math === CurElement.Type || para_Field === CurElement.Type) && true === CurElement.Is_Empty() && true !== CurElement.Is_CheckingNearestPos())
{
this.Internal_Content_Remove( CurPos );
CurPos++;
......
......@@ -214,6 +214,10 @@ CParagraphContentWithParagraphLikeContent.prototype.Copy = function(Selected)
return NewElement;
};
CParagraphContentWithParagraphLikeContent.prototype.Get_Paragraph = function()
{
return this.Paragraph;
};
CParagraphContentWithParagraphLikeContent.prototype.Clear_ContentChanges = function()
{
this.m_oContentChanges.Clear();
......
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