mirror of
https://github.com/ONLYOFFICE/web-apps.git
synced 2026-07-24 04:45:08 +08:00
Lock header buttons
This commit is contained in:
@ -894,6 +894,7 @@ define([
|
||||
viewMode: false,
|
||||
reviewMode: true,
|
||||
fillFormMode: false,
|
||||
viewDocMode: false,
|
||||
allowMerge: false,
|
||||
allowSignature: false,
|
||||
allowProtect: false,
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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'
|
||||
};
|
||||
|
||||
@ -378,6 +378,7 @@ define([
|
||||
viewMode: false,
|
||||
reviewMode: false,
|
||||
fillFormMode: true,
|
||||
viewDocMode: false,
|
||||
allowMerge: false,
|
||||
allowSignature: false,
|
||||
allowProtect: false,
|
||||
|
||||
@ -834,6 +834,7 @@ define([
|
||||
viewMode: disable,
|
||||
reviewMode: false,
|
||||
fillFormMode: false,
|
||||
viewDocMode: false,
|
||||
allowMerge: false,
|
||||
allowSignature: false,
|
||||
allowProtect: false,
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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 () {
|
||||
|
||||
@ -839,6 +839,7 @@ define([
|
||||
viewMode: disable,
|
||||
reviewMode: false,
|
||||
fillFormMode: false,
|
||||
viewDocMode: false,
|
||||
allowMerge: true,
|
||||
allowSignature: false,
|
||||
allowProtect: false,
|
||||
|
||||
@ -409,6 +409,7 @@ define([
|
||||
viewMode: disable,
|
||||
reviewMode: false,
|
||||
fillFormMode: false,
|
||||
viewDocMode: false,
|
||||
allowMerge: false,
|
||||
allowSignature: true,
|
||||
allowProtect: true,
|
||||
|
||||
@ -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)) {
|
||||
|
||||
@ -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 );
|
||||
},
|
||||
|
||||
|
||||
@ -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)) {
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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 );
|
||||
},
|
||||
|
||||
|
||||
@ -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)) {
|
||||
|
||||
@ -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());
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@ -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 );
|
||||
},
|
||||
|
||||
|
||||
@ -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)) {
|
||||
|
||||
Reference in New Issue
Block a user