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 28b169af6..6b6312256 100644 --- a/apps/common/main/lib/controller/ReviewChanges.js +++ b/apps/common/main/lib/controller/ReviewChanges.js @@ -728,25 +728,26 @@ define([ }, disableEditing: function(disable) { - 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); + 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}, + navigation: {disable: false, previewMode: true}, + comments: {disable: false, previewMode: true}, + chat: false, + review: false, + viewport: false, + 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 43500dbdf..da26708e6 100644 --- a/apps/documenteditor/main/app/controller/FormsTab.js +++ b/apps/documenteditor/main/app/controller/FormsTab.js @@ -253,19 +253,26 @@ 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 + }, 'forms'); 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..17a145b1a 100644 --- a/apps/documenteditor/main/app/controller/LeftMenu.js +++ b/apps/documenteditor/main/app/controller/LeftMenu.js @@ -666,21 +666,29 @@ define([ this.dlgSearch && this.dlgSearch.setMode(this.viewmode ? 'no-replace' : 'search'); }, - 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); + 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); }, /** coauthoring begin **/ diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js index 1a3e619b7..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; @@ -213,7 +218,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.onEditingDisable, this)); this.isShowOpenDialog = false; @@ -704,18 +709,84 @@ 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); + 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, history: temp}, + navigation: {disable: !temp, previewMode: true}, + comments: {disable: !temp, previewMode: true}, + chat: true, + review: true, + viewport: true, + documentHolder: true, + toolbar: true, + plugins: false + }, temp ? 'reconnect' : 'disconnect'); + }, + + onEditingDisable: function(disable, options, type) { + var app = this.getApplication(); + + 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); } - app.getController('LeftMenu').SetDisabled(disable, true); - app.getController('Toolbar').DisableToolbar(disable, 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, 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.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.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); + } + + if (prev_options) { + this.onEditingDisable(prev_options.disable, prev_options.options, prev_options.type); + } }, onRequestClose: function() { @@ -845,6 +916,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()) && @@ -945,6 +1020,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; @@ -2425,17 +2506,7 @@ 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); }; Common.Utils.warningDocumentIsLocked({disablefunc: _disable_ui}); @@ -2922,7 +2993,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 ffdd1b0fa..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'), @@ -271,6 +275,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 +369,7 @@ define([ } if (!delay) { - if ( this.rendered ) - this.applyMode(); + this.applyMode(); } return this; }, @@ -411,14 +416,12 @@ define([ }); }, - 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[(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'](); + options && options.protect && _btn_protect.setDisabled(disable); + options && options.history && _btn_history.setDisabled(disable); }, isVisible: function () { @@ -435,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') { @@ -445,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 34ece804c..7ccc75536 100644 --- a/apps/documenteditor/main/app/view/MailMergeSettings.js +++ b/apps/documenteditor/main/app/view/MailMergeSettings.js @@ -799,18 +799,26 @@ 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); - - var comments = DE.getController('Common.Controllers.Comments'); - if (comments) - comments.setPreviewMode(disable); - - DE.getController('LeftMenu').setPreviewMode(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 + }, '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 2d4d15d9a..c489c8e13 100644 --- a/apps/documenteditor/main/app/view/SignatureSettings.js +++ b/apps/documenteditor/main/app/view/SignatureSettings.js @@ -393,22 +393,26 @@ 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); - - // 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); + 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 + }, 'signature'); } }, 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 ba9e00248..58bfee2f0 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'), @@ -186,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( @@ -267,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')), @@ -357,8 +367,7 @@ define([ } if (!delay) { - if ( this.rendered ) - this.applyMode(); + this.applyMode(); } }, @@ -433,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') { @@ -443,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[(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'](); + 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) { diff --git a/apps/spreadsheeteditor/main/app/controller/CellEditor.js b/apps/spreadsheeteditor/main/app/controller/CellEditor.js index 8a9beecf1..f6f88365f 100644 --- a/apps/spreadsheeteditor/main/app/controller/CellEditor.js +++ b/apps/spreadsheeteditor/main/app/controller/CellEditor.js @@ -323,16 +323,16 @@ define([ this.namedrange_locked = (state == Asc.c_oAscDefinedNameReason.LockDefNameManager); }, - disableEditing: function(disabled) { - this.editor.$btnfunc[!disabled?'removeClass':'addClass']('disabled'); - this.editor.btnNamedRanges.setVisible(!disabled); + SetDisabled: function(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 e60895ed3..3a89c1a73 100644 --- a/apps/spreadsheeteditor/main/app/controller/LeftMenu.js +++ b/apps/spreadsheeteditor/main/app/controller/LeftMenu.js @@ -188,13 +188,28 @@ 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, 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; + } + } - this.leftMenu.getMenu('file').disableEditing(disabled); + if (disable) this.leftMenu.close(); + + 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); }, createDelayedElements: function() { diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index 6ee4976a2..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,11 +1047,75 @@ 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('Toolbar').DisableToolbar(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); + } + 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); } }, @@ -2437,20 +2516,7 @@ define([ var me = this; Common.Utils.warningDocumentIsLocked({ 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.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); + me.disableEditing(disable, true); }}); }, @@ -2952,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/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 4f41c7ba0..143e5be61 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'), @@ -249,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')), @@ -324,8 +330,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; } }, @@ -343,8 +348,7 @@ define([ } if (!delay) { - if ( this.rendered ) - this.applyMode(); + this.applyMode(); } }, @@ -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,19 +416,25 @@ define([ if (type == 'save') { return this.miSave; } else + if (type == 'rename') { + return this.miRename; + }else if (type == 'protect') { return this.miProtect; } } }, - disableEditing: function(disabled) { + SetDisabled: function(disable, options) { 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_protect = this.getButton('protect'); + + 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 b9bbfbf16..d5a4b1c9c 100644 --- a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js +++ b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js @@ -261,10 +261,11 @@ 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(); + 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'); } }, diff --git a/apps/spreadsheeteditor/main/app/view/Statusbar.js b/apps/spreadsheeteditor/main/app/view/Statusbar.js index 3f5edce6f..ecb08aaef 100644 --- a/apps/spreadsheeteditor/main/app/view/Statusbar.js +++ b/apps/spreadsheeteditor/main/app/view/Statusbar.js @@ -507,7 +507,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(); },