From a8579827e0582a4e53e5e9d43e3a3677bc060f68 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 28 Jun 2021 20:03:50 +0300 Subject: [PATCH 1/8] File menu refactoring --- apps/documenteditor/main/app/view/FileMenu.js | 6 +++--- .../presentationeditor/main/app/view/FileMenu.js | 10 +++++++--- apps/spreadsheeteditor/main/app/view/FileMenu.js | 16 ++++++++++++++++ 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/apps/documenteditor/main/app/view/FileMenu.js b/apps/documenteditor/main/app/view/FileMenu.js index ffdd1b0fa..20d5d6692 100644 --- a/apps/documenteditor/main/app/view/FileMenu.js +++ b/apps/documenteditor/main/app/view/FileMenu.js @@ -416,9 +416,9 @@ define([ _btn_rename = this.getButton('rename'), _btn_protect = this.getButton('protect'); - _btn_save[(disable || !this.mode.isEdit)?'hide':'show'](); - _btn_protect[(disable || !this.mode.isEdit)?'hide':'show'](); - _btn_rename[(disable || !this.mode.canRename || this.mode.isDesktopApp) ?'hide':'show'](); + _btn_save.setDisabled(disable || !this.mode.isEdit); + _btn_protect.setDisabled(disable || !this.mode.isEdit); + _btn_rename.setDisabled(disable || !this.mode.canRename || this.mode.isDesktopApp); }, isVisible: function () { diff --git a/apps/presentationeditor/main/app/view/FileMenu.js b/apps/presentationeditor/main/app/view/FileMenu.js index ba9e00248..8793e479e 100644 --- a/apps/presentationeditor/main/app/view/FileMenu.js +++ b/apps/presentationeditor/main/app/view/FileMenu.js @@ -140,6 +140,10 @@ define([ caption : this.btnRenameCaption, canFocused: false }); + if ( !!this.options.miRename ) { + this.miRename.setDisabled(this.options.miRename.isDisabled()); + delete this.options.miRename; + } this.miProtect = new Common.UI.MenuItem({ el : $markup.elementById('#fm-btn-protect'), @@ -452,9 +456,9 @@ define([ _btn_rename = this.getButton('rename'), _btn_protect = this.getButton('protect'); - _btn_save[(disable || !this.mode.isEdit)?'hide':'show'](); - _btn_protect[(disable || !this.mode.isEdit)?'hide':'show'](); - _btn_rename[(disable || !this.mode.canRename || this.mode.isDesktopApp) ?'hide':'show'](); + _btn_save.setDisabled(disable || !this.mode.isEdit); + _btn_protect.setDisabled(disable || !this.mode.isEdit); + _btn_rename.setDisabled(disable || !this.mode.canRename || this.mode.isDesktopApp); }, btnSaveCaption : 'Save', diff --git a/apps/spreadsheeteditor/main/app/view/FileMenu.js b/apps/spreadsheeteditor/main/app/view/FileMenu.js index 4f41c7ba0..13c4699a1 100644 --- a/apps/spreadsheeteditor/main/app/view/FileMenu.js +++ b/apps/spreadsheeteditor/main/app/view/FileMenu.js @@ -127,6 +127,10 @@ define([ caption : this.btnRenameCaption, canFocused: false }); + if ( !!this.options.miRename ) { + this.miRename.setDisabled(this.options.miRename.isDisabled()); + delete this.options.miRename; + } this.miProtect = new Common.UI.MenuItem({ el : $markup.elementById('#fm-btn-protect'), @@ -402,6 +406,8 @@ define([ if ( !this.rendered ) { if (type == 'save') { return this.options.miSave ? this.options.miSave : (this.options.miSave = new Common.UI.MenuItem({})); + } else if (type == 'rename') { + return this.options.miRename ? this.options.miRename : (this.options.miRename = new Common.UI.MenuItem({})); } else if (type == 'protect') { return this.options.miProtect ? this.options.miProtect : (this.options.miProtect = new Common.UI.MenuItem({})); @@ -410,6 +416,9 @@ define([ if (type == 'save') { return this.miSave; } else + if (type == 'rename') { + return this.miRename; + }else if (type == 'protect') { return this.miProtect; } @@ -423,6 +432,13 @@ define([ this.panels['opts'].disableEditing(disabled); this.miProtect.setDisabled(disabled); } + var _btn_save = this.getButton('save'), + _btn_rename = this.getButton('rename'), + _btn_protect = this.getButton('protect'); + + _btn_save.setDisabled(disable || !this.mode.isEdit); + _btn_protect.setDisabled(disable || !this.mode.isEdit); + _btn_rename.setDisabled(disable || !this.mode.canRename || this.mode.isDesktopApp); }, btnSaveCaption : 'Save', From 85271a0e0a17cc28304279f84badf7f62f6eb601 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 28 Jun 2021 20:12:31 +0300 Subject: [PATCH 2/8] [SSE] Refactoring disabled panels --- .../main/app/controller/CellEditor.js | 2 +- .../main/app/controller/LeftMenu.js | 20 +++++++++++++------ .../main/app/controller/Main.js | 17 ++++++++-------- .../main/app/controller/Viewport.js | 2 +- .../main/app/view/FileMenu.js | 11 +++++----- .../main/app/view/FileMenuPanels.js | 2 +- .../main/app/view/Statusbar.js | 2 +- 7 files changed, 32 insertions(+), 24 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/CellEditor.js b/apps/spreadsheeteditor/main/app/controller/CellEditor.js index 8a9beecf1..4806b55a3 100644 --- a/apps/spreadsheeteditor/main/app/controller/CellEditor.js +++ b/apps/spreadsheeteditor/main/app/controller/CellEditor.js @@ -323,7 +323,7 @@ define([ this.namedrange_locked = (state == Asc.c_oAscDefinedNameReason.LockDefNameManager); }, - disableEditing: function(disabled) { + SetDisabled: function(disabled) { this.editor.$btnfunc[!disabled?'removeClass':'addClass']('disabled'); this.editor.btnNamedRanges.setVisible(!disabled); }, diff --git a/apps/spreadsheeteditor/main/app/controller/LeftMenu.js b/apps/spreadsheeteditor/main/app/controller/LeftMenu.js index e60895ed3..2127bd08e 100644 --- a/apps/spreadsheeteditor/main/app/controller/LeftMenu.js +++ b/apps/spreadsheeteditor/main/app/controller/LeftMenu.js @@ -188,13 +188,21 @@ define([ return this; }, - disableEditing: function(disabled) { - this.leftMenu.btnComments.setDisabled(disabled); - this.leftMenu.btnChat.setDisabled(disabled); - this.leftMenu.btnPlugins.setDisabled(disabled); - this.leftMenu.btnSpellcheck.setDisabled(disabled); + SetDisabled: function(disable, disableFileMenu) { + this.mode.isEdit = !disable; + if (disable) this.leftMenu.close(); - this.leftMenu.getMenu('file').disableEditing(disabled); + /** coauthoring begin **/ + this.leftMenu.btnComments.setDisabled(disable); + var comments = this.getApplication().getController('Common.Controllers.Comments'); + if (comments) + comments.setPreviewMode(disable); + this.setPreviewMode(disable); + this.leftMenu.btnChat.setDisabled(disable); + /** coauthoring end **/ + this.leftMenu.btnPlugins.setDisabled(disable); + this.leftMenu.btnSpellcheck.setDisabled(disable); + if (disableFileMenu) this.leftMenu.getMenu('file').SetDisabled(disable); }, createDelayedElements: function() { diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index 6ee4976a2..4d4fcb73c 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -1036,8 +1036,14 @@ define([ var app = this.getApplication(); if (this.appOptions.canEdit && this.editorConfig.mode !== 'view') { app.getController('RightMenu').getView('RightMenu').clearSelection(); - app.getController('Toolbar').DisableToolbar(disable); + app.getController('RightMenu').SetDisabled(disable, false); + app.getController('Toolbar').DisableToolbar(disable,disable); + app.getController('Statusbar').SetDisabled(disable); } + app.getController('LeftMenu').SetDisabled(disable, true); + app.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); + app.getController('Viewport').SetDisabled(disable); + app.getController('CellEditor').SetDisabled(disable); }, onOpenDocument: function(progress) { @@ -2439,16 +2445,11 @@ define([ disablefunc: function (disable) { me.disableEditing(disable); var app = me.getApplication(); - app.getController('Toolbar').DisableToolbar(disable,disable); - app.getController('RightMenu').SetDisabled(disable, true); - app.getController('Statusbar').SetDisabled(disable); - app.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); app.getController('DocumentHolder').SetDisabled(disable); var leftMenu = app.getController('LeftMenu'); + leftMenu.leftMenu.getMenu('file').getButton('protect').setDisabled(disable); leftMenu.setPreviewMode(disable); - leftMenu.disableEditing(disable); - app.getController('CellEditor').disableEditing(disable); - app.getController('Viewport').disableEditing(disable); + var comments = app.getController('Common.Controllers.Comments'); if (comments) comments.setPreviewMode(disable); }}); diff --git a/apps/spreadsheeteditor/main/app/controller/Viewport.js b/apps/spreadsheeteditor/main/app/controller/Viewport.js index a42d3771b..525c719ab 100644 --- a/apps/spreadsheeteditor/main/app/controller/Viewport.js +++ b/apps/spreadsheeteditor/main/app/controller/Viewport.js @@ -505,7 +505,7 @@ define([ } }, - disableEditing: function (disabled) { + SetDisabled: function (disabled) { this.viewmode = disabled; this.header.mnuitemHideHeadings.setDisabled(disabled); this.header.mnuitemHideGridlines.setDisabled(disabled); diff --git a/apps/spreadsheeteditor/main/app/view/FileMenu.js b/apps/spreadsheeteditor/main/app/view/FileMenu.js index 13c4699a1..3b6256650 100644 --- a/apps/spreadsheeteditor/main/app/view/FileMenu.js +++ b/apps/spreadsheeteditor/main/app/view/FileMenu.js @@ -328,8 +328,7 @@ define([ } if ( this.mode.disableEditing != undefined ) { - this.panels['opts'].disableEditing(this.mode.disableEditing); - this.miProtect.setDisabled(this.mode.disableEditing); + this.panels['opts'].SetDisabled(this.mode.disableEditing); delete this.mode.disableEditing; } }, @@ -425,13 +424,13 @@ define([ } }, - disableEditing: function(disabled) { + SetDisabled: function(disable) { if ( !this.panels ) { - this.mode.disableEditing = disabled; + this.mode.disableEditing = disable; } else { - this.panels['opts'].disableEditing(disabled); - this.miProtect.setDisabled(disabled); + this.panels['opts'].SetDisabled(disable); } + var _btn_save = this.getButton('save'), _btn_rename = this.getButton('rename'), _btn_protect = this.getButton('protect'); diff --git a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js index b9bbfbf16..928b04cf3 100644 --- a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js +++ b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js @@ -261,7 +261,7 @@ define([ this.spellcheckSettings && this.spellcheckSettings.setApi(api); }, - disableEditing: function(disabled) { + SetDisabled: function(disabled) { if ( disabled ) { $(this.viewSettingsPicker.dataViewItems[1].el).hide(); $(this.viewSettingsPicker.dataViewItems[2].el).hide(); diff --git a/apps/spreadsheeteditor/main/app/view/Statusbar.js b/apps/spreadsheeteditor/main/app/view/Statusbar.js index 9801ab48f..038f60651 100644 --- a/apps/spreadsheeteditor/main/app/view/Statusbar.js +++ b/apps/spreadsheeteditor/main/app/view/Statusbar.js @@ -478,7 +478,7 @@ define([ this.mode = _.extend({}, this.mode, mode); // this.$el.find('.el-edit')[mode.isEdit?'show':'hide'](); this.btnAddWorksheet.setVisible(this.mode.isEdit); - this.btnAddWorksheet.setDisabled(this.mode.isDisconnected); + this.btnAddWorksheet.setDisabled(this.mode.isDisconnected || this.api && (this.api.asc_isWorkbookLocked() || this.api.isCellEdited) || this.rangeSelectionMode!=Asc.c_oAscSelectionDialogType.None); this.updateTabbarBorders(); }, From 8e5979570ba158669c7d52e2a8fe62a6aea4cef1 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Tue, 29 Jun 2021 16:27:44 +0300 Subject: [PATCH 3/8] [DE] Refactoring disable editing --- .../main/lib/controller/ReviewChanges.js | 54 +++++--- .../main/app/controller/FormsTab.js | 47 +++++-- .../main/app/controller/LeftMenu.js | 28 ++-- .../main/app/controller/Main.js | 130 +++++++++++++++--- apps/documenteditor/main/app/view/FileMenu.js | 8 +- .../main/app/view/MailMergeSettings.js | 41 ++++-- .../main/app/view/SignatureSettings.js | 47 +++++-- 7 files changed, 267 insertions(+), 88 deletions(-) diff --git a/apps/common/main/lib/controller/ReviewChanges.js b/apps/common/main/lib/controller/ReviewChanges.js index 28b169af6..4ebedb97a 100644 --- a/apps/common/main/lib/controller/ReviewChanges.js +++ b/apps/common/main/lib/controller/ReviewChanges.js @@ -728,25 +728,47 @@ define([ }, disableEditing: function(disable) { - var app = this.getApplication(); - app.getController('Toolbar').DisableToolbar(disable, false, true); - app.getController('DocumentHolder').getView().SetDisabled(disable); + Common.NotificationCenter.trigger('editing:disable', disable, { + viewMode: false, + reviewMode: true, + fillFormwMode: false, + allowMerge: false, + allowSignature: false, + allowProtect: false, + rightMenu: {clear: true, disable: true}, + statusBar: true, + leftMenu: {disable: false, previewMode: true}, + fileMenu: {protect: true, save: false, rename: false}, + navigation: {disable: false, previewMode: true}, + comments: {disable: false, previewMode: true}, + chat: false, + review: false, + viewport: false, + documentHolder: true, + toolbar: true, + plugins: true + }); - if (this.appConfig.canReview) { - app.getController('RightMenu').getView('RightMenu').clearSelection(); - app.getController('RightMenu').SetDisabled(disable, false); - app.getController('Statusbar').getView('Statusbar').SetDisabled(disable); - app.getController('Navigation') && app.getController('Navigation').SetDisabled(disable); - app.getController('Common.Controllers.Plugins').getView('Common.Views.Plugins').disableControls(disable); - } - var comments = app.getController('Common.Controllers.Comments'); - if (comments) - comments.setPreviewMode(disable); + // var app = this.getApplication(); + // app.getController('Toolbar').DisableToolbar(disable, false, true); + // app.getController('DocumentHolder').getView().SetDisabled(disable); - var leftMenu = app.getController('LeftMenu'); - leftMenu.leftMenu.getMenu('file').getButton('protect').setDisabled(disable); - leftMenu.setPreviewMode(disable); + // if (this.appConfig.canReview) { + // app.getController('RightMenu').getView('RightMenu').clearSelection(); + // app.getController('RightMenu').SetDisabled(disable, false); + // app.getController('Statusbar').getView('Statusbar').SetDisabled(disable); + // app.getController('Navigation') && app.getController('Navigation').SetDisabled(disable); + // app.getController('Common.Controllers.Plugins').getView('Common.Views.Plugins').disableControls(disable); + // } + + // var comments = app.getController('Common.Controllers.Comments'); + // if (comments) + // comments.setPreviewMode(disable); + + // var leftMenu = app.getController('LeftMenu'); + // leftMenu.leftMenu.getMenu('file').getButton('protect').setDisabled(disable); + // leftMenu.setPreviewMode(disable); if (this.view) { this.view.$el.find('.no-group-mask.review').css('opacity', 1); diff --git a/apps/documenteditor/main/app/controller/FormsTab.js b/apps/documenteditor/main/app/controller/FormsTab.js index 43500dbdf..d38d7b09d 100644 --- a/apps/documenteditor/main/app/controller/FormsTab.js +++ b/apps/documenteditor/main/app/controller/FormsTab.js @@ -253,19 +253,40 @@ define([ if (this._state.DisabledEditing != disable) { this._state.DisabledEditing = disable; - var app = this.getApplication(); - var rightMenuController = app.getController('RightMenu'); - rightMenuController.getView('RightMenu').clearSelection(); - rightMenuController.SetDisabled(disable); - app.getController('Toolbar').DisableToolbar(disable, false, false, true); - app.getController('Statusbar').getView('Statusbar').SetDisabled(disable); - app.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); - app.getController('DocumentHolder').getView().SetDisabled(disable); - app.getController('Navigation') && app.getController('Navigation').SetDisabled(disable); - app.getController('LeftMenu').setPreviewMode(disable); - var comments = app.getController('Common.Controllers.Comments'); - if (comments) - comments.setPreviewMode(disable); + Common.NotificationCenter.trigger('editing:disable', disable, { + viewMode: false, + reviewMode: false, + fillFormwMode: true, + allowMerge: false, + allowSignature: false, + allowProtect: false, + rightMenu: {clear: true, disable: true}, + statusBar: true, + leftMenu: {disable: false, previewMode: true}, + fileMenu: false, + navigation: {disable: false, previewMode: true}, + comments: {disable: false, previewMode: true}, + chat: false, + review: true, + viewport: false, + documentHolder: true, + toolbar: true, + plugins: false + }); + + // var app = this.getApplication(); + // var rightMenuController = app.getController('RightMenu'); + // rightMenuController.getView('RightMenu').clearSelection(); + // rightMenuController.SetDisabled(disable); + // app.getController('Toolbar').DisableToolbar(disable, false, false, true); + // app.getController('Statusbar').getView('Statusbar').SetDisabled(disable); + // app.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); + // app.getController('DocumentHolder').getView().SetDisabled(disable); + // app.getController('Navigation') && app.getController('Navigation').SetDisabled(disable); + // app.getController('LeftMenu').setPreviewMode(disable); + // var comments = app.getController('Common.Controllers.Comments'); + // if (comments) + // comments.setPreviewMode(disable); if (this.view) this.view.$el.find('.no-group-mask.form-view').css('opacity', 1); } diff --git a/apps/documenteditor/main/app/controller/LeftMenu.js b/apps/documenteditor/main/app/controller/LeftMenu.js index 9251da230..20085bd8e 100644 --- a/apps/documenteditor/main/app/controller/LeftMenu.js +++ b/apps/documenteditor/main/app/controller/LeftMenu.js @@ -666,21 +666,25 @@ define([ this.dlgSearch && this.dlgSearch.setMode(this.viewmode ? 'no-replace' : 'search'); }, - SetDisabled: function(disable, disableFileMenu) { - this.mode.isEdit = !disable; + SetDisabled: function(disable, options) { + // if (viewMode) this.mode.isEdit = !disable; if (disable) this.leftMenu.close(); - /** coauthoring begin **/ - this.leftMenu.btnComments.setDisabled(disable); - var comments = this.getApplication().getController('Common.Controllers.Comments'); - if (comments) - comments.setPreviewMode(disable); - this.setPreviewMode(disable); - this.leftMenu.btnChat.setDisabled(disable); - /** coauthoring end **/ + // var comments = this.getApplication().getController('Common.Controllers.Comments'); + // if (comments) + // comments.setPreviewMode(disable); + // this.setPreviewMode(disable); + + if (!options || options.comments && options.comments.disable) + this.leftMenu.btnComments.setDisabled(disable); + if (!options || options.chat) + this.leftMenu.btnChat.setDisabled(disable); + if (!options || options.navigation && options.navigation.disable) + this.leftMenu.btnNavigation.setDisabled(disable); + this.leftMenu.btnPlugins.setDisabled(disable); - this.leftMenu.btnNavigation.setDisabled(disable); - if (disableFileMenu) this.leftMenu.getMenu('file').SetDisabled(disable); + + // if (disableFileMenu) this.leftMenu.getMenu('file').SetDisabled(disable); }, /** coauthoring begin **/ diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js index 1a3e619b7..79ee3465a 100644 --- a/apps/documenteditor/main/app/controller/Main.js +++ b/apps/documenteditor/main/app/controller/Main.js @@ -213,6 +213,7 @@ define([ Common.NotificationCenter.on('download:advanced', _.bind(this.onAdvancedOptions, this)); Common.NotificationCenter.on('showmessage', _.bind(this.onExternalMessage, this)); Common.NotificationCenter.on('showerror', _.bind(this.onError, this)); + Common.NotificationCenter.on('editing:disable', _.bind(this.disableEditing2, this)); this.isShowOpenDialog = false; @@ -704,18 +705,107 @@ define([ return"#"+("000000"+color.toString(16)).substr(-6); }, - - disableEditing: function(disable) { + disableEditing: function(disable, temp) { var app = this.getApplication(); if (this.appOptions.canEdit && this.editorConfig.mode !== 'view') { - app.getController('RightMenu').getView('RightMenu').clearSelection(); - app.getController('RightMenu').SetDisabled(disable, false); - app.getController('Statusbar').getView('Statusbar').SetDisabled(disable); + // app.getController('RightMenu').getView('RightMenu').clearSelection(); + // app.getController('RightMenu').SetDisabled(disable, false); + // app.getController('Statusbar').getView('Statusbar').SetDisabled(disable); + } + // app.getController('LeftMenu').SetDisabled(disable, true, viewmode); + // app.getController('Toolbar').DisableToolbar(disable, disable); + // app.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); + // app.getController('Viewport').SetDisabled(disable); + // app.getController('DocumentHolder').getView().SetDisabled(disable); + + Common.NotificationCenter.trigger('editing:disable', disable, { + viewMode: disable, + reviewMode: false, + fillFormwMode: false, + allowMerge: false, + allowSignature: false, + allowProtect: false, + rightMenu: {clear: true, disable: true}, + statusBar: true, + leftMenu: {disable: true, previewMode: true}, + fileMenu: {protect: true, save: true, rename: true}, + navigation: {disable: !temp, previewMode: true}, + comments: {disable: !temp, previewMode: true}, + chat: true, + review: true, + viewport: true, + documentHolder: true, + toolbar: true, + plugins: false + }); + + + // this.disableEditing2(disable, { + // viewMode: disable, + // reviewMode: false, + // fillFormwMode: false, + // allowMerge: false, + // allowSignature: false, + // allowProtect: false, + // rightMenu: {clear: true, disable: true}, + // statusBar: true, + // leftMenu: {disable: true, previewMode: true}, + // fileMenu: true, + // comments: {previewMode: true}, + // review: true, + // viewport: true, + // documentHolder: true, + // toolbar: true // check!!! + // }); + }, + + disableEditing2: function(disable, options) { + var app = this.getApplication(); + + if (this.appOptions.canEdit && this.editorConfig.mode !== 'view') { + if (options.rightMenu) { + options.rightMenu.clear && app.getController('RightMenu').getView('RightMenu').clearSelection(); + options.rightMenu.disable && app.getController('RightMenu').SetDisabled(disable, options.allowMerge, options.allowSignature); + } + if (options.statusBar) { + app.getController('Statusbar').getView('Statusbar').SetDisabled(disable); + } + } + if (options.review) { + app.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); + } + if (options.viewport) { + app.getController('Viewport').SetDisabled(disable); + } + if (options.toolbar) { + app.getController('Toolbar').DisableToolbar(disable, options.viewMode, options.reviewMode, options.fillFormwMode); + } + if (options.documentHolder) { + app.getController('DocumentHolder').getView().SetDisabled(disable, options.allowProtect); + } + if (options.leftMenu) { + if (options.leftMenu.disable) { + app.getController('LeftMenu').SetDisabled(disable, options); + if (options.viewMode!==undefined) + this.appOptions.isEdit = !options.viewMode; + } + if (options.leftMenu.previewMode) + app.getController('LeftMenu').setPreviewMode(disable); + } + if (options.fileMenu) { + app.getController('LeftMenu').leftMenu.getMenu('file').SetDisabled(disable, options.fileMenu); + } + if (options.comments) { + var comments = this.getApplication().getController('Common.Controllers.Comments'); + if (comments && options.comments.previewMode) + comments.setPreviewMode(disable); + } + if (options.navigation && options.navigation.previewMode) { + app.getController('Navigation') && app.getController('Navigation').SetDisabled(disable); + } + if (options.plugins) { + app.getController('Common.Controllers.Plugins').getView('Common.Views.Plugins').disableControls(disable); } - app.getController('LeftMenu').SetDisabled(disable, true); - app.getController('Toolbar').DisableToolbar(disable, disable); - app.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); - app.getController('Viewport').SetDisabled(disable); }, onRequestClose: function() { @@ -2425,17 +2515,17 @@ define([ warningDocumentIsLocked: function() { var me = this; var _disable_ui = function (disable) { - me.disableEditing(disable); - var app = me.getApplication(); - app.getController('DocumentHolder').getView().SetDisabled(disable); - app.getController('Navigation') && app.getController('Navigation').SetDisabled(disable); - - var leftMenu = app.getController('LeftMenu'); - leftMenu.leftMenu.getMenu('file').getButton('protect').setDisabled(disable); - leftMenu.setPreviewMode(disable); - - var comments = app.getController('Common.Controllers.Comments'); - if (comments) comments.setPreviewMode(disable); + me.disableEditing(disable, true); + // var app = me.getApplication(); + // app.getController('DocumentHolder').getView().SetDisabled(disable); + // app.getController('Navigation') && app.getController('Navigation').SetDisabled(disable); + // + // var leftMenu = app.getController('LeftMenu'); + // leftMenu.leftMenu.getMenu('file').getButton('protect').setDisabled(disable); + // leftMenu.setPreviewMode(disable); + // + // var comments = app.getController('Common.Controllers.Comments'); + // if (comments) comments.setPreviewMode(disable); }; Common.Utils.warningDocumentIsLocked({disablefunc: _disable_ui}); diff --git a/apps/documenteditor/main/app/view/FileMenu.js b/apps/documenteditor/main/app/view/FileMenu.js index 20d5d6692..2865dcf64 100644 --- a/apps/documenteditor/main/app/view/FileMenu.js +++ b/apps/documenteditor/main/app/view/FileMenu.js @@ -411,14 +411,14 @@ define([ }); }, - SetDisabled: function(disable) { + SetDisabled: function(disable, options) { var _btn_save = this.getButton('save'), _btn_rename = this.getButton('rename'), _btn_protect = this.getButton('protect'); - _btn_save.setDisabled(disable || !this.mode.isEdit); - _btn_protect.setDisabled(disable || !this.mode.isEdit); - _btn_rename.setDisabled(disable || !this.mode.canRename || this.mode.isDesktopApp); + options && options.save && _btn_save.setDisabled(disable || !this.mode.isEdit); + options && options.protect && _btn_protect.setDisabled(disable || !this.mode.isEdit); + options && options.rename && _btn_rename.setDisabled(disable || !this.mode.canRename || this.mode.isDesktopApp); }, isVisible: function () { diff --git a/apps/documenteditor/main/app/view/MailMergeSettings.js b/apps/documenteditor/main/app/view/MailMergeSettings.js index 34ece804c..db738ae2e 100644 --- a/apps/documenteditor/main/app/view/MailMergeSettings.js +++ b/apps/documenteditor/main/app/view/MailMergeSettings.js @@ -799,18 +799,39 @@ define([ }, disableEditing: function(disable) { - DE.getController('Toolbar').DisableToolbar(disable, disable); - DE.getController('RightMenu').SetDisabled(disable, true); - DE.getController('Statusbar').getView('Statusbar').SetDisabled(disable); - DE.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); - DE.getController('DocumentHolder').getView().SetDisabled(disable); - DE.getController('Navigation') && DE.getController('Navigation').SetDisabled(disable); + Common.NotificationCenter.trigger('editing:disable', disable, { + viewMode: disable, + reviewMode: false, + fillFormwMode: false, + allowMerge: true, + allowSignature: false, + allowProtect: false, + rightMenu: {clear: false, disable: true}, + statusBar: true, + leftMenu: {disable: false, previewMode: true}, + fileMenu: false, + navigation: {disable: false, previewMode: true}, + comments: {disable: false, previewMode: true}, + chat: false, + review: true, + viewport: false, + documentHolder: true, + toolbar: true, + plugins: false + }); - var comments = DE.getController('Common.Controllers.Comments'); - if (comments) - comments.setPreviewMode(disable); + // DE.getController('Toolbar').DisableToolbar(disable, disable); + // DE.getController('RightMenu').SetDisabled(disable, true); + // DE.getController('Statusbar').getView('Statusbar').SetDisabled(disable); + // DE.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); + // DE.getController('DocumentHolder').getView().SetDisabled(disable); + // DE.getController('Navigation') && DE.getController('Navigation').SetDisabled(disable); - DE.getController('LeftMenu').setPreviewMode(disable); + // var comments = DE.getController('Common.Controllers.Comments'); + // if (comments) + // comments.setPreviewMode(disable); + + // DE.getController('LeftMenu').setPreviewMode(disable); this.lockControls(DE.enumLockMM.preview, disable, {array: [this.btnInsField, this.btnEditData]}); }, diff --git a/apps/documenteditor/main/app/view/SignatureSettings.js b/apps/documenteditor/main/app/view/SignatureSettings.js index 2d4d15d9a..3a2f202b9 100644 --- a/apps/documenteditor/main/app/view/SignatureSettings.js +++ b/apps/documenteditor/main/app/view/SignatureSettings.js @@ -393,22 +393,43 @@ define([ if (this._state.DisabledEditing != disable) { this._state.DisabledEditing = disable; - var rightMenuController = DE.getController('RightMenu'); - if (disable && rightMenuController.rightmenu.GetActivePane() !== 'id-signature-settings') - rightMenuController.rightmenu.clearSelection(); - rightMenuController.SetDisabled(disable, false, true); - DE.getController('Toolbar').DisableToolbar(disable, disable); - DE.getController('Statusbar').getView('Statusbar').SetDisabled(disable); - DE.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); - DE.getController('DocumentHolder').getView().SetDisabled(disable, true); - DE.getController('Navigation') && DE.getController('Navigation').SetDisabled(disable); + Common.NotificationCenter.trigger('editing:disable', disable, { + viewMode: disable, + reviewMode: false, + fillFormwMode: false, + allowMerge: false, + allowSignature: true, + allowProtect: true, + rightMenu: {clear: disable && (DE.getController('RightMenu').rightmenu.GetActivePane() !== 'id-signature-settings'), disable: true}, + statusBar: true, + leftMenu: {disable: false, previewMode: true}, + fileMenu: false, + navigation: {disable: false, previewMode: true}, + comments: {disable: false, previewMode: true}, + chat: false, + review: true, + viewport: false, + documentHolder: true, + toolbar: true, + plugins: false + }); + + // var rightMenuController = DE.getController('RightMenu'); + // if (disable && rightMenuController.rightmenu.GetActivePane() !== 'id-signature-settings') + // rightMenuController.rightmenu.clearSelection(); + // rightMenuController.SetDisabled(disable, false, true); + // DE.getController('Toolbar').DisableToolbar(disable, disable); + // DE.getController('Statusbar').getView('Statusbar').SetDisabled(disable); + // DE.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); + // DE.getController('DocumentHolder').getView().SetDisabled(disable, true); + // DE.getController('Navigation') && DE.getController('Navigation').SetDisabled(disable); // var leftMenu = DE.getController('LeftMenu').leftMenu; // leftMenu.btnComments.setDisabled(disable); - DE.getController('LeftMenu').setPreviewMode(disable); - var comments = DE.getController('Common.Controllers.Comments'); - if (comments) - comments.setPreviewMode(disable); + // DE.getController('LeftMenu').setPreviewMode(disable); + // var comments = DE.getController('Common.Controllers.Comments'); + // if (comments) + // comments.setPreviewMode(disable); } }, From 6f4de5a73f0533188dc8153007e4e86f3814037b Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Tue, 29 Jun 2021 17:26:04 +0300 Subject: [PATCH 4/8] [DE] Fix disable file menu --- apps/documenteditor/main/app/controller/LeftMenu.js | 2 +- apps/documenteditor/main/app/controller/Main.js | 7 +++---- apps/documenteditor/main/app/view/FileMenu.js | 5 +++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/documenteditor/main/app/controller/LeftMenu.js b/apps/documenteditor/main/app/controller/LeftMenu.js index 20085bd8e..72ed69f31 100644 --- a/apps/documenteditor/main/app/controller/LeftMenu.js +++ b/apps/documenteditor/main/app/controller/LeftMenu.js @@ -667,7 +667,7 @@ define([ }, SetDisabled: function(disable, options) { - // if (viewMode) this.mode.isEdit = !disable; + this.mode.isEdit = !disable; if (disable) this.leftMenu.close(); // var comments = this.getApplication().getController('Common.Controllers.Comments'); diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js index 79ee3465a..5001551e7 100644 --- a/apps/documenteditor/main/app/controller/Main.js +++ b/apps/documenteditor/main/app/controller/Main.js @@ -784,16 +784,15 @@ define([ app.getController('DocumentHolder').getView().SetDisabled(disable, options.allowProtect); } if (options.leftMenu) { - if (options.leftMenu.disable) { + if (options.leftMenu.disable) app.getController('LeftMenu').SetDisabled(disable, options); - if (options.viewMode!==undefined) - this.appOptions.isEdit = !options.viewMode; - } if (options.leftMenu.previewMode) app.getController('LeftMenu').setPreviewMode(disable); } if (options.fileMenu) { app.getController('LeftMenu').leftMenu.getMenu('file').SetDisabled(disable, options.fileMenu); + if (options.leftMenu.disable) + app.getController('LeftMenu').leftMenu.getMenu('file').applyMode(); } if (options.comments) { var comments = this.getApplication().getController('Common.Controllers.Comments'); diff --git a/apps/documenteditor/main/app/view/FileMenu.js b/apps/documenteditor/main/app/view/FileMenu.js index 2865dcf64..f15cc6ff5 100644 --- a/apps/documenteditor/main/app/view/FileMenu.js +++ b/apps/documenteditor/main/app/view/FileMenu.js @@ -271,6 +271,8 @@ define([ }, applyMode: function() { + if (!this.rendered) return; + if (!this.panels) { this.panels = { 'opts' : (new DE.Views.FileMenuPanels.Settings({menu:this})).render(this.$el.find('#panel-settings')), @@ -363,8 +365,7 @@ define([ } if (!delay) { - if ( this.rendered ) - this.applyMode(); + this.applyMode(); } return this; }, From 68fc002dc3ab97651411a2448dbae28ee71831eb Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Wed, 30 Jun 2021 00:31:55 +0300 Subject: [PATCH 5/8] Refactoring --- .../main/lib/controller/ReviewChanges.js | 23 +------ .../main/app/controller/FormsTab.js | 14 ----- .../main/app/controller/LeftMenu.js | 20 ++++--- .../main/app/controller/Main.js | 60 +++++-------------- apps/documenteditor/main/app/view/FileMenu.js | 22 ++++--- apps/documenteditor/main/app/view/LeftMenu.js | 2 +- .../main/app/view/MailMergeSettings.js | 13 ---- .../main/app/view/SignatureSettings.js | 17 ------ 8 files changed, 44 insertions(+), 127 deletions(-) diff --git a/apps/common/main/lib/controller/ReviewChanges.js b/apps/common/main/lib/controller/ReviewChanges.js index 4ebedb97a..9a1b9cc68 100644 --- a/apps/common/main/lib/controller/ReviewChanges.js +++ b/apps/common/main/lib/controller/ReviewChanges.js @@ -738,7 +738,7 @@ define([ rightMenu: {clear: true, disable: true}, statusBar: true, leftMenu: {disable: false, previewMode: true}, - fileMenu: {protect: true, save: false, rename: false}, + fileMenu: {protect: true}, navigation: {disable: false, previewMode: true}, comments: {disable: false, previewMode: true}, chat: false, @@ -749,27 +749,6 @@ define([ plugins: true }); - - // var app = this.getApplication(); - // app.getController('Toolbar').DisableToolbar(disable, false, true); - // app.getController('DocumentHolder').getView().SetDisabled(disable); - - // if (this.appConfig.canReview) { - // app.getController('RightMenu').getView('RightMenu').clearSelection(); - // app.getController('RightMenu').SetDisabled(disable, false); - // app.getController('Statusbar').getView('Statusbar').SetDisabled(disable); - // app.getController('Navigation') && app.getController('Navigation').SetDisabled(disable); - // app.getController('Common.Controllers.Plugins').getView('Common.Views.Plugins').disableControls(disable); - // } - - // var comments = app.getController('Common.Controllers.Comments'); - // if (comments) - // comments.setPreviewMode(disable); - - // var leftMenu = app.getController('LeftMenu'); - // leftMenu.leftMenu.getMenu('file').getButton('protect').setDisabled(disable); - // leftMenu.setPreviewMode(disable); - if (this.view) { this.view.$el.find('.no-group-mask.review').css('opacity', 1); diff --git a/apps/documenteditor/main/app/controller/FormsTab.js b/apps/documenteditor/main/app/controller/FormsTab.js index d38d7b09d..3dfb8c9f8 100644 --- a/apps/documenteditor/main/app/controller/FormsTab.js +++ b/apps/documenteditor/main/app/controller/FormsTab.js @@ -273,20 +273,6 @@ define([ toolbar: true, plugins: false }); - - // var app = this.getApplication(); - // var rightMenuController = app.getController('RightMenu'); - // rightMenuController.getView('RightMenu').clearSelection(); - // rightMenuController.SetDisabled(disable); - // app.getController('Toolbar').DisableToolbar(disable, false, false, true); - // app.getController('Statusbar').getView('Statusbar').SetDisabled(disable); - // app.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); - // app.getController('DocumentHolder').getView().SetDisabled(disable); - // app.getController('Navigation') && app.getController('Navigation').SetDisabled(disable); - // app.getController('LeftMenu').setPreviewMode(disable); - // var comments = app.getController('Common.Controllers.Comments'); - // if (comments) - // comments.setPreviewMode(disable); if (this.view) this.view.$el.find('.no-group-mask.form-view').css('opacity', 1); } diff --git a/apps/documenteditor/main/app/controller/LeftMenu.js b/apps/documenteditor/main/app/controller/LeftMenu.js index 72ed69f31..17a145b1a 100644 --- a/apps/documenteditor/main/app/controller/LeftMenu.js +++ b/apps/documenteditor/main/app/controller/LeftMenu.js @@ -667,13 +667,19 @@ define([ }, SetDisabled: function(disable, options) { - this.mode.isEdit = !disable; - if (disable) this.leftMenu.close(); + if (this.leftMenu._state.disabled !== disable) { + this.leftMenu._state.disabled = disable; + if (disable) { + this.previsEdit = this.mode.isEdit; + this.prevcanEdit = this.mode.canEdit; + this.mode.isEdit = this.mode.canEdit = !disable; + } else { + this.mode.isEdit = this.previsEdit; + this.mode.canEdit = this.prevcanEdit; + } + } - // var comments = this.getApplication().getController('Common.Controllers.Comments'); - // if (comments) - // comments.setPreviewMode(disable); - // this.setPreviewMode(disable); + if (disable) this.leftMenu.close(); if (!options || options.comments && options.comments.disable) this.leftMenu.btnComments.setDisabled(disable); @@ -683,8 +689,6 @@ define([ this.leftMenu.btnNavigation.setDisabled(disable); this.leftMenu.btnPlugins.setDisabled(disable); - - // if (disableFileMenu) this.leftMenu.getMenu('file').SetDisabled(disable); }, /** coauthoring begin **/ diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js index 5001551e7..e008f0e5e 100644 --- a/apps/documenteditor/main/app/controller/Main.js +++ b/apps/documenteditor/main/app/controller/Main.js @@ -213,8 +213,7 @@ define([ Common.NotificationCenter.on('download:advanced', _.bind(this.onAdvancedOptions, this)); Common.NotificationCenter.on('showmessage', _.bind(this.onExternalMessage, this)); Common.NotificationCenter.on('showerror', _.bind(this.onError, this)); - Common.NotificationCenter.on('editing:disable', _.bind(this.disableEditing2, this)); - + Common.NotificationCenter.on('editing:disable', _.bind(this.onEditingDisable, this)); this.isShowOpenDialog = false; @@ -707,17 +706,6 @@ define([ disableEditing: function(disable, temp) { var app = this.getApplication(); - if (this.appOptions.canEdit && this.editorConfig.mode !== 'view') { - // app.getController('RightMenu').getView('RightMenu').clearSelection(); - // app.getController('RightMenu').SetDisabled(disable, false); - // app.getController('Statusbar').getView('Statusbar').SetDisabled(disable); - } - // app.getController('LeftMenu').SetDisabled(disable, true, viewmode); - // app.getController('Toolbar').DisableToolbar(disable, disable); - // app.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); - // app.getController('Viewport').SetDisabled(disable); - // app.getController('DocumentHolder').getView().SetDisabled(disable); - Common.NotificationCenter.trigger('editing:disable', disable, { viewMode: disable, reviewMode: false, @@ -728,7 +716,7 @@ define([ rightMenu: {clear: true, disable: true}, statusBar: true, leftMenu: {disable: true, previewMode: true}, - fileMenu: {protect: true, save: true, rename: true}, + fileMenu: {protect: true, history: temp}, navigation: {disable: !temp, previewMode: true}, comments: {disable: !temp, previewMode: true}, chat: true, @@ -738,28 +726,9 @@ define([ toolbar: true, plugins: false }); - - - // this.disableEditing2(disable, { - // viewMode: disable, - // reviewMode: false, - // fillFormwMode: false, - // allowMerge: false, - // allowSignature: false, - // allowProtect: false, - // rightMenu: {clear: true, disable: true}, - // statusBar: true, - // leftMenu: {disable: true, previewMode: true}, - // fileMenu: true, - // comments: {previewMode: true}, - // review: true, - // viewport: true, - // documentHolder: true, - // toolbar: true // check!!! - // }); }, - disableEditing2: function(disable, options) { + onEditingDisable: function(disable, options) { var app = this.getApplication(); if (this.appOptions.canEdit && this.editorConfig.mode !== 'view') { @@ -934,6 +903,10 @@ define([ Common.Utils.InternalSettings.get("de-settings-livecomment") ? this.api.asc_showComments(Common.Utils.InternalSettings.get("de-settings-resolvedcomment")) : this.api.asc_hideComments(); } + if ( id == Asc.c_oAscAsyncAction['Disconnect']) { + this.disableEditing(false, true); + } + if ( type == Asc.c_oAscAsyncActionType.BlockInteraction && (!this.getApplication().getController('LeftMenu').dlgSearch || !this.getApplication().getController('LeftMenu').dlgSearch.isVisible()) && (!this.getApplication().getController('Toolbar').dlgSymbolTable || !this.getApplication().getController('Toolbar').dlgSymbolTable.isVisible()) && @@ -1034,6 +1007,12 @@ define([ title = this.loadingDocumentTitleText + ' '; text = this.loadingDocumentTextText; break; + + case Asc.c_oAscAsyncAction['Disconnect']: + text = this.textDisconnect; + this.disableEditing(true, true); + break; + default: if (typeof action.id == 'string'){ title = action.id; @@ -2515,16 +2494,6 @@ define([ var me = this; var _disable_ui = function (disable) { me.disableEditing(disable, true); - // var app = me.getApplication(); - // app.getController('DocumentHolder').getView().SetDisabled(disable); - // app.getController('Navigation') && app.getController('Navigation').SetDisabled(disable); - // - // var leftMenu = app.getController('LeftMenu'); - // leftMenu.leftMenu.getMenu('file').getButton('protect').setDisabled(disable); - // leftMenu.setPreviewMode(disable); - // - // var comments = app.getController('Common.Controllers.Comments'); - // if (comments) comments.setPreviewMode(disable); }; Common.Utils.warningDocumentIsLocked({disablefunc: _disable_ui}); @@ -3011,7 +2980,8 @@ define([ txtNoTableOfFigures: "No table of figures entries found.", txtTableOfFigures: 'Table of figures', txtStyle_endnote_text: 'Endnote Text', - txtTOCHeading: 'TOC Heading' + txtTOCHeading: 'TOC Heading', + textDisconnect: 'Connection is lost' } })(), DE.Controllers.Main || {})) }); \ No newline at end of file diff --git a/apps/documenteditor/main/app/view/FileMenu.js b/apps/documenteditor/main/app/view/FileMenu.js index f15cc6ff5..6d970f307 100644 --- a/apps/documenteditor/main/app/view/FileMenu.js +++ b/apps/documenteditor/main/app/view/FileMenu.js @@ -182,6 +182,10 @@ define([ caption : this.btnHistoryCaption, canFocused: false }); + if ( !!this.options.miHistory ) { + this.miHistory.setDisabled(this.options.miHistory.isDisabled()); + delete this.options.miHistory; + } this.miHelp = new Common.UI.MenuItem({ el : $markup.elementById('#fm-btn-help'), @@ -272,7 +276,7 @@ define([ applyMode: function() { if (!this.rendered) return; - + if (!this.panels) { this.panels = { 'opts' : (new DE.Views.FileMenuPanels.Settings({menu:this})).render(this.$el.find('#panel-settings')), @@ -413,13 +417,11 @@ define([ }, SetDisabled: function(disable, options) { - var _btn_save = this.getButton('save'), - _btn_rename = this.getButton('rename'), - _btn_protect = this.getButton('protect'); + var _btn_protect = this.getButton('protect'), + _btn_history = this.getButton('history'); - options && options.save && _btn_save.setDisabled(disable || !this.mode.isEdit); - options && options.protect && _btn_protect.setDisabled(disable || !this.mode.isEdit); - options && options.rename && _btn_rename.setDisabled(disable || !this.mode.canRename || this.mode.isDesktopApp); + options && options.protect && _btn_protect.setDisabled(disable); + options && options.history && _btn_history.setDisabled(disable); }, isVisible: function () { @@ -436,6 +438,9 @@ define([ } else if (type == 'protect') { return this.options.miProtect ? this.options.miProtect : (this.options.miProtect = new Common.UI.MenuItem({})); + } else + if (type == 'history') { + return this.options.miHistory ? this.options.miHistory : (this.options.miHistory = new Common.UI.MenuItem({})); } } else { if (type == 'save') { @@ -446,6 +451,9 @@ define([ }else if (type == 'protect') { return this.miProtect; + }else + if (type == 'history') { + return this.miHistory; } } }, diff --git a/apps/documenteditor/main/app/view/LeftMenu.js b/apps/documenteditor/main/app/view/LeftMenu.js index 5fa9eb4dc..a98cb6ba1 100644 --- a/apps/documenteditor/main/app/view/LeftMenu.js +++ b/apps/documenteditor/main/app/view/LeftMenu.js @@ -86,7 +86,7 @@ define([ initialize: function () { this.minimizedMode = true; - this._state = {}; + this._state = {disabled: false}; }, render: function () { diff --git a/apps/documenteditor/main/app/view/MailMergeSettings.js b/apps/documenteditor/main/app/view/MailMergeSettings.js index db738ae2e..f3f194786 100644 --- a/apps/documenteditor/main/app/view/MailMergeSettings.js +++ b/apps/documenteditor/main/app/view/MailMergeSettings.js @@ -820,19 +820,6 @@ define([ plugins: false }); - // DE.getController('Toolbar').DisableToolbar(disable, disable); - // DE.getController('RightMenu').SetDisabled(disable, true); - // DE.getController('Statusbar').getView('Statusbar').SetDisabled(disable); - // DE.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); - // DE.getController('DocumentHolder').getView().SetDisabled(disable); - // DE.getController('Navigation') && DE.getController('Navigation').SetDisabled(disable); - - // var comments = DE.getController('Common.Controllers.Comments'); - // if (comments) - // comments.setPreviewMode(disable); - - // DE.getController('LeftMenu').setPreviewMode(disable); - this.lockControls(DE.enumLockMM.preview, disable, {array: [this.btnInsField, this.btnEditData]}); }, diff --git a/apps/documenteditor/main/app/view/SignatureSettings.js b/apps/documenteditor/main/app/view/SignatureSettings.js index 3a2f202b9..2ef9ec848 100644 --- a/apps/documenteditor/main/app/view/SignatureSettings.js +++ b/apps/documenteditor/main/app/view/SignatureSettings.js @@ -413,23 +413,6 @@ define([ toolbar: true, plugins: false }); - - // var rightMenuController = DE.getController('RightMenu'); - // if (disable && rightMenuController.rightmenu.GetActivePane() !== 'id-signature-settings') - // rightMenuController.rightmenu.clearSelection(); - // rightMenuController.SetDisabled(disable, false, true); - // DE.getController('Toolbar').DisableToolbar(disable, disable); - // DE.getController('Statusbar').getView('Statusbar').SetDisabled(disable); - // DE.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); - // DE.getController('DocumentHolder').getView().SetDisabled(disable, true); - // DE.getController('Navigation') && DE.getController('Navigation').SetDisabled(disable); - - // var leftMenu = DE.getController('LeftMenu').leftMenu; - // leftMenu.btnComments.setDisabled(disable); - // DE.getController('LeftMenu').setPreviewMode(disable); - // var comments = DE.getController('Common.Controllers.Comments'); - // if (comments) - // comments.setPreviewMode(disable); } }, From 6506146eab6bbad580f8c5ebb294750e03baed48 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Wed, 30 Jun 2021 15:19:45 +0300 Subject: [PATCH 6/8] [DE] Fix disable for several actions --- apps/common/IrregularStack.js | 9 +++-- .../main/lib/controller/ReviewChanges.js | 2 +- .../main/app/controller/FormsTab.js | 2 +- .../main/app/controller/Main.js | 33 +++++++++++++------ .../main/app/view/MailMergeSettings.js | 2 +- .../main/app/view/SignatureSettings.js | 2 +- 6 files changed, 34 insertions(+), 16 deletions(-) diff --git a/apps/common/IrregularStack.js b/apps/common/IrregularStack.js index 4092f0358..4f5f2ee2d 100644 --- a/apps/common/IrregularStack.js +++ b/apps/common/IrregularStack.js @@ -69,7 +69,7 @@ Common.IrregularStack = function(config) { } var _get = function(obj) { - var index = _indexOf(obj, _weakCompare); + var index = (typeof obj === 'object')? _indexOf(obj, _weakCompare) : obj; if (index != -1) return _stack[index]; return undefined; @@ -79,10 +79,15 @@ Common.IrregularStack = function(config) { return !(_indexOf(obj, _strongCompare) < 0); } + var _length = function() { + return _stack.length; + } + return { push: _push, pop: _pop, get: _get, - exist: _exist + exist: _exist, + length: _length } }; \ No newline at end of file diff --git a/apps/common/main/lib/controller/ReviewChanges.js b/apps/common/main/lib/controller/ReviewChanges.js index 9a1b9cc68..6b6312256 100644 --- a/apps/common/main/lib/controller/ReviewChanges.js +++ b/apps/common/main/lib/controller/ReviewChanges.js @@ -747,7 +747,7 @@ define([ documentHolder: true, toolbar: true, plugins: true - }); + }, 'review'); if (this.view) { this.view.$el.find('.no-group-mask.review').css('opacity', 1); diff --git a/apps/documenteditor/main/app/controller/FormsTab.js b/apps/documenteditor/main/app/controller/FormsTab.js index 3dfb8c9f8..da26708e6 100644 --- a/apps/documenteditor/main/app/controller/FormsTab.js +++ b/apps/documenteditor/main/app/controller/FormsTab.js @@ -272,7 +272,7 @@ define([ documentHolder: true, toolbar: true, plugins: false - }); + }, 'forms'); if (this.view) this.view.$el.find('.no-group-mask.form-view').css('opacity', 1); } diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js index e008f0e5e..e9e8e4a79 100644 --- a/apps/documenteditor/main/app/controller/Main.js +++ b/apps/documenteditor/main/app/controller/Main.js @@ -161,6 +161,11 @@ define([ weakCompare : function(obj1, obj2){return obj1.type === obj2.type;} }); + this.stackDisableActions = new Common.IrregularStack({ + strongCompare : function(obj1, obj2){return obj1.type === obj2.type;}, + weakCompare : function(obj1, obj2){return obj1.type === obj2.type;} + }); + this._state = {isDisconnected: false, usersCount: 1, fastCoauth: true, lostEditingRights: false, licenseType: false, isDocModified: false}; this.languages = null; @@ -725,20 +730,24 @@ define([ documentHolder: true, toolbar: true, plugins: false - }); + }, temp ? 'reconnect' : 'disconnect'); }, - onEditingDisable: function(disable, options) { + onEditingDisable: function(disable, options, type) { var app = this.getApplication(); - if (this.appOptions.canEdit && this.editorConfig.mode !== 'view') { - if (options.rightMenu) { - options.rightMenu.clear && app.getController('RightMenu').getView('RightMenu').clearSelection(); - options.rightMenu.disable && app.getController('RightMenu').SetDisabled(disable, options.allowMerge, options.allowSignature); - } - if (options.statusBar) { - app.getController('Statusbar').getView('Statusbar').SetDisabled(disable); - } + var action = {type: type, disable: disable, options: options}; + if (disable && !this.stackDisableActions.get({type: type})) + this.stackDisableActions.push(action); + !disable && this.stackDisableActions.pop({type: type}); + var prev_options = !disable && (this.stackDisableActions.length()>0) ? this.stackDisableActions.get(this.stackDisableActions.length()-1) : null; + + if (options.rightMenu && app.getController('RightMenu')) { + options.rightMenu.clear && app.getController('RightMenu').getView('RightMenu').clearSelection(); + options.rightMenu.disable && app.getController('RightMenu').SetDisabled(disable, options.allowMerge, options.allowSignature); + } + if (options.statusBar) { + app.getController('Statusbar').getView('Statusbar').SetDisabled(disable); } if (options.review) { app.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); @@ -774,6 +783,10 @@ define([ if (options.plugins) { app.getController('Common.Controllers.Plugins').getView('Common.Views.Plugins').disableControls(disable); } + + if (prev_options) { + this.onEditingDisable(prev_options.disable, prev_options.options, prev_options.type); + } }, onRequestClose: function() { diff --git a/apps/documenteditor/main/app/view/MailMergeSettings.js b/apps/documenteditor/main/app/view/MailMergeSettings.js index f3f194786..7ccc75536 100644 --- a/apps/documenteditor/main/app/view/MailMergeSettings.js +++ b/apps/documenteditor/main/app/view/MailMergeSettings.js @@ -818,7 +818,7 @@ define([ documentHolder: true, toolbar: true, plugins: false - }); + }, 'mailmerge'); this.lockControls(DE.enumLockMM.preview, disable, {array: [this.btnInsField, this.btnEditData]}); }, diff --git a/apps/documenteditor/main/app/view/SignatureSettings.js b/apps/documenteditor/main/app/view/SignatureSettings.js index 2ef9ec848..c489c8e13 100644 --- a/apps/documenteditor/main/app/view/SignatureSettings.js +++ b/apps/documenteditor/main/app/view/SignatureSettings.js @@ -412,7 +412,7 @@ define([ documentHolder: true, toolbar: true, plugins: false - }); + }, 'signature'); } }, From c55886f6e3f98f8f4913c625a1f305be4e2e45be Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Thu, 1 Jul 2021 01:10:14 +0300 Subject: [PATCH 7/8] [PE] Refactoring disable editing --- .../main/app/controller/LeftMenu.js | 29 +++-- .../main/app/controller/Main.js | 102 ++++++++++++++---- .../main/app/view/FileMenu.js | 27 +++-- .../main/app/view/LeftMenu.js | 2 +- .../main/app/view/SignatureSettings.js | 29 +++-- .../main/app/view/Statusbar.js | 1 - 6 files changed, 132 insertions(+), 58 deletions(-) diff --git a/apps/presentationeditor/main/app/controller/LeftMenu.js b/apps/presentationeditor/main/app/controller/LeftMenu.js index 26565ba84..7c26f8888 100644 --- a/apps/presentationeditor/main/app/controller/LeftMenu.js +++ b/apps/presentationeditor/main/app/controller/LeftMenu.js @@ -768,21 +768,28 @@ define([ Common.Gateway.requestHistory(); }, - SetDisabled: function(disable, disableFileMenu) { - this.mode.isEdit = !disable; + SetDisabled: function(disable, options) { + if (this.leftMenu._state.disabled !== disable) { + this.leftMenu._state.disabled = disable; + if (disable) { + this.previsEdit = this.mode.isEdit; + this.prevcanEdit = this.mode.canEdit; + this.mode.isEdit = this.mode.canEdit = !disable; + } else { + this.mode.isEdit = this.previsEdit; + this.mode.canEdit = this.prevcanEdit; + } + } + if (disable) this.leftMenu.close(); - /** coauthoring begin **/ - this.leftMenu.btnComments.setDisabled(disable); - var comments = this.getApplication().getController('Common.Controllers.Comments'); - if (comments) - comments.setPreviewMode(disable); - this.setPreviewMode(disable); - this.leftMenu.btnChat.setDisabled(disable); - /** coauthoring end **/ + if (!options || options.comments && options.comments.disable) + this.leftMenu.btnComments.setDisabled(disable); + if (!options || options.chat) + this.leftMenu.btnChat.setDisabled(disable); + this.leftMenu.btnPlugins.setDisabled(disable); this.leftMenu.btnThumbs.setDisabled(disable); - if (disableFileMenu) this.leftMenu.getMenu('file').SetDisabled(disable); }, textNoTextFound : 'Text not found', diff --git a/apps/presentationeditor/main/app/controller/Main.js b/apps/presentationeditor/main/app/controller/Main.js index 2cbff6ff1..5b6918ad0 100644 --- a/apps/presentationeditor/main/app/controller/Main.js +++ b/apps/presentationeditor/main/app/controller/Main.js @@ -145,7 +145,10 @@ define([ strongCompare : function(obj1, obj2){return obj1.id === obj2.id && obj1.type === obj2.type;}, weakCompare : function(obj1, obj2){return obj1.type === obj2.type;} }); - + this.stackDisableActions = new Common.IrregularStack({ + strongCompare : function(obj1, obj2){return obj1.type === obj2.type;}, + weakCompare : function(obj1, obj2){return obj1.type === obj2.type;} + }); // Initialize viewport if (!Common.Utils.isBrowserSupported()){ @@ -190,6 +193,7 @@ define([ Common.NotificationCenter.on('showmessage', _.bind(this.onExternalMessage, this)); Common.NotificationCenter.on('showerror', _.bind(this.onError, this)); Common.NotificationCenter.on('markfavorite', _.bind(this.markFavorite, this)); + Common.NotificationCenter.on('editing:disable', _.bind(this.onEditingDisable, this)); this.isShowOpenDialog = false; @@ -604,7 +608,11 @@ define([ if (this.appOptions.isEdit && (id==Asc.c_oAscAsyncAction['Save'] || id==Asc.c_oAscAsyncAction['ForceSaveButton']) && (!this._state.fastCoauth || this._state.usersCount<2)) this.synchronizeChanges(); - if (type == Asc.c_oAscAsyncActionType.BlockInteraction && !((id == Asc.c_oAscAsyncAction['LoadDocumentFonts'] || id == Asc.c_oAscAsyncAction['ApplyChanges']) && (this.dontCloseDummyComment || this.inTextareaControl || Common.Utils.ModalWindow.isVisible() || this.inFormControl))) { + if ( id == Asc.c_oAscAsyncAction['Disconnect']) { + this.disableEditing(false, true); + } + + if (type == Asc.c_oAscAsyncActionType.BlockInteraction && !((id == Asc.c_oAscAsyncAction['LoadDocumentFonts'] || id == Asc.c_oAscAsyncAction['ApplyChanges']) && (this.dontCloseDummyComment || this.inTextareaControl || Common.Utils.ModalWindow.isVisible() || this.inFormControl))) { this.onEditComplete(this.loadMask); this.api.asc_enableKeyEvents(true); } @@ -694,6 +702,12 @@ define([ title = this.loadingDocumentTitleText + ' '; text = this.loadingDocumentTextText; break; + + case Asc.c_oAscAsyncAction['Disconnect']: + text = this.textDisconnect; + this.disableEditing(true, true); + break; + default: if (typeof action.id == 'string'){ title = action.id; @@ -965,17 +979,71 @@ define([ } }, - disableEditing: function(disable) { + disableEditing: function(disable, temp) { + Common.NotificationCenter.trigger('editing:disable', disable, { + viewMode: disable, + allowSignature: false, + rightMenu: {clear: true, disable: true}, + statusBar: true, + leftMenu: {disable: true, previewMode: true}, + fileMenu: {protect: true, history: temp}, + comments: {disable: !temp, previewMode: true}, + chat: true, + review: true, + viewport: true, + documentHolder: true, + toolbar: true + }, temp ? 'reconnect' : 'disconnect'); + }, + + onEditingDisable: function(disable, options, type) { var app = this.getApplication(); - if (this.appOptions.canEdit && this.editorConfig.mode !== 'view') { - app.getController('RightMenu').getView('RightMenu').clearSelection(); - app.getController('RightMenu').SetDisabled(disable, false); + + var action = {type: type, disable: disable, options: options}; + if (disable && !this.stackDisableActions.get({type: type})) + this.stackDisableActions.push(action); + !disable && this.stackDisableActions.pop({type: type}); + var prev_options = !disable && (this.stackDisableActions.length()>0) ? this.stackDisableActions.get(this.stackDisableActions.length()-1) : null; + + if (options.rightMenu && app.getController('RightMenu')) { + options.rightMenu.clear && app.getController('RightMenu').getView('RightMenu').clearSelection(); + options.rightMenu.disable && app.getController('RightMenu').SetDisabled(disable, options.allowSignature); + } + if (options.statusBar) { app.getController('Statusbar').getView('Statusbar').SetDisabled(disable); } - app.getController('LeftMenu').SetDisabled(disable, true); - app.getController('Toolbar').DisableToolbar(disable); - app.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); - app.getController('Viewport').SetDisabled(disable); + if (options.review) { + app.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); + } + if (options.viewport) { + app.getController('Viewport').SetDisabled(disable); + } + if (options.toolbar) { + app.getController('Toolbar').DisableToolbar(disable, options.viewMode); + } + if (options.documentHolder) { + app.getController('DocumentHolder').getView('DocumentHolder').SetDisabled(disable); + } + if (options.leftMenu) { + if (options.leftMenu.disable) + app.getController('LeftMenu').SetDisabled(disable, options); + if (options.leftMenu.previewMode) + app.getController('LeftMenu').setPreviewMode(disable); + } + if (options.fileMenu) { + app.getController('LeftMenu').leftMenu.getMenu('file').SetDisabled(disable, options.fileMenu); + if (options.leftMenu.disable) + app.getController('LeftMenu').leftMenu.getMenu('file').applyMode(); + } + if (options.comments) { + var comments = this.getApplication().getController('Common.Controllers.Comments'); + if (comments && options.comments.previewMode) + comments.setPreviewMode(disable); + } + + if (prev_options) { + this.onEditingDisable(prev_options.disable, prev_options.options, prev_options.type); + } }, onOpenDocument: function(progress) { @@ -2072,16 +2140,7 @@ define([ var me = this; Common.Utils.warningDocumentIsLocked({ disablefunc: function (disable) { - var app = me.getApplication(); - me.disableEditing(disable); - app.getController('RightMenu').SetDisabled(disable, true); - app.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); - app.getController('DocumentHolder').getView('DocumentHolder').SetDisabled(disable); - var leftMenu = app.getController('LeftMenu'); - leftMenu.leftMenu.getMenu('file').getButton('protect').setDisabled(disable); - leftMenu.setPreviewMode(disable); - var comments = app.getController('Common.Controllers.Comments'); - if (comments) comments.setPreviewMode(disable); + me.disableEditing(disable, true); }}); }, @@ -2712,7 +2771,8 @@ define([ 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.', textTryUndoRedoWarn: 'The Undo/Redo functions are disabled for the Fast co-editing mode.', - txtNone: 'None' + txtNone: 'None', + textDisconnect: 'Connection is lost' } })(), PE.Controllers.Main || {})) }); diff --git a/apps/presentationeditor/main/app/view/FileMenu.js b/apps/presentationeditor/main/app/view/FileMenu.js index 8793e479e..58bfee2f0 100644 --- a/apps/presentationeditor/main/app/view/FileMenu.js +++ b/apps/presentationeditor/main/app/view/FileMenu.js @@ -190,6 +190,10 @@ define([ caption : this.btnHistoryCaption, canFocused: false }); + if ( !!this.options.miHistory ) { + this.miHistory.setDisabled(this.options.miHistory.isDisabled()); + delete this.options.miHistory; + } this.items = []; this.items.push( @@ -271,6 +275,8 @@ define([ }, applyMode: function() { + if (!this.rendered) return; + if (!this.panels) { this.panels = { 'opts' : (new PE.Views.FileMenuPanels.Settings({menu:this})).render(this.$el.find('#panel-settings')), @@ -361,8 +367,7 @@ define([ } if (!delay) { - if ( this.rendered ) - this.applyMode(); + this.applyMode(); } }, @@ -437,6 +442,9 @@ define([ } else if (type == 'protect') { return this.options.miProtect ? this.options.miProtect : (this.options.miProtect = new Common.UI.MenuItem({})); + } else + if (type == 'history') { + return this.options.miHistory ? this.options.miHistory : (this.options.miHistory = new Common.UI.MenuItem({})); } } else { if (type == 'save') { @@ -447,18 +455,19 @@ define([ } else if (type == 'protect') { return this.miProtect; + }else + if (type == 'history') { + return this.miHistory; } } }, - SetDisabled: function(disable) { - var _btn_save = this.getButton('save'), - _btn_rename = this.getButton('rename'), - _btn_protect = this.getButton('protect'); + SetDisabled: function(disable, options) { + var _btn_protect = this.getButton('protect'), + _btn_history = this.getButton('history'); - _btn_save.setDisabled(disable || !this.mode.isEdit); - _btn_protect.setDisabled(disable || !this.mode.isEdit); - _btn_rename.setDisabled(disable || !this.mode.canRename || this.mode.isDesktopApp); + options && options.protect && _btn_protect.setDisabled(disable); + options && options.history && _btn_history.setDisabled(disable); }, btnSaveCaption : 'Save', diff --git a/apps/presentationeditor/main/app/view/LeftMenu.js b/apps/presentationeditor/main/app/view/LeftMenu.js index 644161978..c39fa0106 100644 --- a/apps/presentationeditor/main/app/view/LeftMenu.js +++ b/apps/presentationeditor/main/app/view/LeftMenu.js @@ -83,7 +83,7 @@ define([ initialize: function () { this.minimizedMode = true; - this._state = {}; + this._state = {disabled: false}; }, render: function () { diff --git a/apps/presentationeditor/main/app/view/SignatureSettings.js b/apps/presentationeditor/main/app/view/SignatureSettings.js index c9cf04be8..c92af3468 100644 --- a/apps/presentationeditor/main/app/view/SignatureSettings.js +++ b/apps/presentationeditor/main/app/view/SignatureSettings.js @@ -347,21 +347,20 @@ define([ if (this._state.DisabledEditing != disable) { this._state.DisabledEditing = disable; - var rightMenuController = PE.getController('RightMenu'); - if (disable && rightMenuController.rightmenu.GetActivePane() !== 'id-signature-settings') - rightMenuController.rightmenu.clearSelection(); - rightMenuController.SetDisabled(disable, true); - PE.getController('Toolbar').DisableToolbar(disable, disable); - PE.getController('Statusbar').getView('Statusbar').SetDisabled(disable); - PE.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); - PE.getController('DocumentHolder').getView('DocumentHolder').SetDisabled(disable); - - // var leftMenu = PE.getController('LeftMenu').leftMenu; - // leftMenu.btnComments.setDisabled(disable); - PE.getController('LeftMenu').setPreviewMode(disable); - var comments = PE.getController('Common.Controllers.Comments'); - if (comments) - comments.setPreviewMode(disable); + Common.NotificationCenter.trigger('editing:disable', disable, { + viewMode: disable, + allowSignature: true, + rightMenu: {clear: disable && (PE.getController('RightMenu').rightmenu.GetActivePane() !== 'id-signature-settings'), disable: true}, + statusBar: true, + leftMenu: {disable: false, previewMode: true}, + fileMenu: false, + comments: {disable: false, previewMode: true}, + chat: false, + review: true, + viewport: false, + documentHolder: true, + toolbar: true + }, 'signature'); } }, diff --git a/apps/presentationeditor/main/app/view/Statusbar.js b/apps/presentationeditor/main/app/view/Statusbar.js index 676d3f347..af8b61e5e 100644 --- a/apps/presentationeditor/main/app/view/Statusbar.js +++ b/apps/presentationeditor/main/app/view/Statusbar.js @@ -365,7 +365,6 @@ define([ SetDisabled: function(disable) { var langs = this.langMenu.items.length>0; this.btnLanguage.setDisabled(disable || !langs || this._state.no_paragraph); - this.mode.isEdit = !disable; }, onApiFocusObject: function(selectedObjects) { From f910c046b810df4c1f655a3cc489ea2984208851 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 2 Jul 2021 00:54:55 +0300 Subject: [PATCH 8/8] [SSE] Refactoring disable editing --- .../main/app/controller/CellEditor.js | 8 +- .../main/app/controller/LeftMenu.js | 29 +++-- .../main/app/controller/Main.js | 106 ++++++++++++++---- .../main/app/view/FileMenu.js | 15 +-- .../main/app/view/FileMenuPanels.js | 1 + .../main/app/view/LeftMenu.js | 2 +- .../main/app/view/SignatureSettings.js | 33 +++--- 7 files changed, 132 insertions(+), 62 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/CellEditor.js b/apps/spreadsheeteditor/main/app/controller/CellEditor.js index 4806b55a3..f6f88365f 100644 --- a/apps/spreadsheeteditor/main/app/controller/CellEditor.js +++ b/apps/spreadsheeteditor/main/app/controller/CellEditor.js @@ -324,15 +324,15 @@ define([ }, SetDisabled: function(disabled) { - this.editor.$btnfunc[!disabled?'removeClass':'addClass']('disabled'); - this.editor.btnNamedRanges.setVisible(!disabled); + this.editor.$btnfunc[!disabled && this.mode.isEdit ?'removeClass':'addClass']('disabled'); + this.editor.btnNamedRanges.setVisible(!disabled && this.mode.isEdit && !this.mode.isEditDiagram && !this.mode.isEditMailMerge); }, setPreviewMode: function(mode) { if (this.viewmode === mode) return; this.viewmode = mode; - this.editor.$btnfunc[!mode?'removeClass':'addClass']('disabled'); - this.editor.cellNameDisabled(mode); + this.editor.$btnfunc[!mode && this.mode.isEdit?'removeClass':'addClass']('disabled'); + this.editor.cellNameDisabled(mode && !(this.mode.isEdit && !this.mode.isEditDiagram && !this.mode.isEditMailMerge)); } }); }); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/controller/LeftMenu.js b/apps/spreadsheeteditor/main/app/controller/LeftMenu.js index 2127bd08e..3a89c1a73 100644 --- a/apps/spreadsheeteditor/main/app/controller/LeftMenu.js +++ b/apps/spreadsheeteditor/main/app/controller/LeftMenu.js @@ -188,21 +188,28 @@ define([ return this; }, - SetDisabled: function(disable, disableFileMenu) { - this.mode.isEdit = !disable; + SetDisabled: function(disable, options) { + if (this.leftMenu._state.disabled !== disable) { + this.leftMenu._state.disabled = disable; + if (disable) { + this.previsEdit = this.mode.isEdit; + this.prevcanEdit = this.mode.canEdit; + this.mode.isEdit = this.mode.canEdit = !disable; + } else { + this.mode.isEdit = this.previsEdit; + this.mode.canEdit = this.prevcanEdit; + } + } + if (disable) this.leftMenu.close(); - /** coauthoring begin **/ - this.leftMenu.btnComments.setDisabled(disable); - var comments = this.getApplication().getController('Common.Controllers.Comments'); - if (comments) - comments.setPreviewMode(disable); - this.setPreviewMode(disable); - this.leftMenu.btnChat.setDisabled(disable); - /** coauthoring end **/ + if (!options || options.comments && options.comments.disable) + this.leftMenu.btnComments.setDisabled(disable); + if (!options || options.chat) + this.leftMenu.btnChat.setDisabled(disable); + this.leftMenu.btnPlugins.setDisabled(disable); this.leftMenu.btnSpellcheck.setDisabled(disable); - if (disableFileMenu) this.leftMenu.getMenu('file').SetDisabled(disable); }, createDelayedElements: function() { diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index 4d4fcb73c..c5952c7b8 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -209,7 +209,8 @@ define([ Common.NotificationCenter.on('download:cancel', _.bind(this.onDownloadCancel, this)); Common.NotificationCenter.on('download:advanced', _.bind(this.onAdvancedOptions, this)); Common.NotificationCenter.on('showmessage', _.bind(this.onExternalMessage, this)); - Common.NotificationCenter.on('markfavorite', _.bind(this.markFavorite, this)); + Common.NotificationCenter.on('markfavorite', _.bind(this.markFavorite, this)); + Common.NotificationCenter.on('editing:disable', _.bind(this.onEditingDisable, this)); this.stackLongActions = new Common.IrregularStack({ strongCompare : this._compareActionStrong, @@ -218,6 +219,11 @@ define([ this.stackLongActions.push({id: InitApplication, type: Asc.c_oAscAsyncActionType.BlockInteraction}); + this.stackDisableActions = new Common.IrregularStack({ + strongCompare : this._compareActionWeak, + weakCompare : this._compareActionWeak + }); + this.isShowOpenDialog = false; // Initialize api gateway @@ -670,6 +676,9 @@ define([ if (type == Asc.c_oAscAsyncActionType.BlockInteraction && !( (id == Asc.c_oAscAsyncAction['LoadDocumentFonts'] || id == Asc.c_oAscAsyncAction['ApplyChanges']) && (this.dontCloseDummyComment || this.inTextareaControl || Common.Utils.ModalWindow.isVisible() || this.inFormControl) )) this.onEditComplete(this.loadMask, {restorefocus:true}); } + if ( id == Asc.c_oAscAsyncAction['Disconnect']) { + this.disableEditing(false, true); + } }, setLongActionView: function(action) { @@ -741,6 +750,12 @@ define([ case LoadingDocument: title = this.loadingDocumentTitleText + ' '; break; + + case Asc.c_oAscAsyncAction['Disconnect']: + title = this.textDisconnect; + this.disableEditing(true, true); + break; + default: if (typeof action.id == 'string'){ title = action.id; @@ -1032,18 +1047,76 @@ define([ } }, - disableEditing: function(disable) { + disableEditing: function(disable, temp) { + Common.NotificationCenter.trigger('editing:disable', disable, { + viewMode: disable, + allowSignature: false, + allowProtect: false, + rightMenu: {clear: true, disable: true}, + statusBar: true, + leftMenu: {disable: true, previewMode: true}, + fileMenu: {protect: true, history: temp}, + comments: {disable: !temp, previewMode: true}, + chat: true, + review: true, + viewport: true, + documentHolder: true, + toolbar: true, + celleditor: {previewMode: true} + }, temp ? 'reconnect' : 'disconnect'); + }, + + onEditingDisable: function(disable, options, type) { var app = this.getApplication(); - if (this.appOptions.canEdit && this.editorConfig.mode !== 'view') { - app.getController('RightMenu').getView('RightMenu').clearSelection(); - app.getController('RightMenu').SetDisabled(disable, false); - app.getController('Toolbar').DisableToolbar(disable,disable); + + var action = {type: type, disable: disable, options: options}; + if (disable && !this.stackDisableActions.get({type: type})) + this.stackDisableActions.push(action); + !disable && this.stackDisableActions.pop({type: type}); + var prev_options = !disable && (this.stackDisableActions.length()>0) ? this.stackDisableActions.get(this.stackDisableActions.length()-1) : null; + + if (options.rightMenu && app.getController('RightMenu')) { + options.rightMenu.clear && app.getController('RightMenu').getView('RightMenu').clearSelection(); + options.rightMenu.disable && app.getController('RightMenu').SetDisabled(disable, options.allowSignature); + } + if (options.statusBar) { app.getController('Statusbar').SetDisabled(disable); } - app.getController('LeftMenu').SetDisabled(disable, true); - app.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); - app.getController('Viewport').SetDisabled(disable); - app.getController('CellEditor').SetDisabled(disable); + if (options.review) { + app.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); + } + if (options.viewport) { + app.getController('Viewport').SetDisabled(disable); + } + if (options.toolbar) { + app.getController('Toolbar').DisableToolbar(disable, options.viewMode); + } + if (options.documentHolder) { + app.getController('DocumentHolder').SetDisabled(disable, options.allowProtect); + } + if (options.leftMenu) { + if (options.leftMenu.disable) + app.getController('LeftMenu').SetDisabled(disable, options); + if (options.leftMenu.previewMode) + app.getController('LeftMenu').setPreviewMode(disable); + } + if (options.fileMenu) { + app.getController('LeftMenu').leftMenu.getMenu('file').SetDisabled(disable, options.fileMenu); + if (options.leftMenu.disable) + app.getController('LeftMenu').leftMenu.getMenu('file').applyMode(); + } + if (options.comments) { + var comments = this.getApplication().getController('Common.Controllers.Comments'); + if (comments && options.comments.previewMode) + comments.setPreviewMode(disable); + } + if (options.celleditor && options.celleditor.previewMode) { + app.getController('CellEditor').setPreviewMode(disable); + } + + if (prev_options) { + this.onEditingDisable(prev_options.disable, prev_options.options, prev_options.type); + } }, onOpenDocument: function(progress) { @@ -2443,15 +2516,7 @@ define([ var me = this; Common.Utils.warningDocumentIsLocked({ disablefunc: function (disable) { - me.disableEditing(disable); - var app = me.getApplication(); - app.getController('DocumentHolder').SetDisabled(disable); - var leftMenu = app.getController('LeftMenu'); - leftMenu.leftMenu.getMenu('file').getButton('protect').setDisabled(disable); - leftMenu.setPreviewMode(disable); - - var comments = app.getController('Common.Controllers.Comments'); - if (comments) comments.setPreviewMode(disable); + me.disableEditing(disable, true); }}); }, @@ -2953,7 +3018,8 @@ define([ errorPivotWithoutUnderlying: 'The Pivot Table report was saved without the underlying data.
Use the \'Refresh\' button to update the report.', txtQuarter: 'Qtr', txtOr: '%1 or %2', - confirmReplaceFormulaInTable: 'Formulas in the header row will be removed and converted to static text.
Do you want to continue?' + confirmReplaceFormulaInTable: 'Formulas in the header row will be removed and converted to static text.
Do you want to continue?', + textDisconnect: 'Connection is lost' } })(), SSE.Controllers.Main || {})) }); diff --git a/apps/spreadsheeteditor/main/app/view/FileMenu.js b/apps/spreadsheeteditor/main/app/view/FileMenu.js index 3b6256650..143e5be61 100644 --- a/apps/spreadsheeteditor/main/app/view/FileMenu.js +++ b/apps/spreadsheeteditor/main/app/view/FileMenu.js @@ -253,6 +253,8 @@ define([ }, applyMode: function() { + if (!this.rendered) return; + if (!this.panels) { this.panels = { 'opts' : (new SSE.Views.FileMenuPanels.Settings({menu:this})).render(this.$el.find('#panel-settings')), @@ -346,8 +348,7 @@ define([ } if (!delay) { - if ( this.rendered ) - this.applyMode(); + this.applyMode(); } }, @@ -424,20 +425,16 @@ define([ } }, - SetDisabled: function(disable) { + SetDisabled: function(disable, options) { if ( !this.panels ) { this.mode.disableEditing = disable; } else { this.panels['opts'].SetDisabled(disable); } - var _btn_save = this.getButton('save'), - _btn_rename = this.getButton('rename'), - _btn_protect = this.getButton('protect'); + var _btn_protect = this.getButton('protect'); - _btn_save.setDisabled(disable || !this.mode.isEdit); - _btn_protect.setDisabled(disable || !this.mode.isEdit); - _btn_rename.setDisabled(disable || !this.mode.canRename || this.mode.isDesktopApp); + options && options.protect && _btn_protect.setDisabled(disable || !this.mode.isEdit); }, btnSaveCaption : 'Save', diff --git a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js index 928b04cf3..d5a4b1c9c 100644 --- a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js +++ b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js @@ -265,6 +265,7 @@ define([ if ( disabled ) { $(this.viewSettingsPicker.dataViewItems[1].el).hide(); $(this.viewSettingsPicker.dataViewItems[2].el).hide(); + this.viewSettingsPicker.selectByIndex(0, true); } else { if ( this.mode.canPrint ) $(this.viewSettingsPicker.dataViewItems[1].el).show(); diff --git a/apps/spreadsheeteditor/main/app/view/LeftMenu.js b/apps/spreadsheeteditor/main/app/view/LeftMenu.js index 8cca99aab..248bdbf94 100644 --- a/apps/spreadsheeteditor/main/app/view/LeftMenu.js +++ b/apps/spreadsheeteditor/main/app/view/LeftMenu.js @@ -75,7 +75,7 @@ define([ initialize: function () { this.minimizedMode = true; - this._state = {}; + this._state = {disabled: false}; }, render: function () { diff --git a/apps/spreadsheeteditor/main/app/view/SignatureSettings.js b/apps/spreadsheeteditor/main/app/view/SignatureSettings.js index 94bd653c4..53836c5ac 100644 --- a/apps/spreadsheeteditor/main/app/view/SignatureSettings.js +++ b/apps/spreadsheeteditor/main/app/view/SignatureSettings.js @@ -393,23 +393,22 @@ define([ if (this._state.DisabledEditing != disable) { this._state.DisabledEditing = disable; - var rightMenuController = SSE.getController('RightMenu'); - if (disable && rightMenuController.rightmenu.GetActivePane() !== 'id-signature-settings') - rightMenuController.rightmenu.clearSelection(); - rightMenuController.SetDisabled(disable, true); - SSE.getController('Toolbar').DisableToolbar(disable, disable); - SSE.getController('Statusbar').SetDisabled(disable); - SSE.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); - SSE.getController('DocumentHolder').SetDisabled(disable, true); - SSE.getController('CellEditor').setPreviewMode(disable); - SSE.getController('Viewport').disableEditing(disable); - - // var leftMenu = SSE.getController('LeftMenu').leftMenu; - // leftMenu.btnComments.setDisabled(disable); - SSE.getController('LeftMenu').setPreviewMode(disable); - var comments = SSE.getController('Common.Controllers.Comments'); - if (comments) - comments.setPreviewMode(disable); + Common.NotificationCenter.trigger('editing:disable', disable, { + viewMode: disable, + allowSignature: true, + allowProtect: true, + rightMenu: {clear: disable && (SSE.getController('RightMenu').rightmenu.GetActivePane() !== 'id-signature-settings'), disable: true}, + statusBar: true, + leftMenu: {disable: false, previewMode: true}, + fileMenu: false, + comments: {disable: false, previewMode: true}, + chat: false, + review: true, + viewport: true, + documentHolder: true, + toolbar: true, + celleditor: {previewMode: true} + }, 'signature'); } },