Commit 4c2a82c4 authored by Alexander.Trofimov's avatar Alexander.Trofimov Committed by Alexander.Trofimov

fix bug #30242

При загрузке lock-и должны приходить после того, как мы открыли документ. (ToDo возможно стоит вообще пересмотреть этот момент и реализовать его в doccoapi).

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@64703 954022d7-b5bf-4e40-9824-e11837661b57
parent b01c17cc
...@@ -89,6 +89,9 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -89,6 +89,9 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
//текущий обьект куда записываются информация для update, когда принимаются изменения в native редакторе //текущий обьект куда записываются информация для update, когда принимаются изменения в native редакторе
this.oRedoObjectParamNative = null; this.oRedoObjectParamNative = null;
// Массив lock-ов, которые были на открытии документа
this.arrPreOpenLocksObjects = [];
// CoAuthoring and Chat // CoAuthoring and Chat
this.User = undefined; this.User = undefined;
this.CoAuthoringApi = new CDocsCoApi(); this.CoAuthoringApi = new CDocsCoApi();
...@@ -160,8 +163,6 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -160,8 +163,6 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
this.formulasList = null; // Список всех формул this.formulasList = null; // Список всех формул
this.TrackFile = null;
this.fCallbackSendCommand = null; this.fCallbackSendCommand = null;
this.fCurCallback = null; this.fCurCallback = null;
...@@ -1497,6 +1498,12 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -1497,6 +1498,12 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
t.handlers.trigger("asc_onConnectionStateChanged", e); t.handlers.trigger("asc_onConnectionStateChanged", e);
}; };
this.CoAuthoringApi.onLocksAcquired = function(e) { this.CoAuthoringApi.onLocksAcquired = function(e) {
if (!t.IsSendDocumentLoadCompleate) {
// Пока документ еще не загружен, будем сохранять функцию и аргументы
t.arrPreOpenLocksObjects.push(function(){t.CoAuthoringApi.onLocksAcquired(e);});
return;
}
if (2 != e["state"]) { if (2 != e["state"]) {
var elementValue = e["blockValue"]; var elementValue = e["blockValue"];
var lockElem = t.collaborativeEditing.getLockByElem(elementValue, c_oAscLockTypes.kLockTypeOther); var lockElem = t.collaborativeEditing.getLockByElem(elementValue, c_oAscLockTypes.kLockTypeOther);
...@@ -1555,6 +1562,12 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -1555,6 +1562,12 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
} }
}; };
this.CoAuthoringApi.onLocksReleased = function(e, bChanges) { this.CoAuthoringApi.onLocksReleased = function(e, bChanges) {
if (!t.IsSendDocumentLoadCompleate) {
// Пока документ еще не загружен, будем сохранять функцию и аргументы
t.arrPreOpenLocksObjects.push(function(){t.CoAuthoringApi.onLocksReleased(e, bChanges);});
return;
}
var element = e["block"]; var element = e["block"];
var lockElem = t.collaborativeEditing.getLockByElem(element, c_oAscLockTypes.kLockTypeOther); var lockElem = t.collaborativeEditing.getLockByElem(element, c_oAscLockTypes.kLockTypeOther);
if (null != lockElem) { if (null != lockElem) {
...@@ -1600,6 +1613,11 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -1600,6 +1613,11 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
} }
}; };
this.CoAuthoringApi.onLocksReleasedEnd = function() { this.CoAuthoringApi.onLocksReleasedEnd = function() {
if (!t.IsSendDocumentLoadCompleate) {
// Пока документ еще не загружен ничего не делаем
return;
}
if (t.wb) { if (t.wb) {
// Шлем update для toolbar-а, т.к. когда select в lock ячейке нужно сбросить блокировку toolbar // Шлем update для toolbar-а, т.к. когда select в lock ячейке нужно сбросить блокировку toolbar
t.wb._onWSSelectionChanged(/*info*/null); t.wb._onWSSelectionChanged(/*info*/null);
...@@ -1885,6 +1903,12 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -1885,6 +1903,12 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
// Применяем пришедшие при открытии изменения // Применяем пришедшие при открытии изменения
this._applyFirstLoadChanges(); this._applyFirstLoadChanges();
// Применяем все lock-и (ToDo возможно стоит пересмотреть вообще Lock-и)
for (var i = 0; i < this.arrPreOpenLocksObjects.length; ++i) {
this.arrPreOpenLocksObjects[i]();
}
this.arrPreOpenLocksObjects = [];
// Меняем тип состояния (на никакое) // Меняем тип состояния (на никакое)
this.advancedOptionsAction = c_oAscAdvancedOptionsAction.None; this.advancedOptionsAction = c_oAscAdvancedOptionsAction.None;
......
...@@ -68,6 +68,9 @@ function asc_docs_api(name) ...@@ -68,6 +68,9 @@ function asc_docs_api(name)
this.isApplyChangesOnOpen = false; this.isApplyChangesOnOpen = false;
this.isApplyChangesOnOpenEnabled = true; this.isApplyChangesOnOpenEnabled = true;
// Массив lock-ов, которые были на открытии документа
this.arrPreOpenLocksObjects = [];
this.IsSupportEmptyPresentation = true; this.IsSupportEmptyPresentation = true;
this.ShowParaMarks = false; this.ShowParaMarks = false;
...@@ -170,7 +173,6 @@ function asc_docs_api(name) ...@@ -170,7 +173,6 @@ function asc_docs_api(name)
this.LongActionCallbacks = []; this.LongActionCallbacks = [];
this.LongActionCallbacksParams = []; this.LongActionCallbacksParams = [];
this.TrackFile = null;
this.fCurCallback = null; this.fCurCallback = null;
var oThis = this; var oThis = this;
...@@ -245,13 +247,18 @@ asc_docs_api.prototype._coAuthoringInit = function (fCallback) { ...@@ -245,13 +247,18 @@ asc_docs_api.prototype._coAuthoringInit = function (fCallback) {
this.CoAuthoringApi.onAuthParticipantsChanged = function (e, count) { t.asc_fireCallback("asc_onAuthParticipantsChanged", e, count); }; this.CoAuthoringApi.onAuthParticipantsChanged = function (e, count) { t.asc_fireCallback("asc_onAuthParticipantsChanged", e, count); };
this.CoAuthoringApi.onMessage = function (e, clear) { t.asc_fireCallback( "asc_onCoAuthoringChatReceiveMessage", e, clear); }; this.CoAuthoringApi.onMessage = function (e, clear) { t.asc_fireCallback( "asc_onCoAuthoringChatReceiveMessage", e, clear); };
this.CoAuthoringApi.onConnectionStateChanged = function (e) { t.asc_fireCallback( "asc_onConnectionStateChanged", e); }; this.CoAuthoringApi.onConnectionStateChanged = function (e) { t.asc_fireCallback( "asc_onConnectionStateChanged", e); };
this.CoAuthoringApi.onLocksAcquired = function (e) { this.CoAuthoringApi.onLocksAcquired = function(e) {
if (t.isApplyChangesOnOpenEnabled) {
// Пока документ еще не загружен, будем сохранять функцию и аргументы
t.arrPreOpenLocksObjects.push(function(){t.CoAuthoringApi.onLocksAcquired(e);});
return;
}
if (2 != e["state"]) { if (2 != e["state"]) {
var block_value = e["blockValue"]; var block_value = e["blockValue"];
var classes = []; var classes = [];
switch(block_value["type"]) switch (block_value["type"]) {
{
case c_oAscLockTypeElemPresentation.Object: case c_oAscLockTypeElemPresentation.Object:
{ {
classes.push(block_value["objId"]); classes.push(block_value["objId"]);
...@@ -268,94 +275,80 @@ asc_docs_api.prototype._coAuthoringInit = function (fCallback) { ...@@ -268,94 +275,80 @@ asc_docs_api.prototype._coAuthoringInit = function (fCallback) {
break; break;
} }
} }
var Id = e["block"];
for(var i = 0; i < classes.length; ++i) for (var i = 0; i < classes.length; ++i) {
{
var Class = g_oTableId.Get_ById(classes[i]);// g_oTableId.Get_ById( Id ); var Class = g_oTableId.Get_ById(classes[i]);// g_oTableId.Get_ById( Id );
if ( null != Class ) if (null != Class) {
{
var Lock = Class.Lock; var Lock = Class.Lock;
var OldType = Class.Lock.Get_Type(); var OldType = Class.Lock.Get_Type();
if ( locktype_Other2 === OldType || locktype_Other3 === OldType ) if (locktype_Other2 === OldType || locktype_Other3 === OldType) {
Lock.Set_Type( locktype_Other3, true ); Lock.Set_Type(locktype_Other3, true);
else } else {
Lock.Set_Type( locktype_Other, true ); Lock.Set_Type(locktype_Other, true);
if ( Class instanceof PropLocker ) }
{ if (Class instanceof PropLocker) {
var object = g_oTableId.Get_ById(Class.objectId); var object = g_oTableId.Get_ById(Class.objectId);
if(object instanceof Slide && Class === object.deleteLock) if (object instanceof Slide && Class === object.deleteLock) {
{
editor.WordControl.m_oLogicDocument.DrawingDocument.LockSlide(object.num); editor.WordControl.m_oLogicDocument.DrawingDocument.LockSlide(object.num);
} }
} }
// Выставляем ID пользователя, залочившего данный элемент // Выставляем ID пользователя, залочившего данный элемент
Lock.Set_UserId( e["user"] ); Lock.Set_UserId(e["user"]);
if ( Class instanceof PropLocker ) if (Class instanceof PropLocker) {
{
var object = g_oTableId.Get_ById(Class.objectId); var object = g_oTableId.Get_ById(Class.objectId);
if(object instanceof CPresentation) if (object instanceof CPresentation) {
{ if (Class === editor.WordControl.m_oLogicDocument.themeLock) {
if(Class === editor.WordControl.m_oLogicDocument.themeLock)
{
editor.asc_fireCallback("asc_onLockDocumentTheme"); editor.asc_fireCallback("asc_onLockDocumentTheme");
} } else if (Class === editor.WordControl.m_oLogicDocument.schemeLock) {
else if(Class === editor.WordControl.m_oLogicDocument.schemeLock)
{
editor.asc_fireCallback("asc_onLockDocumentSchema"); editor.asc_fireCallback("asc_onLockDocumentSchema");
} } else if (Class === editor.WordControl.m_oLogicDocument.slideSizeLock) {
else if(Class === editor.WordControl.m_oLogicDocument.slideSizeLock)
{
editor.asc_fireCallback("asc_onLockDocumentProps"); editor.asc_fireCallback("asc_onLockDocumentProps");
} }
} }
} }
if(Class instanceof CComment) if (Class instanceof CComment) {
{
editor.sync_LockComment(Class.Get_Id(), e["user"]); editor.sync_LockComment(Class.Get_Id(), e["user"]);
} }
// TODO: Здесь для ускорения надо сделать проверку, является ли текущим элемент с // TODO: Здесь для ускорения надо сделать проверку, является ли текущим элемент с
// заданным Id. Если нет, тогда и не надо обновлять состояние. // заданным Id. Если нет, тогда и не надо обновлять состояние.
editor.WordControl.m_oLogicDocument.Document_UpdateInterfaceState(); editor.WordControl.m_oLogicDocument.Document_UpdateInterfaceState();
} } else {
else if (classes[i].indexOf("new_object") > -1 && block_value["type"] === c_oAscLockTypeElemPresentation.Object) {
{
if(classes[i].indexOf("new_object") > -1 && block_value["type"] === c_oAscLockTypeElemPresentation.Object)
{
var slide_id = block_value["slideId"]; var slide_id = block_value["slideId"];
var delete_lock = g_oTableId.Get_ById(slide_id); var delete_lock = g_oTableId.Get_ById(slide_id);
if(isRealObject(delete_lock)) if (isRealObject(delete_lock)) {
{
var Lock = delete_lock.Lock; var Lock = delete_lock.Lock;
var OldType = Lock.Get_Type(); var OldType = Lock.Get_Type();
if ( locktype_Other2 === OldType || locktype_Other3 === OldType ) if (locktype_Other2 === OldType || locktype_Other3 === OldType) {
Lock.Set_Type( locktype_Other3, true ); Lock.Set_Type(locktype_Other3, true);
else } else {
Lock.Set_Type( locktype_Other, true ); Lock.Set_Type(locktype_Other, true);
editor.WordControl.m_oLogicDocument.DrawingDocument.LockSlide(g_oTableId.Get_ById(delete_lock.objectId).num);
} }
else editor.WordControl.m_oLogicDocument.DrawingDocument.LockSlide(g_oTableId.Get_ById(delete_lock.objectId).num);
{ } else {
CollaborativeEditing.Add_NeedLock(slide_id, e["user"]); CollaborativeEditing.Add_NeedLock(slide_id, e["user"]);
} }
} } else {
else
{
CollaborativeEditing.Add_NeedLock(classes[i], e["user"]); CollaborativeEditing.Add_NeedLock(classes[i], e["user"]);
} }
} }
} }
} }
}; };
this.CoAuthoringApi.onLocksReleased = function (e, bChanges) { this.CoAuthoringApi.onLocksReleased = function(e, bChanges) {
if (t.isApplyChangesOnOpenEnabled) {
// Пока документ еще не загружен, будем сохранять функцию и аргументы
t.arrPreOpenLocksObjects.push(function(){t.CoAuthoringApi.onLocksReleased(e, bChanges);});
return;
}
var Id; var Id;
var block_value = e["block"]; var block_value = e["block"];
var classes = []; var classes = [];
switch(block_value["type"]) switch (block_value["type"]) {
{
case c_oAscLockTypeElemPresentation.Object: case c_oAscLockTypeElemPresentation.Object:
{ {
classes.push(block_value["objId"]); classes.push(block_value["objId"]);
...@@ -372,73 +365,62 @@ asc_docs_api.prototype._coAuthoringInit = function (fCallback) { ...@@ -372,73 +365,62 @@ asc_docs_api.prototype._coAuthoringInit = function (fCallback) {
break; break;
} }
} }
for(var i = 0; i < classes.length; ++i) for (var i = 0; i < classes.length; ++i) {
{
Id = classes[i]; Id = classes[i];
var Class = g_oTableId.Get_ById( Id ); var Class = g_oTableId.Get_ById(Id);
if ( null != Class ) if (null != Class) {
{
var Lock = Class.Lock; var Lock = Class.Lock;
if ( "undefined" != typeof(Lock) ) if ("undefined" != typeof(Lock)) {
{
var CurType = Lock.Get_Type(); var CurType = Lock.Get_Type();
var NewType = locktype_None; var NewType = locktype_None;
if ( CurType === locktype_Other ) if (CurType === locktype_Other) {
{ if (true != bChanges) {
if ( true != bChanges )
NewType = locktype_None; NewType = locktype_None;
else } else {
{
NewType = locktype_Other2; NewType = locktype_Other2;
CollaborativeEditing.Add_Unlock(Class); CollaborativeEditing.Add_Unlock(Class);
} }
} } else if (CurType === locktype_Mine) {
else if ( CurType === locktype_Mine )
{
// Такого быть не должно // Такого быть не должно
NewType = locktype_Mine; NewType = locktype_Mine;
} } else if (CurType === locktype_Other2 || CurType === locktype_Other3) {
else if ( CurType === locktype_Other2 || CurType === locktype_Other3 )
NewType = locktype_Other2; NewType = locktype_Other2;
}
Lock.Set_Type( NewType, true ); Lock.Set_Type(NewType, true);
if(Class instanceof PropLocker ) if (Class instanceof PropLocker) {
{
var object = g_oTableId.Get_ById(Class.objectId); var object = g_oTableId.Get_ById(Class.objectId);
if(object instanceof Slide && Class === object.deleteLock) if (object instanceof Slide && Class === object.deleteLock) {
{ if (NewType !== locktype_Mine && NewType !== locktype_None) {
if(NewType !== locktype_Mine && NewType !== locktype_None)
editor.WordControl.m_oLogicDocument.DrawingDocument.LockSlide(object.num); editor.WordControl.m_oLogicDocument.DrawingDocument.LockSlide(object.num);
else } else {
editor.WordControl.m_oLogicDocument.DrawingDocument.UnLockSlide(object.num); editor.WordControl.m_oLogicDocument.DrawingDocument.UnLockSlide(object.num);
} }
if(object instanceof CPresentation) }
{ if (object instanceof CPresentation) {
if(Class === object.themeLock) if (Class === object.themeLock) {
{ if (NewType !== locktype_Mine && NewType !== locktype_None) {
if(NewType !== locktype_Mine && NewType !== locktype_None)
editor.asc_fireCallback("asc_onLockDocumentTheme"); editor.asc_fireCallback("asc_onLockDocumentTheme");
else } else {
editor.asc_fireCallback("asc_onUnLockDocumentTheme"); editor.asc_fireCallback("asc_onUnLockDocumentTheme");
} }
if(Class === object.slideSizeLock) }
{ if (Class === object.slideSizeLock) {
if(NewType !== locktype_Mine && NewType !== locktype_None) if (NewType !== locktype_Mine && NewType !== locktype_None) {
editor.asc_fireCallback("asc_onLockDocumentProps"); editor.asc_fireCallback("asc_onLockDocumentProps");
else } else {
editor.asc_fireCallback("asc_onUnLockDocumentProps"); editor.asc_fireCallback("asc_onUnLockDocumentProps");
} }
} }
} }
} }
} }
else } else {
{
CollaborativeEditing.Remove_NeedLock(Id); CollaborativeEditing.Remove_NeedLock(Id);
} }
} }
...@@ -3926,6 +3908,12 @@ asc_docs_api.prototype.OpenDocumentEndCallback = function() ...@@ -3926,6 +3908,12 @@ asc_docs_api.prototype.OpenDocumentEndCallback = function()
} }
return; return;
} }
// Применяем все lock-и (ToDo возможно стоит пересмотреть вообще Lock-и)
for (var i = 0; i < this.arrPreOpenLocksObjects.length; ++i) {
this.arrPreOpenLocksObjects[i]();
}
this.arrPreOpenLocksObjects = [];
} }
} }
this.WordControl.m_oLogicDocument.Recalculate({Drawings: {All:true, Map: {}}}); this.WordControl.m_oLogicDocument.Recalculate({Drawings: {All:true, Map: {}}});
......
...@@ -411,6 +411,9 @@ function asc_docs_api(name) ...@@ -411,6 +411,9 @@ function asc_docs_api(name)
this.isApplyChangesOnOpen = false; this.isApplyChangesOnOpen = false;
this.isApplyChangesOnOpenEnabled = true; this.isApplyChangesOnOpenEnabled = true;
// Массив lock-ов, которые были на открытии документа
this.arrPreOpenLocksObjects = [];
this.mailMergeFileData = null; this.mailMergeFileData = null;
// Тип состояния на данный момент (сохранение, открытие или никакое) // Тип состояния на данный момент (сохранение, открытие или никакое)
...@@ -521,7 +524,6 @@ function asc_docs_api(name) ...@@ -521,7 +524,6 @@ function asc_docs_api(name)
this.ParcedDocument = false; this.ParcedDocument = false;
this.isStartCoAuthoringOnEndLoad = false; // Подсоединились раньше, чем документ загрузился this.isStartCoAuthoringOnEndLoad = false; // Подсоединились раньше, чем документ загрузился
this.TrackFile = null;
this.fCurCallback = null; this.fCurCallback = null;
var oThis = this; var oThis = this;
...@@ -1310,80 +1312,80 @@ asc_docs_api.prototype._coAuthoringInit = function(fCallback) ...@@ -1310,80 +1312,80 @@ asc_docs_api.prototype._coAuthoringInit = function(fCallback)
this.CoAuthoringApi.onAuthParticipantsChanged = function (e, count) { t.asc_fireCallback("asc_onAuthParticipantsChanged", e, count); }; this.CoAuthoringApi.onAuthParticipantsChanged = function (e, count) { t.asc_fireCallback("asc_onAuthParticipantsChanged", e, count); };
this.CoAuthoringApi.onMessage = function (e, clear) { t.asc_fireCallback("asc_onCoAuthoringChatReceiveMessage", e, clear); }; this.CoAuthoringApi.onMessage = function (e, clear) { t.asc_fireCallback("asc_onCoAuthoringChatReceiveMessage", e, clear); };
this.CoAuthoringApi.onConnectionStateChanged = function (e) { t.asc_fireCallback("asc_onConnectionStateChanged", e); }; this.CoAuthoringApi.onConnectionStateChanged = function (e) { t.asc_fireCallback("asc_onConnectionStateChanged", e); };
this.CoAuthoringApi.onLocksAcquired = function (e) this.CoAuthoringApi.onLocksAcquired = function(e) {
{ if (t.isApplyChangesOnOpenEnabled) {
if ( 2 != e["state"] ) // Пока документ еще не загружен, будем сохранять функцию и аргументы
{ t.arrPreOpenLocksObjects.push(function(){t.CoAuthoringApi.onLocksAcquired(e);});
return;
}
if (2 != e["state"]) {
var Id = e["block"]; var Id = e["block"];
var Class = g_oTableId.Get_ById( Id ); var Class = g_oTableId.Get_ById(Id);
if ( null != Class ) if (null != Class) {
{
var Lock = Class.Lock; var Lock = Class.Lock;
var OldType = Class.Lock.Get_Type(); var OldType = Class.Lock.Get_Type();
if ( locktype_Other2 === OldType || locktype_Other3 === OldType ) if (locktype_Other2 === OldType || locktype_Other3 === OldType) {
Lock.Set_Type( locktype_Other3, true ); Lock.Set_Type(locktype_Other3, true);
else } else {
Lock.Set_Type( locktype_Other, true ); Lock.Set_Type(locktype_Other, true);
}
// Выставляем ID пользователя, залочившего данный элемент // Выставляем ID пользователя, залочившего данный элемент
Lock.Set_UserId( e["user"] ); Lock.Set_UserId(e["user"]);
if ( Class instanceof CHeaderFooterController ) if (Class instanceof CHeaderFooterController) {
editor.sync_LockHeaderFooters(); editor.sync_LockHeaderFooters();
else if ( Class instanceof CDocument ) } else if (Class instanceof CDocument) {
editor.sync_LockDocumentProps(); editor.sync_LockDocumentProps();
else if ( Class instanceof CComment ) } else if (Class instanceof CComment) {
editor.sync_LockComment(Class.Get_Id(), e["user"]); editor.sync_LockComment(Class.Get_Id(), e["user"]);
else if ( Class instanceof CGraphicObjects ) } else if (Class instanceof CGraphicObjects) {
editor.sync_LockDocumentSchema(); editor.sync_LockDocumentSchema();
}
// TODO: Здесь для ускорения надо сделать проверку, является ли текущим элемент с // TODO: Здесь для ускорения надо сделать проверку, является ли текущим элемент с
// заданным Id. Если нет, тогда и не надо обновлять состояние. // заданным Id. Если нет, тогда и не надо обновлять состояние.
editor.WordControl.m_oLogicDocument.Document_UpdateInterfaceState(); editor.WordControl.m_oLogicDocument.Document_UpdateInterfaceState();
} } else {
else
{
CollaborativeEditing.Add_NeedLock(Id, e["user"]); CollaborativeEditing.Add_NeedLock(Id, e["user"]);
} }
} }
}; };
this.CoAuthoringApi.onLocksReleased = function (e, bChanges) this.CoAuthoringApi.onLocksReleased = function(e, bChanges) {
{ if (t.isApplyChangesOnOpenEnabled) {
// Пока документ еще не загружен, будем сохранять функцию и аргументы
t.arrPreOpenLocksObjects.push(function(){t.CoAuthoringApi.onLocksReleased(e, bChanges);});
return;
}
var Id = e["block"]; var Id = e["block"];
var Class = g_oTableId.Get_ById( Id ); var Class = g_oTableId.Get_ById(Id);
if ( null != Class ) if (null != Class) {
{
var Lock = Class.Lock; var Lock = Class.Lock;
if ( "undefined" != typeof(Lock) ) if ("undefined" != typeof(Lock)) {
{
var CurType = Lock.Get_Type(); var CurType = Lock.Get_Type();
var NewType = locktype_None; var NewType = locktype_None;
if ( CurType === locktype_Other ) if (CurType === locktype_Other) {
{ if (true != bChanges) {
if ( true != bChanges )
NewType = locktype_None; NewType = locktype_None;
else } else {
{
NewType = locktype_Other2; NewType = locktype_Other2;
CollaborativeEditing.Add_Unlock(Class); CollaborativeEditing.Add_Unlock(Class);
} }
} } else if (CurType === locktype_Mine) {
else if ( CurType === locktype_Mine )
{
// Такого быть не должно // Такого быть не должно
NewType = locktype_Mine; NewType = locktype_Mine;
} } else if (CurType === locktype_Other2 || CurType === locktype_Other3) {
else if ( CurType === locktype_Other2 || CurType === locktype_Other3 )
NewType = locktype_Other2; NewType = locktype_Other2;
Lock.Set_Type( NewType, true );
} }
Lock.Set_Type(NewType, true);
} }
else } else {
{
CollaborativeEditing.Remove_NeedLock(Id); CollaborativeEditing.Remove_NeedLock(Id);
} }
}; };
...@@ -6185,6 +6187,12 @@ asc_docs_api.prototype.OpenDocumentEndCallback = function() ...@@ -6185,6 +6187,12 @@ asc_docs_api.prototype.OpenDocumentEndCallback = function()
this.isApplyChangesOnOpen = true; this.isApplyChangesOnOpen = true;
CollaborativeEditing.Apply_Changes(); CollaborativeEditing.Apply_Changes();
CollaborativeEditing.Release_Locks(); CollaborativeEditing.Release_Locks();
// Применяем все lock-и (ToDo возможно стоит пересмотреть вообще Lock-и)
for (var i = 0; i < this.arrPreOpenLocksObjects.length; ++i) {
this.arrPreOpenLocksObjects[i]();
}
this.arrPreOpenLocksObjects = [];
} }
// History.RecalcData_Add( { Type : historyrecalctype_Inline, Data : { Pos : 0, PageNum : 0 } } ); // History.RecalcData_Add( { Type : historyrecalctype_Inline, Data : { Pos : 0, PageNum : 0 } } );
......
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