Commit 3095b01f authored by Alexander.Trofimov's avatar Alexander.Trofimov Committed by Alexander.Trofimov

Добавил функцию asc_isDocumentCanSave (Эта функция возвращает true, если есть...

Добавил функцию asc_isDocumentCanSave (Эта функция возвращает true, если есть изменения или есть lock-и в документе)
Добавил эвент asc_onDocumentCanSaveChanged - эвент об обновлении статуса "можно ли сохранять файл"
Все это нужно для правки бага http://bugzserver/show_bug.cgi?id=25989

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@57808 954022d7-b5bf-4e40-9824-e11837661b57
parent 4721a3fa
......@@ -95,6 +95,7 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
this.CoAuthoringApi = new CDocsCoApi();
this.collaborativeEditing = null;
this.isCoAuthoringEnable = true;
this.isDocumentCanSave = false; // Флаг, говорит о возможности сохранять документ (активна кнопка save или нет)
// AutoSave
this.lastSaveTime = null; // Время последнего сохранения
......@@ -589,6 +590,8 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
this.CoAuthoringApi.unSaveChanges();
if (!isDocumentSaved)
this.CoAuthoringApi.disconnect();
// Обновляем состояние возможности сохранения документа
this._onUpdateDocumentCanSave();
};
spreadsheet_api.prototype.asc_Print = function(adjustPrint){
......@@ -1146,6 +1149,12 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
}
return false;
};
/**
* Эта функция возвращает true, если есть изменения или есть lock-и в документе
*/
spreadsheet_api.prototype.asc_isDocumentCanSave = function () {
return this.isDocumentCanSave;
};
spreadsheet_api.prototype.asc_getCanUndo = function () {
return History.Can_Undo();
......@@ -1188,6 +1197,7 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
* asc_onStopFormatPainter () - эвент об окончании форматирования по образцу
* asc_onUpdateSheetSettings () - эвент об обновлении свойств листа (закрепленная область, показывать сетку/заголовки)
* asc_onUpdateTabColor (index) - эвент об обновлении цвета иконки листа
* asc_onDocumentCanSaveChanged (bIsCanSave) - эвент об обновлении статуса "можно ли сохранять файл"
*/
spreadsheet_api.prototype.asc_StartAction = function (type, id) {
......@@ -1482,7 +1492,8 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
"showComments": function () {t._onShowComments.apply(t, arguments);},
"unlockComments": function () {t._onUnlockComments.apply(t);},
"tryUnlockComment": function () {t._onTryUnlockComment.apply(t, arguments);},
"cleanSelection": function () {t._onCleanSelection.apply(t, arguments);}
"cleanSelection": function () {t._onCleanSelection.apply(t, arguments);},
"updateDocumentCanSave": function () {t._onUpdateDocumentCanSave();}
}, this.asc_getViewerMode());
if (!this.CoAuthoringApi) {
......@@ -3195,6 +3206,16 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
}
};
spreadsheet_api.prototype._onUpdateDocumentCanSave = function () {
// Можно модифицировать это условие на более быстрое (менять самим состояние в аргументах, а не запрашивать каждый раз)
var tmp = this.asc_isDocumentModified() || (this.collaborativeEditing.getCollaborativeEditing() &&
0 !== this.collaborativeEditing.getOwnLocksLength());
if (tmp !== this.isDocumentCanSave) {
this.isDocumentCanSave = tmp;
this.handlers.trigger('asc_onDocumentCanSaveChanged', this.isDocumentCanSave);
}
};
// offline mode
spreadsheet_api.prototype.offlineModeInit = function() {
......@@ -3219,13 +3240,11 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
oAdditionalData["vkey"] = t.documentVKey;
oAdditionalData["outputformat"] = c_oAscFileType.PDFPRINT;
var bStart = false;
t.adjustPrint = new asc_CAdjustPrint();
t.printPagesData = t.wb.calcPagesPrint(t.adjustPrint);
var pdf_writer = new CPdfPrinter(t.wbModel.sUrlPath);
var isEndPrint = t.wb.printSheet(pdf_writer, t.printPagesData);
t.wb.printSheet(pdf_writer, t.printPagesData);
return pdf_writer.DocumentRenderer.Memory.GetBase64Memory();
};
......@@ -3234,9 +3253,9 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
if (!window['scriptBridge']['addFileImage']) {
window['scriptBridge']['addFileImage'] = function(imageUrl, x, y, width, height) {
var ws = t.wb.getWorksheet();
ws.model.workbook.handlers.trigger("asc_onStartAction", c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.LoadImage);
t.handlers.trigger("asc_onStartAction", c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.LoadImage);
var ws = t.wb.getWorksheet();
var options = null;
if (x && y) {
var picker = ws.objectRender.getPositionInfo(x,y);
......@@ -3245,7 +3264,7 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
}
ws.objectRender.addImageDrawingObject(imageUrl, options);
ws.model.workbook.handlers.trigger("asc_onEndAction", c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.LoadImage);
t.handlers.trigger("asc_onEndAction", c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.LoadImage);
};
}
......@@ -3600,6 +3619,7 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
prot["asc_getDocumentName"] = prot.asc_getDocumentName;
prot["asc_getDocumentFormat"] = prot.asc_getDocumentFormat;
prot["asc_isDocumentModified"] = prot.asc_isDocumentModified;
prot["asc_isDocumentCanSave"] = prot.asc_isDocumentCanSave;
prot["asc_getCanUndo"] = prot.asc_getCanUndo;
prot["asc_getCanRedo"] = prot.asc_getCanRedo;
......
......@@ -35,7 +35,6 @@
this.handlers = new asc.asc_CHandlersList(handlers);
this.m_bIsViewerMode = !!isViewerMode; // Режим Viewer-а
this.m_bIsCollaborative = false; // Совместное ли редактирование
this.m_bGlobalLock = false; // Глобальный lock
this.m_bGlobalLockEditCell = false; // Глобальный lock (для редактирования ячейки) - отключаем смену select-а, но разрешаем сразу вводить
this.m_arrCheckLocks = []; // Массив для проверки залоченности объектов, которые мы собираемся изменять
......@@ -94,6 +93,10 @@
return 1 !== this.m_nUseType;
};
CCollaborativeEditing.prototype.getOwnLocksLength = function () {
return this.m_arrNeedUnlock2.length;
};
//-----------------------------------------------------------------------------------
// Функции для проверки залоченности объектов
//-----------------------------------------------------------------------------------
......@@ -167,6 +170,7 @@
};
CCollaborativeEditing.prototype.addUnlock2 = function (Lock) {
this.m_arrNeedUnlock2.push (Lock);
this.handlers.trigger("updateDocumentCanSave");
};
CCollaborativeEditing.prototype.removeUnlock = function (Lock) {
......
......@@ -459,6 +459,7 @@
});
this.model.handlers.add("setDocumentModified", function (bIsModified) {
self.handlers.trigger("asc_onDocumentModifiedChanged", bIsModified);
self.Api._onUpdateDocumentCanSave();
});
this.model.handlers.add("initCommentsToSave", function () {
self._initCommentsToSave();
......
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