Lock header buttons

This commit is contained in:
Julia Radzhabova
2023-12-15 18:21:34 +03:00
parent 352fee9491
commit 0a0a34b1dc
18 changed files with 60 additions and 83 deletions

View File

@ -894,6 +894,7 @@ define([
viewMode: false,
reviewMode: true,
fillFormMode: false,
viewDocMode: false,
allowMerge: false,
allowSignature: false,
allowProtect: false,

View File

@ -630,11 +630,12 @@ define([
getPanel: function (role, config) {
var me = this;
function createTitleButton(iconid, slot, disabled, hintDirection, hintOffset, hintTitle) {
function createTitleButton(iconid, slot, disabled, hintDirection, hintOffset, hintTitle, lock) {
return (new Common.UI.Button({
cls: 'btn-header',
iconCls: iconid,
disabled: disabled === true,
lock: lock,
dataHint:'0',
dataHintDirection: hintDirection ? hintDirection : (config.isDesktopApp ? 'right' : 'left'),
dataHintOffset: hintOffset ? hintOffset : (config.isDesktopApp ? '10, -18' : '10, 10'),
@ -753,6 +754,7 @@ define([
caption: config.isReviewOnly ? me.textReview : me.textEdit,
menu: true,
visible: config.isReviewOnly || !config.canReview,
lock: [Common.enumLock.previewReviewMode, Common.enumLock.viewFormMode, Common.enumLock.lostConnect, Common.enumLock.disableOnStart, Common.enumLock.docLockView, Common.enumLock.docLockComments, Common.enumLock.docLockForms, Common.enumLock.fileMenuOpened, Common.enumLock.changeModeLock],
dataHint: '0',
dataHintDirection: 'bottom',
dataHintOffset: 'big'
@ -803,8 +805,10 @@ define([
me.btnPrintQuick = createTitleButton('toolbar__icon icon--inverse btn-quick-print', $html.findById('#slot-btn-dt-print-quick'), true, undefined, undefined, 'Q');
me.btnSave = createTitleButton('toolbar__icon icon--inverse btn-save', $html.findById('#slot-btn-dt-save'), true, undefined, undefined, 'S');
me.btnUndo = createTitleButton('toolbar__icon icon--inverse btn-undo', $html.findById('#slot-btn-dt-undo'), true, undefined, undefined, 'Z');
me.btnRedo = createTitleButton('toolbar__icon icon--inverse btn-redo', $html.findById('#slot-btn-dt-redo'), true, undefined, undefined, 'Y');
me.btnUndo = createTitleButton('toolbar__icon icon--inverse btn-undo', $html.findById('#slot-btn-dt-undo'), true, undefined, undefined, 'Z',
[Common.enumLock.undoLock, Common.enumLock.fileMenuOpened]);
me.btnRedo = createTitleButton('toolbar__icon icon--inverse btn-redo', $html.findById('#slot-btn-dt-redo'), true, undefined, undefined, 'Y',
[Common.enumLock.redoLock, Common.enumLock.fileMenuOpened]);
return $html;
}
@ -1023,9 +1027,11 @@ define([
return $panelUsers;
else if (type == 'share')
return this.btnShare;
else if (type == 'mode')
return this.btnDocMode;
},
lockHeaderBtns: function (alias, lock) {
lockHeaderBtns: function (alias, lock, cause) {
var me = this;
if ( alias == 'users' ) {
if ( lock ) {
@ -1042,23 +1048,12 @@ define([
}
} else {
var _lockButton = function (btn) {
if ( btn ) {
if ( lock ) {
btn.keepState = {
disabled: btn.isDisabled()
};
btn.setDisabled( true );
} else {
btn.setDisabled( btn.keepState && btn.keepState.disabled || lock);
delete btn.keepState;
}
}
btn && Common.Utils.lockControls(cause, lock, {array: [btn]});
};
switch ( alias ) {
case 'undo': _lockButton(me.btnUndo); break;
case 'redo': _lockButton(me.btnRedo); break;
case 'mode': me.btnDocMode && _lockButton(me.btnDocMode); break;
case 'mode': _lockButton(me.btnDocMode); break;
default: break;
}
}

View File

@ -63,7 +63,7 @@ define([
hasCoeditingUsers: 'has-coediting-users',
previewReviewMode: 'preview-review-mode', // display mode on Collaboration tab
viewFormMode: 'view-form-mode', // view form mode on Forms tab
viewMode: 'view-mode', // view mode on disconnect, version history etc (used for locking buttons not in toolbar)
viewMode: 'view-mode', // view mode on disconnect, version history etc (used for locking buttons not in toolbar) or view mode from header mode button (for toolbar)
hideComments: 'hide-comments', // no live comments and left panel is closed
cantShare: 'cant-share'
};

View File

@ -378,6 +378,7 @@ define([
viewMode: false,
reviewMode: false,
fillFormMode: true,
viewDocMode: false,
allowMerge: false,
allowSignature: false,
allowProtect: false,

View File

@ -834,6 +834,7 @@ define([
viewMode: disable,
reviewMode: false,
fillFormMode: false,
viewDocMode: false,
allowMerge: false,
allowSignature: false,
allowProtect: false,

View File

@ -3390,7 +3390,8 @@ define([
},
onAppShowed: function (config) {
var me = this;
var me = this,
application = this.getApplication();
var compactview = !(config.isEdit || config.isRestrictedEdit && config.canFillForms && config.isFormCreator);
if ( config.isEdit || config.isRestrictedEdit && config.canFillForms && config.isFormCreator) {
@ -3432,12 +3433,12 @@ define([
// if ( config.isDesktopApp ) {
// if ( config.canProtect ) {
// tab = {action: 'protect', caption: me.toolbar.textTabProtect, dataHintTitle: 'T', layoutname: 'toolbar-protect'};
// $panel = me.getApplication().getController('Common.Controllers.Protection').createToolbarPanel();
// $panel = application.getController('Common.Controllers.Protection').createToolbarPanel();
//
// if ($panel) me.toolbar.addTab(tab, $panel, 6);
// }
// }
var drawtab = me.getApplication().getController('Common.Controllers.Draw');
var drawtab = application.getController('Common.Controllers.Draw');
drawtab.setApi(me.api).setMode(config);
$panel = drawtab.createToolbarPanel();
if ($panel) {
@ -3450,10 +3451,10 @@ define([
if ( config.canProtect ) {
tab = {action: 'protect', caption: me.toolbar.textTabProtect, layoutname: 'toolbar-protect', dataHintTitle: 'T'};
$panel = me.getApplication().getController('Common.Controllers.Protection').createToolbarPanel();
$panel = application.getController('Common.Controllers.Protection').createToolbarPanel();
if ($panel) {
(config.isSignatureSupport || config.isPasswordSupport) && $panel.append($('<div class="separator long"></div>'));
var doctab = me.getApplication().getController('DocProtection');
var doctab = application.getController('DocProtection');
$panel.append(doctab.createToolbarPanel());
me.toolbar.addTab(tab, $panel, 7);
me.toolbar.setVisible('protect', Common.UI.LayoutManager.isElementVisible('toolbar-protect'));
@ -3461,15 +3462,17 @@ define([
}
}
var links = me.getApplication().getController('Links');
var links = application.getController('Links');
links.setApi(me.api).setConfig({toolbar: me});
Array.prototype.push.apply(me.toolbar.lockControls, links.getView('Links').getButtons());
me.toolbar.lockControls.push(application.getController('Viewport').getView('Common.Views.Header').getButton('mode'));
}
if ( config.isEdit && config.canFeatureContentControl && config.canFeatureForms || config.isRestrictedEdit && config.canFillForms ) {
if (config.isFormCreator) {
tab = {caption: me.textTabForms, action: 'forms', dataHintTitle: 'M'};
var forms = me.getApplication().getController('FormsTab');
var forms = application.getController('FormsTab');
forms.setApi(me.api).setConfig({toolbar: me, config: config});
$panel = forms.createToolbarPanel();
if ($panel) {
@ -3483,7 +3486,7 @@ define([
config.isEdit && config.canFeatureContentControl && me.onChangeSdtGlobalSettings();
tab = {caption: me.toolbar.textTabView, action: 'view', extcls: config.isEdit ? 'canedit' : '', layoutname: 'toolbar-view', dataHintTitle: 'W'};
var viewtab = me.getApplication().getController('ViewTab');
var viewtab = application.getController('ViewTab');
viewtab.setApi(me.api).setConfig({toolbar: me, mode: config});
$panel = viewtab.createToolbarPanel();
if ($panel) {

View File

@ -90,23 +90,13 @@ define([
Common.Utils.InternalSettings.get('toolbar-height-compact') : Common.Utils.InternalSettings.get('toolbar-height-normal');
},
'undo:disabled' : function (state) {
if ( me.header.btnUndo ) {
if ( me.header.btnUndo.keepState )
me.header.btnUndo.keepState.disabled = state;
else me.header.btnUndo.setDisabled(state);
}
me.header.lockHeaderBtns( 'undo', state, Common.enumLock.undoLock );
},
'redo:disabled' : function (state) {
if ( me.header.btnRedo )
if ( me.header.btnRedo.keepState )
me.header.btnRedo.keepState.disabled = state;
else me.header.btnRedo.setDisabled(state);
me.header.lockHeaderBtns( 'redo', state, Common.enumLock.redoLock );
},
'docmode:disabled' : function (state) {
if ( me.header.btnDocMode )
if ( me.header.btnDocMode.keepState )
me.header.btnDocMode.keepState.disabled = state;
else me.header.btnDocMode.setDisabled(state);
me.header.lockHeaderBtns( 'mode', state, Common.enumLock.changeModeLock);
},
'print:disabled' : function (state) {
if ( me.header.btnPrint )
@ -263,10 +253,10 @@ define([
var me = this;
var _need_disable = opts == 'show';
me.header.lockHeaderBtns( 'undo', _need_disable );
me.header.lockHeaderBtns( 'redo', _need_disable );
me.header.lockHeaderBtns( 'undo', _need_disable, Common.enumLock.fileMenuOpened );
me.header.lockHeaderBtns( 'redo', _need_disable, Common.enumLock.fileMenuOpened );
me.header.lockHeaderBtns( 'users', _need_disable );
me.header.lockHeaderBtns( 'mode', _need_disable );
me.header.lockHeaderBtns( 'mode', _need_disable, Common.enumLock.fileMenuOpened );
},
applySettings: function () {
@ -287,13 +277,11 @@ define([
if (this.header.btnEdit)
this.header.btnEdit.hide();
this.header.lockHeaderBtns( 'rename-user', true);
this.header.lockHeaderBtns( 'mode', true);
}
},
SetDisabled: function(disable) {
this.header && this.header.lockHeaderBtns( 'rename-user', disable);
this.header && this.header.lockHeaderBtns( 'mode', disable);
},
onSearchShow: function () {

View File

@ -839,6 +839,7 @@ define([
viewMode: disable,
reviewMode: false,
fillFormMode: false,
viewDocMode: false,
allowMerge: true,
allowSignature: false,
allowProtect: false,

View File

@ -409,6 +409,7 @@ define([
viewMode: disable,
reviewMode: false,
fillFormMode: false,
viewDocMode: false,
allowMerge: false,
allowSignature: true,
allowProtect: true,

View File

@ -117,7 +117,9 @@ define([
disableOnStart: 'on-start',
complexForm: 'complex-form',
formsNoRoles: 'no-roles',
fixedForm: 'fixed-form'
fixedForm: 'fixed-form',
fileMenuOpened: 'file-menu-opened',
changeModeLock: 'change-mode-lock'
};
for (var key in enumLock) {
if (enumLock.hasOwnProperty(key)) {

View File

@ -90,17 +90,10 @@ define([
Common.Utils.InternalSettings.get('toolbar-height-compact') : Common.Utils.InternalSettings.get('toolbar-height-normal');
},
'undo:disabled' : function (state) {
if ( me.header.btnUndo ) {
if ( me.header.btnUndo.keepState )
me.header.btnUndo.keepState.disabled = state;
else me.header.btnUndo.setDisabled(state);
}
me.header.lockHeaderBtns( 'undo', state, Common.enumLock.undoLock );
},
'redo:disabled' : function (state) {
if ( me.header.btnRedo )
if ( me.header.btnRedo.keepState )
me.header.btnRedo.keepState.disabled = state;
else me.header.btnRedo.setDisabled(state);
me.header.lockHeaderBtns( 'redo', state, Common.enumLock.redoLock );
},
'print:disabled' : function (state) {
if ( me.header.btnPrint )
@ -243,8 +236,8 @@ define([
var me = this;
var _need_disable = opts == 'show';
me.header.lockHeaderBtns( 'undo', _need_disable );
me.header.lockHeaderBtns( 'redo', _need_disable );
me.header.lockHeaderBtns( 'undo', _need_disable, Common.enumLock.fileMenuOpened );
me.header.lockHeaderBtns( 'redo', _need_disable, Common.enumLock.fileMenuOpened );
me.header.lockHeaderBtns( 'users', _need_disable );
},

View File

@ -77,7 +77,8 @@ define([
lostConnect: 'disconnect',
disableOnStart: 'on-start',
firstPage: 'first-page',
lastPage: 'last-page'
lastPage: 'last-page',
fileMenuOpened: 'file-menu-opened'
};
for (var key in enumLock) {
if (enumLock.hasOwnProperty(key)) {

View File

@ -376,6 +376,8 @@ define([
toolbar.btnInsVideo && toolbar.btnInsVideo.on('click', _.bind(this.onAddVideo, this));
this.onSetupCopyStyleButton();
this.onBtnChangeState('undo:disabled', toolbar.btnUndo, toolbar.btnUndo.isDisabled());
this.onBtnChangeState('redo:disabled', toolbar.btnRedo, toolbar.btnRedo.isDisabled());
},
setApi: function(api) {

View File

@ -90,18 +90,10 @@ define([
Common.Utils.InternalSettings.get('toolbar-height-compact') : Common.Utils.InternalSettings.get('toolbar-height-normal');
},
'undo:disabled' : function (state) {
if ( me.header.btnUndo ) {
if ( me.header.btnUndo.keepState )
me.header.btnUndo.keepState.disabled = state;
else me.header.btnUndo.setDisabled(state);
}
me.header.lockHeaderBtns( 'undo', state, Common.enumLock.undoLock );
},
'redo:disabled' : function (state) {
if ( me.header.btnRedo ) {
if ( me.header.btnRedo.keepState )
me.header.btnRedo.keepState.disabled = state;
else me.header.btnRedo.setDisabled(state);
}
me.header.lockHeaderBtns( 'redo', state, Common.enumLock.redoLock );
},
'print:disabled' : function (state) {
if ( me.header.btnPrint )
@ -313,8 +305,8 @@ define([
var me = this;
var _need_disable = opts == 'show';
me.header.lockHeaderBtns( 'undo', _need_disable );
me.header.lockHeaderBtns( 'redo', _need_disable );
me.header.lockHeaderBtns( 'undo', _need_disable, Common.enumLock.fileMenuOpened );
me.header.lockHeaderBtns( 'redo', _need_disable, Common.enumLock.fileMenuOpened );
me.header.lockHeaderBtns( 'users', _need_disable );
},

View File

@ -100,7 +100,8 @@ define([
noAnimationRepeat: 'no-animation-repeat',
noAnimationDuration: 'no-animation-duration',
timingLock: 'timing-lock',
copyLock: 'can-copy'
copyLock: 'can-copy',
fileMenuOpened: 'file-menu-opened'
};
for (var key in enumLock) {
if (enumLock.hasOwnProperty(key)) {

View File

@ -496,6 +496,8 @@ define([
Common.Gateway.on('insertimage', _.bind(this.insertImage, this));
this.onSetupCopyStyleButton();
this.onBtnChangeState('undo:disabled', toolbar.btnUndo, toolbar.btnUndo.isDisabled());
this.onBtnChangeState('redo:disabled', toolbar.btnRedo, toolbar.btnRedo.isDisabled());
}
},

View File

@ -99,18 +99,10 @@ define([
Common.Utils.InternalSettings.get('toolbar-height-compact') : Common.Utils.InternalSettings.get('toolbar-height-normal');
},
'undo:disabled' : function (state) {
if ( me.header.btnUndo ) {
if ( me.header.btnUndo.keepState )
me.header.btnUndo.keepState.disabled = state;
else me.header.btnUndo.setDisabled(state);
}
me.header.lockHeaderBtns( 'undo', state, Common.enumLock.undoLock );
},
'redo:disabled' : function (state) {
if ( me.header.btnRedo ) {
if ( me.header.btnRedo.keepState )
me.header.btnRedo.keepState.disabled = state;
else me.header.btnRedo.setDisabled(state);
}
me.header.lockHeaderBtns( 'redo', state, Common.enumLock.redoLock );
},
'print:disabled' : function (state) {
if ( me.header.btnPrint )
@ -286,8 +278,8 @@ define([
var me = this;
var _need_disable = opts == 'show';
me.header.lockHeaderBtns( 'undo', _need_disable );
me.header.lockHeaderBtns( 'redo', _need_disable );
me.header.lockHeaderBtns( 'undo', _need_disable, Common.enumLock.fileMenuOpened );
me.header.lockHeaderBtns( 'redo', _need_disable, Common.enumLock.fileMenuOpened );
me.header.lockHeaderBtns( 'users', _need_disable );
},

View File

@ -113,7 +113,8 @@ define([
wsLockFormatFill: 'worksheet-lock-format-fill',
editVisibleArea: 'is-visible-area',
userProtected: 'cell-user-protected',
pageBreakLock: 'page-break-lock'
pageBreakLock: 'page-break-lock',
fileMenuOpened: 'file-menu-opened'
};
for (var key in enumLock) {
if (enumLock.hasOwnProperty(key)) {