Commit 9f7d0334 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@56666 954022d7-b5bf-4e40-9824-e11837661b57
parent f60cb314
...@@ -579,7 +579,7 @@ function CCollaborativeChanges() ...@@ -579,7 +579,7 @@ function CCollaborativeChanges()
function CCollaborativeEditing() function CCollaborativeEditing()
{ {
this.m_bUse = false; // началось ли совместное редактирование this.m_nUseType = 1; // 1 - 1 клиент и мы сохраняем историю, -1 - несколько клиентов, 0 - переход из -1 в 1
this.m_aUsers = []; // Список текущих пользователей, редактирующих данный документ this.m_aUsers = []; // Список текущих пользователей, редактирующих данный документ
this.m_aChanges = []; // Массив с изменениями других пользователей this.m_aChanges = []; // Массив с изменениями других пользователей
...@@ -605,12 +605,13 @@ function CCollaborativeEditing() ...@@ -605,12 +605,13 @@ function CCollaborativeEditing()
this.Start_CollaborationEditing = function() this.Start_CollaborationEditing = function()
{ {
this.m_bUse = true; this.m_nUseType = -1;
}; };
this.End_CollaborationEditing = function() this.End_CollaborationEditing = function()
{ {
this.m_bUse = false; if ( this.m_nUseType <= 0 )
this.m_nUseType = 0;
}; };
this.Add_User = function(UserId) this.Add_User = function(UserId)
...@@ -726,69 +727,7 @@ function CCollaborativeEditing() ...@@ -726,69 +727,7 @@ function CCollaborativeEditing()
LogicDocument.Set_SelectionState2( DocState ); LogicDocument.Set_SelectionState2( DocState );
this.OnStart_Load_Objects(); this.OnStart_Load_Objects();
}; };
this.Send_Changes2 = function()
{
// Пересчитываем позиции
this.Refresh_DCChanges();
// Генерируем свои изменения
var PointsCount = 0;
if ( true === this.m_bUse )
{
// (ненужные точки предварительно удаляем)
History.Clear_Redo();
PointsCount = History.Points.length;
}
else
{
PointsCount = History.Index + 1;
}
var aChanges = [];
for ( var PointIndex = 0; PointIndex < PointsCount; PointIndex++ )
{
var Point = History.Points[PointIndex];
for ( var Index = 0; Index < Point.Items.length; Index++ )
{
var Item = Point.Items[Index];
var oChanges = new CCollaborativeChanges();
oChanges.Set_FromUndoRedo( Item.Class, Item.Data, Item.Binary );
var oChanges2 = {};
oChanges2["Id"] = oChanges.m_sId;
oChanges2["Data"] = oChanges.m_pData;
aChanges.push( oChanges2 );
}
}
this.Release_Locks();
var UnlockCount2 = this.m_aNeedUnlock2.length;
for ( var Index = 0; Index < UnlockCount2; Index++ )
{
var Class = this.m_aNeedUnlock2[Index];
Class.Lock.Set_Type( locktype_None, false);
editor.CoAuthoringApi.releaseLocks( Class.Get_Id() );
}
this.m_aNeedUnlock.length = 0;
this.m_aNeedUnlock2.length = 0;
editor.CoAuthoringApi.saveChanges(aChanges);
// Чистим Undo/Redo только во время совместного редактирования
if ( true === this.m_bUse )
History.Clear();
editor.WordControl.m_oLogicDocument.Document_UpdateInterfaceState();
editor.WordControl.m_oLogicDocument.Document_UpdateUndoRedoState();
editor.WordControl.m_oLogicDocument.DrawingDocument.ClearCachePages();
editor.WordControl.m_oLogicDocument.DrawingDocument.FirePaint();
};
this.Send_Changes = function() this.Send_Changes = function()
{ {
...@@ -798,7 +737,8 @@ function CCollaborativeEditing() ...@@ -798,7 +737,8 @@ function CCollaborativeEditing()
// Генерируем свои изменения // Генерируем свои изменения
var StartPoint = ( null === History.SavedIndex ? 0 : History.SavedIndex + 1 ); var StartPoint = ( null === History.SavedIndex ? 0 : History.SavedIndex + 1 );
var LastPoint = -1; var LastPoint = -1;
if ( true === this.m_bUse )
if ( this.m_nUseType <= 0 )
{ {
// (ненужные точки предварительно удаляем) // (ненужные точки предварительно удаляем)
History.Clear_Redo(); History.Clear_Redo();
...@@ -851,10 +791,19 @@ function CCollaborativeEditing() ...@@ -851,10 +791,19 @@ function CCollaborativeEditing()
editor.CoAuthoringApi.saveChanges(aChanges, ( null === History.SavedIndex ? null : SumIndex ) ); editor.CoAuthoringApi.saveChanges(aChanges, ( null === History.SavedIndex ? null : SumIndex ) );
if ( true === this.m_bUse ) if ( -1 === this.m_nUseType )
{
// Чистим Undo/Redo только во время совместного редактирования
History.Clear();
History.SavedIndex = null;
}
else if ( 0 === this.m_nUseType )
{ {
// Чистим Undo/Redo только во время совместного редактирования // Чистим Undo/Redo только во время совместного редактирования
History.Clear(); History.Clear();
History.SavedIndex = null;
this.m_nUseType = 1;
} }
else else
{ {
...@@ -1005,7 +954,7 @@ function CCollaborativeEditing() ...@@ -1005,7 +954,7 @@ function CCollaborativeEditing()
editor.CoAuthoringApi.askLock( aIds, this.OnCallback_AskLock ); editor.CoAuthoringApi.askLock( aIds, this.OnCallback_AskLock );
// Ставим глобальный лок, только во время совместного редактирования // Ставим глобальный лок, только во время совместного редактирования
if ( true === this.m_bUse ) if ( -1 === this.m_nUseType )
this.m_bGlobalLock = true; this.m_bGlobalLock = true;
else else
{ {
......
...@@ -1481,12 +1481,12 @@ asc_docs_api.prototype._coAuthoringInit = function() ...@@ -1481,12 +1481,12 @@ asc_docs_api.prototype._coAuthoringInit = function()
if ( 1 >= CountEditUsers ) if ( 1 >= CountEditUsers )
{ {
CollaborativeEditing.Start_CollaborationEditing(); CollaborativeEditing.End_CollaborationEditing();
editor.asc_setDrawCollaborationMarks(false); editor.asc_setDrawCollaborationMarks(false);
} }
else else
{ {
CollaborativeEditing.End_CollaborationEditing(); CollaborativeEditing.Start_CollaborationEditing();
editor.asc_setDrawCollaborationMarks(true); editor.asc_setDrawCollaborationMarks(true);
} }
}; };
...@@ -7678,7 +7678,7 @@ window["asc_docs_api"].prototype["asc_nativeCalculateFile"] = function() ...@@ -7678,7 +7678,7 @@ window["asc_docs_api"].prototype["asc_nativeCalculateFile"] = function()
if (this.isApplyChangesOnOpenEnabled) if (this.isApplyChangesOnOpenEnabled)
{ {
this.isApplyChangesOnOpenEnabled = false; this.isApplyChangesOnOpenEnabled = false;
if (CollaborativeEditing.m_bUse == true) if (1 === CollaborativeEditing.m_nUseType)
{ {
this.isApplyChangesOnOpen = true; this.isApplyChangesOnOpen = true;
CollaborativeEditing.Apply_Changes(); CollaborativeEditing.Apply_Changes();
......
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