diff --git a/apps/api/documents/api.js b/apps/api/documents/api.js
index 7fb890c11..80b7618ad 100644
--- a/apps/api/documents/api.js
+++ b/apps/api/documents/api.js
@@ -662,6 +662,13 @@
});
};
+ var _requestClose = function(data) {
+ _sendCommand({
+ command: 'requestClose',
+ data: data
+ });
+ };
+
var _processMouse = function(evt) {
var r = iframe.getBoundingClientRect();
var data = {
@@ -708,7 +715,8 @@
insertImage : _insertImage,
setMailMergeRecipients: _setMailMergeRecipients,
setRevisedFile : _setRevisedFile,
- setFavorite : _setFavorite
+ setFavorite : _setFavorite,
+ requestClose : _requestClose
}
};
diff --git a/apps/common/Gateway.js b/apps/common/Gateway.js
index 8277acb77..2f13594b6 100644
--- a/apps/common/Gateway.js
+++ b/apps/common/Gateway.js
@@ -126,6 +126,10 @@ if (Common === undefined) {
'setFavorite': function(data) {
$me.trigger('setfavorite', data);
+ },
+
+ 'requestClose': function(data) {
+ $me.trigger('requestclose', data);
}
};
diff --git a/apps/documenteditor/embed/js/ApplicationController.js b/apps/documenteditor/embed/js/ApplicationController.js
index 3bf2092be..799312960 100644
--- a/apps/documenteditor/embed/js/ApplicationController.js
+++ b/apps/documenteditor/embed/js/ApplicationController.js
@@ -265,6 +265,7 @@ DE.ApplicationController = new(function(){
Common.Gateway.on('processmouse', onProcessMouse);
Common.Gateway.on('downloadas', onDownloadAs);
+ Common.Gateway.on('requestclose', onRequestClose);
DE.ApplicationView.tools.get('#idt-fullscreen')
.on('click', function(){
@@ -493,6 +494,10 @@ DE.ApplicationController = new(function(){
}
}
+ function onRequestClose() {
+ Common.Gateway.requestClose();
+ }
+
function onDownloadAs() {
if ( permissions.download === false) {
Common.Gateway.reportError(Asc.c_oAscError.ID.AccessDeny, me.errorAccessDeny);
diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js
index 333ec4d27..f90cd8460 100644
--- a/apps/documenteditor/main/app/controller/Main.js
+++ b/apps/documenteditor/main/app/controller/Main.js
@@ -706,11 +706,37 @@ define([
app.getController('Viewport').SetDisabled(disable);
},
+ onRequestClose: function() {
+ var me = this;
+ if (this.api.isDocumentModified()) {
+ this.api.asc_stopSaving();
+ Common.UI.warning({
+ closable: false,
+ width: 500,
+ title: this.notcriticalErrorTitle,
+ msg: this.leavePageTextOnClose,
+ buttons: ['ok', 'cancel'],
+ primary: 'ok',
+ callback: function(btn) {
+ if (btn == 'ok') {
+ me.api.asc_undoAllChanges();
+ me.api.asc_continueSaving();
+ Common.Gateway.requestClose();
+ // Common.Controllers.Desktop.requestClose();
+ } else
+ me.api.asc_continueSaving();
+ }
+ });
+ } else {
+ Common.Gateway.requestClose();
+ // Common.Controllers.Desktop.requestClose();
+ }
+ },
+
goBack: function(current) {
if ( !Common.Controllers.Desktop.process('goback') ) {
if (this.appOptions.customization.goback.requestClose && this.appOptions.canRequestClose) {
- Common.Gateway.requestClose();
- // Common.Controllers.Desktop.requestClose();
+ this.onRequestClose();
} else {
var href = this.appOptions.customization.goback.url;
if (!current && this.appOptions.customization.goback.blank!==false) {
@@ -1146,6 +1172,7 @@ define([
Common.Gateway.on('refreshhistory', _.bind(me.onRefreshHistory, me));
Common.Gateway.on('downloadas', _.bind(me.onDownloadAs, me));
Common.Gateway.on('setfavorite', _.bind(me.onSetFavorite, me));
+ Common.Gateway.on('requestclose', _.bind(me.onRequestClose, me));
Common.Gateway.sendInfo({mode:me.appOptions.isEdit?'edit':'view'});
@@ -2849,7 +2876,8 @@ define([
textLongName: 'Enter a name that is less than 128 characters.',
textGuest: 'Guest',
errorSubmit: 'Submit failed.',
- txtClickToLoad: 'Click to load image'
+ txtClickToLoad: 'Click to load image',
+ leavePageTextOnClose: 'All unsaved changes in this document will be lost.
Click \'Cancel\' then \'Save\' to save them. Click \'OK\' to discard all the unsaved changes.'
}
})(), DE.Controllers.Main || {}))
});
\ No newline at end of file
diff --git a/apps/documenteditor/main/locale/en.json b/apps/documenteditor/main/locale/en.json
index 38ff92e7f..7dd897bfe 100644
--- a/apps/documenteditor/main/locale/en.json
+++ b/apps/documenteditor/main/locale/en.json
@@ -842,6 +842,7 @@
"DE.Controllers.Main.warnNoLicense": "You've reached the limit for simultaneous connections to %1 editors. This document will be opened for viewing only.
Contact %1 sales team for personal upgrade terms.",
"DE.Controllers.Main.warnNoLicenseUsers": "You've reached the user limit for %1 editors. Contact %1 sales team for personal upgrade terms.",
"DE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.",
+ "DE.Controllers.Main.leavePageTextOnClose": "All unsaved changes in this document will be lost.
Click \"Cancel\" then \"Save\" to save them. Click \"OK\" to discard all the unsaved changes.",
"DE.Controllers.Navigation.txtBeginning": "Beginning of document",
"DE.Controllers.Navigation.txtGotoBeginning": "Go to the beginning of the document",
"DE.Controllers.Statusbar.textHasChanges": "New changes have been tracked",
diff --git a/apps/documenteditor/mobile/app/controller/Main.js b/apps/documenteditor/mobile/app/controller/Main.js
index 498013760..8bf394223 100644
--- a/apps/documenteditor/mobile/app/controller/Main.js
+++ b/apps/documenteditor/mobile/app/controller/Main.js
@@ -368,6 +368,10 @@ define([
}
},
+ onRequestClose: function() {
+ Common.Gateway.requestClose();
+ },
+
goBack: function(current) {
if (this.appOptions.customization.goback.requestClose && this.appOptions.canRequestClose) {
Common.Gateway.requestClose();
@@ -633,6 +637,7 @@ define([
Common.Gateway.on('processsaveresult', _.bind(me.onProcessSaveResult, me));
Common.Gateway.on('processrightschange', _.bind(me.onProcessRightsChange, me));
Common.Gateway.on('downloadas', _.bind(me.onDownloadAs, me));
+ Common.Gateway.on('requestclose', _.bind(me.onRequestClose, me));
Common.Gateway.sendInfo({
mode: me.appOptions.isEdit ? 'edit' : 'view'
diff --git a/apps/presentationeditor/embed/js/ApplicationController.js b/apps/presentationeditor/embed/js/ApplicationController.js
index c251151be..9875494fd 100644
--- a/apps/presentationeditor/embed/js/ApplicationController.js
+++ b/apps/presentationeditor/embed/js/ApplicationController.js
@@ -273,6 +273,7 @@ PE.ApplicationController = new(function(){
Common.Gateway.on('processmouse', onProcessMouse);
Common.Gateway.on('downloadas', onDownloadAs);
+ Common.Gateway.on('requestclose', onRequestClose);
PE.ApplicationView.tools.get('#idt-fullscreen')
.on('click', function(){
@@ -593,6 +594,10 @@ PE.ApplicationController = new(function(){
}
}
+ function onRequestClose() {
+ Common.Gateway.requestClose();
+ }
+
function onDownloadAs() {
if ( permissions.download === false) {
Common.Gateway.reportError(Asc.c_oAscError.ID.AccessDeny, me.errorAccessDeny);
diff --git a/apps/presentationeditor/main/app/controller/Main.js b/apps/presentationeditor/main/app/controller/Main.js
index e2ac281f1..f3468f5cd 100644
--- a/apps/presentationeditor/main/app/controller/Main.js
+++ b/apps/presentationeditor/main/app/controller/Main.js
@@ -486,12 +486,38 @@ define([
}
},
+ onRequestClose: function() {
+ var me = this;
+ if (this.api.isDocumentModified()) {
+ this.api.asc_stopSaving();
+ Common.UI.warning({
+ closable: false,
+ width: 500,
+ title: this.notcriticalErrorTitle,
+ msg: this.leavePageTextOnClose,
+ buttons: ['ok', 'cancel'],
+ primary: 'ok',
+ callback: function(btn) {
+ if (btn == 'ok') {
+ me.api.asc_undoAllChanges();
+ me.api.asc_continueSaving();
+ Common.Gateway.requestClose();
+ // Common.Controllers.Desktop.requestClose();
+ } else
+ me.api.asc_continueSaving();
+ }
+ });
+ } else {
+ Common.Gateway.requestClose();
+ // Common.Controllers.Desktop.requestClose();
+ }
+ },
+
goBack: function(current) {
var me = this;
if ( !Common.Controllers.Desktop.process('goback') ) {
if (me.appOptions.customization.goback.requestClose && me.appOptions.canRequestClose) {
- Common.Gateway.requestClose();
- // Common.Controllers.Desktop.requestClose();
+ me.onRequestClose();
} else {
var href = me.appOptions.customization.goback.url;
if (!current && me.appOptions.customization.goback.blank!==false) {
@@ -871,7 +897,7 @@ define([
Common.Gateway.on('downloadas', _.bind(me.onDownloadAs, me));
Common.Gateway.on('setfavorite', _.bind(me.onSetFavorite, me));
Common.Gateway.on('refreshhistory', _.bind(me.onRefreshHistory, me));
-
+ Common.Gateway.on('requestclose', _.bind(me.onRequestClose, me));
Common.Gateway.sendInfo({mode:me.appOptions.isEdit?'edit':'view'});
$(document).on('contextmenu', _.bind(me.onContextMenu, me));
@@ -2648,7 +2674,8 @@ define([
textRenameError: 'User name must not be empty.',
textLongName: 'Enter a name that is less than 128 characters.',
textGuest: 'Guest',
- txtErrorLoadHistory: 'Loading history failed'
+ txtErrorLoadHistory: 'Loading history failed',
+ leavePageTextOnClose: 'All unsaved changes in this document will be lost.
Click \'Cancel\' then \'Save\' to save them. Click \'OK\' to discard all the unsaved changes.'
}
})(), PE.Controllers.Main || {}))
});
diff --git a/apps/presentationeditor/main/locale/en.json b/apps/presentationeditor/main/locale/en.json
index 936c7700c..c9e2481d1 100644
--- a/apps/presentationeditor/main/locale/en.json
+++ b/apps/presentationeditor/main/locale/en.json
@@ -712,6 +712,7 @@
"PE.Controllers.Main.warnNoLicenseUsers": "You've reached the user limit for %1 editors. Contact %1 sales team for personal upgrade terms.",
"PE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.",
"PE.Controllers.Main.txtErrorLoadHistory": "History loading failed",
+ "PE.Controllers.Main.leavePageTextOnClose": "All unsaved changes in this presentation will be lost.
Click \"Cancel\" then \"Save\" to save them. Click \"OK\" to discard all the unsaved changes.",
"PE.Controllers.Statusbar.zoomText": "Zoom {0}%",
"PE.Controllers.Toolbar.confirmAddFontName": "The font you are going to save is not available on the current device.
The text style will be displayed using one of the system fonts, the saved font will be used when it is available.
Do you want to continue?",
"PE.Controllers.Toolbar.textAccent": "Accents",
diff --git a/apps/presentationeditor/mobile/app/controller/Main.js b/apps/presentationeditor/mobile/app/controller/Main.js
index 9a278c046..67d248afc 100644
--- a/apps/presentationeditor/mobile/app/controller/Main.js
+++ b/apps/presentationeditor/mobile/app/controller/Main.js
@@ -351,6 +351,10 @@ define([
this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PPTX, true));
},
+ onRequestClose: function() {
+ Common.Gateway.requestClose();
+ },
+
goBack: function(current) {
if (this.appOptions.customization.goback.requestClose && this.appOptions.canRequestClose) {
Common.Gateway.requestClose();
@@ -579,6 +583,7 @@ define([
Common.Gateway.on('processsaveresult', _.bind(me.onProcessSaveResult, me));
Common.Gateway.on('processrightschange', _.bind(me.onProcessRightsChange, me));
Common.Gateway.on('downloadas', _.bind(me.onDownloadAs, me));
+ Common.Gateway.on('requestclose', _.bind(me.onRequestClose, me));
Common.Gateway.sendInfo({
mode: me.appOptions.isEdit ? 'edit' : 'view'
diff --git a/apps/spreadsheeteditor/embed/js/ApplicationController.js b/apps/spreadsheeteditor/embed/js/ApplicationController.js
index ca30a2365..6833f554a 100644
--- a/apps/spreadsheeteditor/embed/js/ApplicationController.js
+++ b/apps/spreadsheeteditor/embed/js/ApplicationController.js
@@ -210,6 +210,7 @@ SSE.ApplicationController = new(function(){
Common.Gateway.on('processmouse', onProcessMouse);
Common.Gateway.on('downloadas', onDownloadAs);
+ Common.Gateway.on('requestclose', onRequestClose);
SSE.ApplicationView.tools.get('#idt-fullscreen')
.on('click', function(){
@@ -499,6 +500,10 @@ SSE.ApplicationController = new(function(){
}
}
+ function onRequestClose() {
+ Common.Gateway.requestClose();
+ }
+
function onDownloadAs() {
if ( permissions.download === false) {
Common.Gateway.reportError(Asc.c_oAscError.ID.AccessDeny, me.errorAccessDeny);
diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js
index d0606c61b..cc4c2f296 100644
--- a/apps/spreadsheeteditor/main/app/controller/Main.js
+++ b/apps/spreadsheeteditor/main/app/controller/Main.js
@@ -551,12 +551,38 @@ define([
}
},
+ onRequestClose: function() {
+ var me = this;
+ if (this.api.asc_isDocumentModified()) {
+ this.api.asc_stopSaving();
+ Common.UI.warning({
+ closable: false,
+ width: 500,
+ title: this.notcriticalErrorTitle,
+ msg: this.leavePageTextOnClose,
+ buttons: ['ok', 'cancel'],
+ primary: 'ok',
+ callback: function(btn) {
+ if (btn == 'ok') {
+ me.api.asc_undoAllChanges();
+ me.api.asc_continueSaving();
+ Common.Gateway.requestClose();
+ // Common.Controllers.Desktop.requestClose();
+ } else
+ me.api.asc_continueSaving();
+ }
+ });
+ } else {
+ Common.Gateway.requestClose();
+ // Common.Controllers.Desktop.requestClose();
+ }
+ },
+
goBack: function(current) {
var me = this;
if ( !Common.Controllers.Desktop.process('goback') ) {
if (me.appOptions.customization.goback.requestClose && me.appOptions.canRequestClose) {
- Common.Gateway.requestClose();
- // Common.Controllers.Desktop.requestClose();
+ me.onRequestClose();
} else {
var href = me.appOptions.customization.goback.url;
if (!current && me.appOptions.customization.goback.blank!==false) {
@@ -927,6 +953,7 @@ define([
Common.Gateway.on('processmouse', _.bind(me.onProcessMouse, me));
Common.Gateway.on('downloadas', _.bind(me.onDownloadAs, me));
Common.Gateway.on('setfavorite', _.bind(me.onSetFavorite, me));
+ Common.Gateway.on('requestclose', _.bind(me.onRequestClose, me));
Common.Gateway.sendInfo({mode:me.appOptions.isEdit?'edit':'view'});
$(document).on('contextmenu', _.bind(me.onContextMenu, me));
@@ -2870,7 +2897,8 @@ define([
txtMonths: 'Months',
txtQuarters: 'Quarters',
txtYears: 'Years',
- errorPivotGroup: 'Cannot group that selection.'
+ errorPivotGroup: 'Cannot group that selection.',
+ leavePageTextOnClose: 'All unsaved changes in this document will be lost.
Click \'Cancel\' then \'Save\' to save them. Click \'OK\' to discard all the unsaved changes.'
}
})(), SSE.Controllers.Main || {}))
});
diff --git a/apps/spreadsheeteditor/main/locale/en.json b/apps/spreadsheeteditor/main/locale/en.json
index 2294734ec..356da4318 100644
--- a/apps/spreadsheeteditor/main/locale/en.json
+++ b/apps/spreadsheeteditor/main/locale/en.json
@@ -972,6 +972,7 @@
"SSE.Controllers.Main.warnNoLicense": "You've reached the limit for simultaneous connections to %1 editors. This document will be opened for viewing only.
Contact %1 sales team for personal upgrade terms.",
"SSE.Controllers.Main.warnNoLicenseUsers": "You've reached the user limit for %1 editors. Contact %1 sales team for personal upgrade terms.",
"SSE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.",
+ "SSE.Controllers.Main.leavePageTextOnClose": "All unsaved changes in this spreadsheet will be lost.
Click \"Cancel\" then \"Save\" to save them. Click \"OK\" to discard all the unsaved changes.",
"SSE.Controllers.Print.strAllSheets": "All Sheets",
"SSE.Controllers.Print.textFirstCol": "First column",
"SSE.Controllers.Print.textFirstRow": "First row",
diff --git a/apps/spreadsheeteditor/mobile/app/controller/Main.js b/apps/spreadsheeteditor/mobile/app/controller/Main.js
index 7b5058e0c..009aac0d6 100644
--- a/apps/spreadsheeteditor/mobile/app/controller/Main.js
+++ b/apps/spreadsheeteditor/mobile/app/controller/Main.js
@@ -362,6 +362,10 @@ define([
this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.XLSX, true));
},
+ onRequestClose: function() {
+ Common.Gateway.requestClose();
+ },
+
goBack: function(current) {
if (this.appOptions.customization.goback.requestClose && this.appOptions.canRequestClose) {
Common.Gateway.requestClose();
@@ -600,6 +604,7 @@ define([
Common.Gateway.on('processsaveresult', _.bind(me.onProcessSaveResult, me));
Common.Gateway.on('processrightschange', _.bind(me.onProcessRightsChange, me));
Common.Gateway.on('downloadas', _.bind(me.onDownloadAs, me));
+ Common.Gateway.on('requestclose', _.bind(me.onRequestClose, me));
Common.Gateway.sendInfo({
mode: me.appOptions.isEdit ? 'edit' : 'view'