From 84d357560ed950a395f1c6209a6acf8e593f8fd1 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 29 Mar 2021 14:30:31 +0300 Subject: [PATCH] Add method requestClose (show warning on unsaved changes) --- apps/api/documents/api.js | 10 +++- apps/common/Gateway.js | 4 ++ .../embed/js/ApplicationController.js | 5 ++ .../main/app/controller/Main.js | 51 ++++++++++-------- .../mobile/app/controller/Main.js | 5 ++ .../embed/js/ApplicationController.js | 5 ++ .../main/app/controller/Main.js | 52 +++++++++++-------- .../mobile/app/controller/Main.js | 5 ++ .../embed/js/ApplicationController.js | 5 ++ .../main/app/controller/Main.js | 50 ++++++++++-------- .../mobile/app/controller/Main.js | 5 ++ 11 files changed, 128 insertions(+), 69 deletions(-) diff --git a/apps/api/documents/api.js b/apps/api/documents/api.js index 534d77d8e..346ed100a 100644 --- a/apps/api/documents/api.js +++ b/apps/api/documents/api.js @@ -657,6 +657,13 @@ }); }; + var _requestClose = function(data) { + _sendCommand({ + command: 'requestClose', + data: data + }); + }; + var _processMouse = function(evt) { var r = iframe.getBoundingClientRect(); var data = { @@ -703,7 +710,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 35a04ec82..de81cfb34 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 321334bc1..437e56794 100644 --- a/apps/documenteditor/main/app/controller/Main.js +++ b/apps/documenteditor/main/app/controller/Main.js @@ -706,32 +706,36 @@ 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(); + 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) { - if (this.api.isDocumentModified()) { - var me = this; - 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(); - Common.Gateway.requestClose(); - // Common.Controllers.Desktop.requestClose(); - } else - me.api.asc_continueSaving(); - } - }); - } else { - 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) { @@ -1167,6 +1171,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'}); diff --git a/apps/documenteditor/mobile/app/controller/Main.js b/apps/documenteditor/mobile/app/controller/Main.js index 66f8d59fc..ca00cd148 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 8fc8bc90a..0781d002d 100644 --- a/apps/presentationeditor/main/app/controller/Main.js +++ b/apps/presentationeditor/main/app/controller/Main.js @@ -485,32 +485,37 @@ 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(); + 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) { - 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(); - Common.Gateway.requestClose(); - // Common.Controllers.Desktop.requestClose(); - } else - me.api.asc_continueSaving(); - } - }); - } else { - 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) { @@ -889,7 +894,8 @@ 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)); diff --git a/apps/presentationeditor/mobile/app/controller/Main.js b/apps/presentationeditor/mobile/app/controller/Main.js index 4c9c14894..b69ae1f9c 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 f4bdcded5..3e72bc703 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -548,32 +548,37 @@ 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(); + 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) { - 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(); - Common.Gateway.requestClose(); - // Common.Controllers.Desktop.requestClose(); - } else - me.api.asc_continueSaving(); - } - }); - } else { - 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) { @@ -944,6 +949,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)); diff --git a/apps/spreadsheeteditor/mobile/app/controller/Main.js b/apps/spreadsheeteditor/mobile/app/controller/Main.js index 1c6d2d289..7d7d6de1f 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'