Merge pull request #2006 from ONLYOFFICE/feature/de-protect
Feature/de protect
This commit is contained in:
commit
cdd90486ed
|
@ -769,7 +769,7 @@ define([
|
|||
return (this.cmpEl) ? this.cmpEl.is(":visible") : $(this.el).is(":visible");
|
||||
},
|
||||
|
||||
updateHint: function(hint) {
|
||||
updateHint: function(hint, isHtml) {
|
||||
this.options.hint = hint;
|
||||
|
||||
if (!this.rendered) return;
|
||||
|
@ -795,10 +795,12 @@ define([
|
|||
this.btnMenuEl.removeData('bs.tooltip');
|
||||
|
||||
this.btnEl.tooltip({
|
||||
html: !!isHtml,
|
||||
title : (typeof hint == 'string') ? hint : hint[0],
|
||||
placement : this.options.hintAnchor||'cursor'
|
||||
});
|
||||
this.btnMenuEl && this.btnMenuEl.tooltip({
|
||||
html: !!isHtml,
|
||||
title : hint[1],
|
||||
placement : this.options.hintAnchor||'cursor'
|
||||
});
|
||||
|
|
|
@ -144,10 +144,20 @@ define([
|
|||
}
|
||||
}, this, area);
|
||||
}.bind(this));
|
||||
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
|
||||
},
|
||||
onLaunch: function () {
|
||||
var filter = Common.localStorage.getKeysFilter();
|
||||
this.appPrefix = (filter && filter.length) ? filter.split(',')[0] : '';
|
||||
this._state = {
|
||||
disableEditing: false, // disable editing when disconnect/signed file/mail merge preview/review final or original/forms preview
|
||||
docProtection: {
|
||||
isReadOnly: false,
|
||||
isReviewOnly: false,
|
||||
isFormsOnly: false,
|
||||
isCommentsOnly: false
|
||||
}
|
||||
};
|
||||
|
||||
this.collection = this.getApplication().getCollection('Common.Collections.Comments');
|
||||
this.setComparator();
|
||||
|
@ -1645,16 +1655,25 @@ define([
|
|||
},
|
||||
|
||||
setPreviewMode: function(mode) {
|
||||
if (this.viewmode === mode) return;
|
||||
this.viewmode = mode;
|
||||
if (mode)
|
||||
this._state.disableEditing = mode;
|
||||
this.updatePreviewMode();
|
||||
},
|
||||
|
||||
updatePreviewMode: function() {
|
||||
var docProtection = this._state.docProtection;
|
||||
var viewmode = this._state.disableEditing || docProtection.isReadOnly || docProtection.isFormsOnly;
|
||||
|
||||
if (this.viewmode === viewmode) return;
|
||||
this.viewmode = viewmode;
|
||||
|
||||
if (viewmode)
|
||||
this.prevcanComments = this.mode.canComments;
|
||||
this.mode.canComments = (mode) ? false : this.prevcanComments;
|
||||
this.mode.canComments = (viewmode) ? false : this.prevcanComments;
|
||||
this.closeEditing();
|
||||
this.setMode(this.mode);
|
||||
this.updateComments(true);
|
||||
if (this.getPopover())
|
||||
mode ? this.getPopover().hide() : this.getPopover().update(true);
|
||||
viewmode ? this.getPopover().hide() : this.getPopover().update(true);
|
||||
},
|
||||
|
||||
clearCollections: function() {
|
||||
|
@ -1718,6 +1737,27 @@ define([
|
|||
}
|
||||
}
|
||||
this.updateComments(true);
|
||||
},
|
||||
|
||||
onAppReady: function (config) {
|
||||
var me = this;
|
||||
(new Promise(function (accept, reject) {
|
||||
accept();
|
||||
})).then(function(){
|
||||
me.onChangeProtectDocument();
|
||||
Common.NotificationCenter.on('protect:doclock', _.bind(me.onChangeProtectDocument, me));
|
||||
});
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = this.getApplication().getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props) {
|
||||
this._state.docProtection = props;
|
||||
this.updatePreviewMode();
|
||||
}
|
||||
}
|
||||
|
||||
}, Common.Controllers.Comments || {}));
|
||||
|
|
|
@ -105,6 +105,7 @@ define([
|
|||
Common.NotificationCenter.on('app:face', this.onAppShowed.bind(this));
|
||||
Common.NotificationCenter.on('uitheme:changed', this.updatePluginsButtons.bind(this));
|
||||
Common.NotificationCenter.on('window:resize', this.updatePluginsButtons.bind(this));
|
||||
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
|
||||
},
|
||||
|
||||
loadConfig: function(data) {
|
||||
|
@ -151,6 +152,16 @@ define([
|
|||
onAppShowed: function (config) {
|
||||
},
|
||||
|
||||
onAppReady: function (config) {
|
||||
var me = this;
|
||||
(new Promise(function (accept, reject) {
|
||||
accept();
|
||||
})).then(function(){
|
||||
me.onChangeProtectDocument();
|
||||
Common.NotificationCenter.on('protect:doclock', _.bind(me.onChangeProtectDocument, me));
|
||||
});
|
||||
},
|
||||
|
||||
setApi: function(api) {
|
||||
this.api = api;
|
||||
|
||||
|
@ -225,6 +236,10 @@ define([
|
|||
var _group = $('> .group', me.$toolbarPanelPlugins);
|
||||
var $slot = $('<span class="btn-slot text x-huge"></span>').appendTo(_group);
|
||||
btn.render($slot);
|
||||
var docProtection = me.panelPlugins._state.docProtection;
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, docProtection.isReadOnly, {array: btn});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, docProtection.isFormsOnly, {array: btn});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, docProtection.isCommentsOnly, {array: btn});
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -259,6 +274,10 @@ define([
|
|||
rank = new_rank;
|
||||
});
|
||||
_group.appendTo(me.$toolbarPanelPlugins);
|
||||
var docProtection = me.panelPlugins._state.docProtection;
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, docProtection.isReadOnly, {array: me.panelPlugins.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, docProtection.isFormsOnly, {array: me.panelPlugins.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, docProtection.isCommentsOnly, {array: me.panelPlugins.lockedControls});
|
||||
} else {
|
||||
console.error('toolbar panel isnot created');
|
||||
}
|
||||
|
@ -518,10 +537,13 @@ define([
|
|||
}
|
||||
|
||||
var variationsArr = [],
|
||||
pluginVisible = false;
|
||||
pluginVisible = false,
|
||||
isDisplayedInViewer = false;
|
||||
item.variations.forEach(function(itemVar){
|
||||
var visible = (isEdit || itemVar.isViewer && (itemVar.isDisplayedInViewer!==false)) && _.contains(itemVar.EditorsSupport, editor) && !itemVar.isSystem;
|
||||
if ( visible ) pluginVisible = true;
|
||||
if (itemVar.isViewer && (itemVar.isDisplayedInViewer!==false))
|
||||
isDisplayedInViewer = true;
|
||||
|
||||
if (item.isUICustomizer ) {
|
||||
visible && arrUI.push({
|
||||
|
@ -571,7 +593,8 @@ define([
|
|||
groupName: (item.group) ? item.group.name : '',
|
||||
groupRank: (item.group) ? item.group.rank : 0,
|
||||
minVersion: item.minVersion,
|
||||
original: item
|
||||
original: item,
|
||||
isDisplayedInViewer: isDisplayedInViewer
|
||||
}));
|
||||
}
|
||||
});
|
||||
|
@ -720,6 +743,19 @@ define([
|
|||
}, funcComplete);
|
||||
} else
|
||||
funcComplete();
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = this.getApplication().getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props && this.panelPlugins) {
|
||||
this.panelPlugins._state.docProtection = props;
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, props.isReadOnly, {array: this.panelPlugins.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, props.isFormsOnly, {array: this.panelPlugins.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, props.isCommentsOnly, {array: this.panelPlugins.lockedControls});
|
||||
}
|
||||
}
|
||||
}, Common.Controllers.Plugins || {}));
|
||||
});
|
||||
|
|
|
@ -82,7 +82,8 @@ define([
|
|||
'reviewchange:view': _.bind(this.onReviewViewClick, this),
|
||||
'reviewchange:compare': _.bind(this.onCompareClick, this),
|
||||
'lang:document': _.bind(this.onDocLanguage, this),
|
||||
'collaboration:coauthmode': _.bind(this.onCoAuthMode, this)
|
||||
'collaboration:coauthmode': _.bind(this.onCoAuthMode, this),
|
||||
'protect:update': _.bind(this.onChangeProtectDocument, this)
|
||||
},
|
||||
'Common.Views.ReviewChangesDialog': {
|
||||
'reviewchange:accept': _.bind(this.onAcceptClick, this),
|
||||
|
@ -102,7 +103,15 @@ define([
|
|||
this.userCollection = this.getApplication().getCollection('Common.Collections.Users');
|
||||
this.viewmode = false;
|
||||
|
||||
this._state = {posx: -1000, posy: -1000, popoverVisible: false, previewMode: false, compareSettings: null, wsLock: false, wsProps: []};
|
||||
this._state = { posx: -1000, posy: -1000, popoverVisible: false, previewMode: false, compareSettings: null, wsLock: false, wsProps: [],
|
||||
disableEditing: false, // disable editing when disconnect/signed file/mail merge preview/review final or original/forms preview
|
||||
docProtection: {
|
||||
isReadOnly: false,
|
||||
isReviewOnly: false,
|
||||
isFormsOnly: false,
|
||||
isCommentsOnly: false
|
||||
}
|
||||
};
|
||||
|
||||
Common.NotificationCenter.on('reviewchanges:turn', this.onTurnPreview.bind(this));
|
||||
Common.NotificationCenter.on('spelling:turn', this.onTurnSpelling.bind(this));
|
||||
|
@ -164,26 +173,35 @@ define([
|
|||
SetDisabled: function(state, reviewMode, fillFormMode) {
|
||||
if (this.dlgChanges)
|
||||
this.dlgChanges.close();
|
||||
if (reviewMode)
|
||||
if (reviewMode) {
|
||||
this.lockToolbar(Common.enumLock.previewReviewMode, state);
|
||||
else if (fillFormMode)
|
||||
this.dlgChanges && Common.Utils.lockControls(Common.enumLock.previewReviewMode, state, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
} else if (fillFormMode) {
|
||||
this.lockToolbar(Common.enumLock.viewFormMode, state);
|
||||
else
|
||||
this.dlgChanges && Common.Utils.lockControls(Common.enumLock.viewFormMode, state, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
} else {
|
||||
this.lockToolbar(Common.enumLock.viewMode, state);
|
||||
|
||||
}
|
||||
this.setPreviewMode(state);
|
||||
},
|
||||
|
||||
lockToolbar: function (causes, lock, opts) {
|
||||
Common.Utils.lockControls(causes, lock, opts, this.view.getButtons());
|
||||
this.view && Common.Utils.lockControls(causes, lock, opts, this.view.getButtons());
|
||||
},
|
||||
|
||||
setPreviewMode: function(mode) { //disable accept/reject in popover
|
||||
if (this.viewmode === mode) return;
|
||||
this.viewmode = mode;
|
||||
if (mode)
|
||||
this._state.disableEditing = mode;
|
||||
this.updatePreviewMode();
|
||||
},
|
||||
|
||||
updatePreviewMode: function() {
|
||||
var viewmode = this._state.disableEditing || this._state.docProtection.isReadOnly || this._state.docProtection.isFormsOnly || this._state.docProtection.isCommentsOnly;
|
||||
|
||||
if (this.viewmode === viewmode) return;
|
||||
this.viewmode = viewmode;
|
||||
if (viewmode)
|
||||
this.prevcanReview = this.appConfig.canReview;
|
||||
this.appConfig.canReview = (mode) ? false : this.prevcanReview;
|
||||
this.appConfig.canReview = (viewmode) ? false : this.prevcanReview;
|
||||
var me = this;
|
||||
this.popoverChanges && this.popoverChanges.each(function (model) {
|
||||
model.set('hint', !me.appConfig.canReview);
|
||||
|
@ -207,17 +225,14 @@ define([
|
|||
onApiShowChange: function (sdkchange, isShow) {
|
||||
var btnlock = true,
|
||||
changes;
|
||||
if (this.appConfig.canReview && !this.appConfig.isReviewOnly) {
|
||||
if (this.appConfig.canReview && !(this.appConfig.isReviewOnly || this._state.docProtection.isReviewOnly)) {
|
||||
if (sdkchange && sdkchange.length>0) {
|
||||
changes = this.readSDKChange(sdkchange);
|
||||
btnlock = this.isSelectedChangesLocked(changes, isShow);
|
||||
}
|
||||
if (this._state.lock !== btnlock) {
|
||||
Common.Utils.lockControls(Common.enumLock.reviewChangelock, btnlock, {array: [this.view.btnAccept, this.view.btnReject]});
|
||||
if (this.dlgChanges) {
|
||||
this.dlgChanges.btnAccept.setDisabled(btnlock);
|
||||
this.dlgChanges.btnReject.setDisabled(btnlock);
|
||||
}
|
||||
this.dlgChanges && Common.Utils.lockControls(Common.enumLock.reviewChangelock, btnlock, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
this._state.lock = btnlock;
|
||||
Common.Utils.InternalSettings.set(this.view.appPrefix + "accept-reject-lock", btnlock);
|
||||
}
|
||||
|
@ -485,6 +500,7 @@ define([
|
|||
}
|
||||
var date = (item.get_DateTime() == '') ? new Date() : new Date(item.get_DateTime()),
|
||||
user = me.userCollection.findOriginalUser(item.get_UserId()),
|
||||
isProtectedReview = me._state.docProtection.isReviewOnly,
|
||||
change = new Common.Models.ReviewChange({
|
||||
uid : Common.UI.getId(),
|
||||
userid : item.get_UserId(),
|
||||
|
@ -499,8 +515,9 @@ define([
|
|||
changedata : item,
|
||||
scope : me.view,
|
||||
hint : !me.appConfig.canReview,
|
||||
docProtection: me._state.docProtection,
|
||||
goto : (item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveTo || item.get_MoveType() == Asc.c_oAscRevisionsMove.MoveFrom),
|
||||
editable : me.appConfig.isReviewOnly && (item.get_UserId() == me.currentUserId) || !me.appConfig.isReviewOnly && (!me.appConfig.canUseReviewPermissions || AscCommon.UserInfoParser.canEditReview(item.get_UserName()))
|
||||
editable : (me.appConfig.isReviewOnly || isProtectedReview) && (item.get_UserId() == me.currentUserId) || !(me.appConfig.isReviewOnly || isProtectedReview) && (!me.appConfig.canUseReviewPermissions || AscCommon.UserInfoParser.canEditReview(item.get_UserName()))
|
||||
});
|
||||
|
||||
arr.push(change);
|
||||
|
@ -589,7 +606,7 @@ define([
|
|||
},
|
||||
|
||||
onTurnPreview: function(state, global, fromApi) {
|
||||
if ( this.appConfig.isReviewOnly ) {
|
||||
if ( this.appConfig.isReviewOnly) {
|
||||
this.view.turnChanges(true);
|
||||
} else
|
||||
if ( this.appConfig.canReview ) {
|
||||
|
@ -603,7 +620,7 @@ define([
|
|||
},
|
||||
|
||||
onApiTrackRevisionsChange: function(localFlag, globalFlag, userId) {
|
||||
if ( this.appConfig.isReviewOnly ) {
|
||||
if ( this.appConfig.isReviewOnly || this._state.docProtection.isReviewOnly) {
|
||||
this.view.turnChanges(true);
|
||||
} else
|
||||
if ( this.appConfig.canReview ) {
|
||||
|
@ -634,8 +651,10 @@ define([
|
|||
this.turnDisplayMode(item.value);
|
||||
if (!this.appConfig.isEdit && !this.appConfig.isRestrictedEdit)
|
||||
Common.localStorage.setItem(this.view.appPrefix + "review-mode", item.value); // for viewer
|
||||
else if (item.value=='markup' || item.value=='simple')
|
||||
else if (item.value=='markup' || item.value=='simple') {
|
||||
Common.localStorage.setItem(this.view.appPrefix + "review-mode-editor", item.value); // for editor save only markup modes
|
||||
Common.Utils.InternalSettings.set(this.view.appPrefix + "review-mode-editor", item.value);
|
||||
}
|
||||
Common.NotificationCenter.trigger('edit:complete', this.view);
|
||||
},
|
||||
|
||||
|
@ -829,10 +848,10 @@ define([
|
|||
|
||||
onAppReady: function (config) {
|
||||
var me = this;
|
||||
if ( config.canReview ) {
|
||||
(new Promise(function (resolve) {
|
||||
resolve();
|
||||
})).then(function () {
|
||||
(new Promise(function (resolve) {
|
||||
resolve();
|
||||
})).then(function () {
|
||||
if ( config.canReview ) {
|
||||
// function _setReviewStatus(state, global) {
|
||||
// me.view.turnChanges(state, global);
|
||||
// !global && me.api.asc_SetLocalTrackRevisions(state);
|
||||
|
@ -854,7 +873,7 @@ define([
|
|||
!val && (val = me.appConfig.customization ? me.appConfig.customization.reviewDisplay : undefined);
|
||||
val = /^(original|final|markup|simple)$/i.test(val) ? val.toLocaleLowerCase() : 'markup';
|
||||
}
|
||||
|
||||
Common.Utils.InternalSettings.set(me.view.appPrefix + "review-mode-editor", val);
|
||||
me.turnDisplayMode(val); // load display mode for all modes (viewer or editor)
|
||||
me.view.turnDisplayMode(val);
|
||||
|
||||
|
@ -862,46 +881,49 @@ define([
|
|||
(!me.appConfig.customization.review || me.appConfig.customization.review.showReviewChanges===undefined) && me.appConfig.customization.showReviewChanges==true) ) {
|
||||
me.dlgChanges = (new Common.Views.ReviewChangesDialog({
|
||||
popoverChanges : me.popoverChanges,
|
||||
mode : me.appConfig
|
||||
mode : me.appConfig,
|
||||
docProtection : me._state.docProtection
|
||||
}));
|
||||
var sdk = $('#editor_sdk'),
|
||||
offset = sdk.offset();
|
||||
me.dlgChanges.show(Math.max(10, offset.left + sdk.width() - 300), Math.max(10, offset.top + sdk.height() - 150));
|
||||
}
|
||||
});
|
||||
} else if (config.canViewReview) {
|
||||
config.canViewReview = (config.isEdit || me.api.asc_HaveRevisionsChanges(true)); // check revisions from all users
|
||||
if (config.canViewReview) {
|
||||
var val = Common.localStorage.getItem(me.view.appPrefix + (config.isEdit || config.isRestrictedEdit ? "review-mode-editor" : "review-mode"));
|
||||
if (val===null) {
|
||||
val = me.appConfig.customization && me.appConfig.customization.review ? me.appConfig.customization.review.reviewDisplay : undefined;
|
||||
!val && (val = me.appConfig.customization ? me.appConfig.customization.reviewDisplay : undefined);
|
||||
val = /^(original|final|markup|simple)$/i.test(val) ? val.toLocaleLowerCase() : (config.isEdit || config.isRestrictedEdit ? 'markup' : 'original');
|
||||
} else if (config.canViewReview) {
|
||||
config.canViewReview = (config.isEdit || me.api.asc_HaveRevisionsChanges(true)); // check revisions from all users
|
||||
if (config.canViewReview) {
|
||||
var val = Common.localStorage.getItem(me.view.appPrefix + (config.isEdit || config.isRestrictedEdit ? "review-mode-editor" : "review-mode"));
|
||||
if (val===null) {
|
||||
val = me.appConfig.customization && me.appConfig.customization.review ? me.appConfig.customization.review.reviewDisplay : undefined;
|
||||
!val && (val = me.appConfig.customization ? me.appConfig.customization.reviewDisplay : undefined);
|
||||
val = /^(original|final|markup|simple)$/i.test(val) ? val.toLocaleLowerCase() : (config.isEdit || config.isRestrictedEdit ? 'markup' : 'original');
|
||||
}
|
||||
me.turnDisplayMode(val);
|
||||
me.view.turnDisplayMode(val);
|
||||
}
|
||||
me.turnDisplayMode(val);
|
||||
me.view.turnDisplayMode(val);
|
||||
}
|
||||
}
|
||||
|
||||
if (me.view && me.view.btnChat) {
|
||||
me.getApplication().getController('LeftMenu').leftMenu.btnChat.on('toggle', function(btn, state){
|
||||
if (state !== me.view.btnChat.pressed)
|
||||
me.view.turnChat(state);
|
||||
});
|
||||
}
|
||||
me.onChangeProtectSheet();
|
||||
if (me.view) {
|
||||
me.lockToolbar(Common.enumLock.hideComments, !Common.localStorage.getBool(me.view.appPrefix + "settings-livecomment", true), {array: [me.view.btnCommentRemove, me.view.btnCommentResolve]});
|
||||
me.lockToolbar(Common.enumLock['Objects'], !!this._state.wsProps['Objects'], {array: [me.view.btnCommentRemove, me.view.btnCommentResolve]});
|
||||
}
|
||||
if (me.view && me.view.btnChat) {
|
||||
me.getApplication().getController('LeftMenu').leftMenu.btnChat.on('toggle', function(btn, state){
|
||||
if (state !== me.view.btnChat.pressed)
|
||||
me.view.turnChat(state);
|
||||
});
|
||||
}
|
||||
me.onChangeProtectSheet();
|
||||
if (me.view) {
|
||||
me.lockToolbar(Common.enumLock.hideComments, !Common.localStorage.getBool(me.view.appPrefix + "settings-livecomment", true), {array: [me.view.btnCommentRemove, me.view.btnCommentResolve]});
|
||||
me.lockToolbar(Common.enumLock['Objects'], !!me._state.wsProps['Objects'], {array: [me.view.btnCommentRemove, me.view.btnCommentResolve]});
|
||||
}
|
||||
|
||||
var val = Common.localStorage.getItem(me.view.appPrefix + "settings-review-hover-mode");
|
||||
if (val === null) {
|
||||
val = me.appConfig.customization && me.appConfig.customization.review ? !!me.appConfig.customization.review.hoverMode : false;
|
||||
} else
|
||||
val = !!parseInt(val);
|
||||
Common.Utils.InternalSettings.set(me.view.appPrefix + "settings-review-hover-mode", val);
|
||||
me.appConfig.reviewHoverMode = val;
|
||||
var val = Common.localStorage.getItem(me.view.appPrefix + "settings-review-hover-mode");
|
||||
if (val === null) {
|
||||
val = me.appConfig.customization && me.appConfig.customization.review ? !!me.appConfig.customization.review.hoverMode : false;
|
||||
} else
|
||||
val = !!parseInt(val);
|
||||
Common.Utils.InternalSettings.set(me.view.appPrefix + "settings-review-hover-mode", val);
|
||||
me.appConfig.reviewHoverMode = val;
|
||||
|
||||
me.view && me.view.onAppReady(config);
|
||||
});
|
||||
},
|
||||
|
||||
applySettings: function(menu) {
|
||||
|
@ -971,7 +993,8 @@ define([
|
|||
},
|
||||
|
||||
onCoAuthoringDisconnect: function() {
|
||||
this.lockToolbar(Common.enumLock.lostConnect, true)
|
||||
this.lockToolbar(Common.enumLock.lostConnect, true);
|
||||
this.dlgChanges && Common.Utils.lockControls(Common.enumLock.lostConnect, true, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
},
|
||||
|
||||
onUpdateUsers: function() {
|
||||
|
@ -1011,6 +1034,37 @@ define([
|
|||
this.lockToolbar(Common.enumLock['Objects'], !!this._state.wsProps['Objects'], {array: [this.view.btnCommentRemove, this.view.btnCommentResolve]});
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = this.getApplication().getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props) {
|
||||
this._state.docProtection = props;
|
||||
this.lockToolbar(Common.enumLock.docLockView, props.isReadOnly);
|
||||
this.lockToolbar(Common.enumLock.docLockForms, props.isFormsOnly);
|
||||
this.lockToolbar(Common.enumLock.docLockReview, props.isReviewOnly);
|
||||
this.lockToolbar(Common.enumLock.docLockComments, props.isCommentsOnly);
|
||||
if (this.dlgChanges) {
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, props.isReadOnly, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, props.isFormsOnly, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockReview, props.isReviewOnly, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, props.isCommentsOnly, {array: [this.dlgChanges.btnAccept, this.dlgChanges.btnReject]});
|
||||
}
|
||||
if (this.appConfig.canReview) {
|
||||
if (props.isReviewOnly) {
|
||||
this.onTurnPreview(true);
|
||||
this.onApiShowChange();
|
||||
} else if (this._state.prevReviewProtected) {
|
||||
this.onTurnPreview(false);
|
||||
this.onApiShowChange();
|
||||
}
|
||||
this._state.prevReviewProtected = props.isReviewOnly;
|
||||
}
|
||||
this.updatePreviewMode();
|
||||
}
|
||||
},
|
||||
|
||||
textInserted: '<b>Inserted:</b>',
|
||||
textDeleted: '<b>Deleted:</b>',
|
||||
textParaInserted: '<b>Paragraph Inserted</b> ',
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<div class="btn-goto img-commonctrl"></div>
|
||||
<% } %>
|
||||
<% if (!hint) { %>
|
||||
<% if (scope.appConfig.isReviewOnly) { %>
|
||||
<% if (scope.appConfig.isReviewOnly || docProtection.isReviewOnly) { %>
|
||||
<% if (editable) { %>
|
||||
<div class="btn-delete img-commonctrl"></div>
|
||||
<% } %>
|
||||
|
|
|
@ -207,6 +207,7 @@ define([
|
|||
type: 'password',
|
||||
showCls: (this.options.iconType==='svg' ? 'svg-icon' : 'toolbar__icon') + ' btn-sheet-view',
|
||||
hideCls: (this.options.iconType==='svg' ? 'svg-icon' : 'toolbar__icon') + ' hide-password',
|
||||
maxLength: this.options.maxPasswordLength,
|
||||
validateOnBlur: false,
|
||||
showPwdOnClick: true,
|
||||
validation : function(value) {
|
||||
|
|
|
@ -74,14 +74,16 @@ define([
|
|||
_.extend(this, options);
|
||||
this._locked = false;
|
||||
this._state = {
|
||||
DisabledControls: false
|
||||
DisabledControls: false,
|
||||
docProtection: {
|
||||
isReadOnly: false,
|
||||
isReviewOnly: false,
|
||||
isFormsOnly: false,
|
||||
isCommentsOnly: false
|
||||
}
|
||||
};
|
||||
this.lockedControls = [];
|
||||
Common.UI.BaseView.prototype.initialize.call(this, arguments);
|
||||
|
||||
Common.NotificationCenter.on('app:ready', function (mode) {
|
||||
Common.Utils.asyncCall(this._onAppReady, this, mode);
|
||||
}.bind(this));
|
||||
},
|
||||
|
||||
render: function(el) {
|
||||
|
@ -153,6 +155,7 @@ define([
|
|||
if ( !this.storePlugins.isEmpty() ) {
|
||||
var me = this;
|
||||
var _group = $('<div class="group"></div>');
|
||||
var _set = Common.enumLock;
|
||||
this.storePlugins.each(function (model) {
|
||||
if (model.get('visible')) {
|
||||
var modes = model.get('variations'),
|
||||
|
@ -167,6 +170,7 @@ define([
|
|||
split: modes && modes.length > 1,
|
||||
value: guid,
|
||||
hint: model.get('name'),
|
||||
lock: model.get('isDisplayedInViewer') ? [_set.viewMode, _set.previewReviewMode, _set.viewFormMode, _set.selRangeEdit, _set.editFormula] : [_set.viewMode, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.selRangeEdit, _set.editFormula],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
@ -179,6 +183,10 @@ define([
|
|||
me.lockedControls.push(btn);
|
||||
}
|
||||
});
|
||||
var docProtection = me._state.docProtection
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, docProtection.isReadOnly, {array: me.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, docProtection.isFormsOnly, {array: me.lockedControls});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, docProtection.isCommentsOnly, {array: me.lockedControls});
|
||||
|
||||
parent.html(_group);
|
||||
$('<div class="separator long"></div>').prependTo(parent);
|
||||
|
@ -204,6 +212,16 @@ define([
|
|||
}
|
||||
},
|
||||
|
||||
SetDisabled: function(disable, reviewMode, fillFormMode) {
|
||||
if (reviewMode) {
|
||||
Common.Utils.lockControls(Common.enumLock.previewReviewMode, disable, {array: this.lockedControls});
|
||||
} else if (fillFormMode) {
|
||||
Common.Utils.lockControls(Common.enumLock.viewFormMode, disable, {array: this.lockedControls});
|
||||
} else {
|
||||
Common.Utils.lockControls(Common.enumLock.viewMode, disable, {array: this.lockedControls});
|
||||
}
|
||||
},
|
||||
|
||||
openInsideMode: function(name, url, frameId) {
|
||||
if (!this.pluginsPanel) return false;
|
||||
|
||||
|
@ -289,9 +307,6 @@ define([
|
|||
this.loadMask.hide();
|
||||
},
|
||||
|
||||
_onAppReady: function (mode) {
|
||||
},
|
||||
|
||||
parseIcons: function(icons) {
|
||||
if (icons.length && typeof icons[0] !== 'string') {
|
||||
var theme = Common.UI.Themes.currentThemeId().toLowerCase(),
|
||||
|
@ -389,6 +404,7 @@ define([
|
|||
});
|
||||
});
|
||||
|
||||
var _set = Common.enumLock;
|
||||
var btn = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconImg: icon_url,
|
||||
|
@ -397,6 +413,7 @@ define([
|
|||
split: _menu_items.length > 1,
|
||||
value: guid,
|
||||
hint: model.get('name'),
|
||||
lock: model.get('isDisplayedInViewer') ? [_set.viewMode, _set.previewReviewMode, _set.viewFormMode, _set.selRangeEdit, _set.editFormula] : [_set.viewMode, _set.previewReviewMode, _set.viewFormMode, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.selRangeEdit, _set.editFormula ],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
|
|
@ -238,6 +238,10 @@ define([
|
|||
me.fireEvent('comment:resolveComments', [item.value]);
|
||||
});
|
||||
}
|
||||
Common.NotificationCenter.on('protect:doclock', function (e) {
|
||||
me.fireEvent('protect:update');
|
||||
});
|
||||
me.fireEvent('protect:update');
|
||||
}
|
||||
|
||||
return {
|
||||
|
@ -259,7 +263,7 @@ define([
|
|||
caption: this.txtAccept,
|
||||
split: !this.appConfig.canUseReviewPermissions,
|
||||
iconCls: 'toolbar__icon btn-review-save',
|
||||
lock: [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.docLockReview],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
@ -271,7 +275,7 @@ define([
|
|||
caption: this.txtReject,
|
||||
split: !this.appConfig.canUseReviewPermissions,
|
||||
iconCls: 'toolbar__icon btn-review-deny',
|
||||
lock: [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.docLockReview],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
@ -284,7 +288,7 @@ define([
|
|||
caption: this.txtCompare,
|
||||
split: true,
|
||||
iconCls: 'toolbar__icon btn-compare',
|
||||
lock: [_set.hasCoeditingUsers, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.hasCoeditingUsers, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
@ -294,7 +298,7 @@ define([
|
|||
this.btnTurnOn = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-ic-review',
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.docLockReview],
|
||||
caption: this.txtTurnon,
|
||||
split: !this.appConfig.isReviewOnly,
|
||||
enableToggle: true,
|
||||
|
@ -309,7 +313,7 @@ define([
|
|||
this.btnPrev = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-review-prev',
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.txtPrev,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -320,7 +324,7 @@ define([
|
|||
this.btnNext = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-review-next',
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.txtNext,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -336,7 +340,7 @@ define([
|
|||
this.btnReviewView = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-ic-reviewview',
|
||||
lock: [_set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.txtView,
|
||||
menu: new Common.UI.Menu({
|
||||
cls: 'ppm-toolbar',
|
||||
|
@ -404,7 +408,7 @@ define([
|
|||
this.btnCoAuthMode = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-ic-coedit',
|
||||
lock: [_set.viewFormMode, _set.lostConnect],
|
||||
lock: [_set.viewFormMode, _set.lostConnect, _set.docLockView],
|
||||
caption: this.txtCoAuthMode,
|
||||
menu: true,
|
||||
dataHint: '1',
|
||||
|
@ -450,7 +454,7 @@ define([
|
|||
caption: this.txtCommentRemove,
|
||||
split: true,
|
||||
iconCls: 'toolbar__icon btn-rem-comment',
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.hideComments, _set['Objects'], _set.lostConnect],
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.hideComments, _set['Objects'], _set.lostConnect, _set.docLockView, _set.docLockForms],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
|
@ -461,15 +465,13 @@ define([
|
|||
caption: this.txtCommentResolve,
|
||||
split: true,
|
||||
iconCls: 'toolbar__icon btn-resolve-all',
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.hideComments, _set['Objects'], _set.lostConnect],
|
||||
lock: [_set.previewReviewMode, _set.viewFormMode, _set.hideComments, _set['Objects'], _set.lostConnect, _set.docLockView, _set.docLockForms],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
});
|
||||
this.lockedControls.push(this.btnCommentResolve);
|
||||
}
|
||||
|
||||
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
|
||||
},
|
||||
|
||||
render: function (el) {
|
||||
|
@ -693,7 +695,6 @@ define([
|
|||
me.$el.find(separator_last).hide();
|
||||
|
||||
Common.NotificationCenter.trigger('tab:visible', 'review', (config.isEdit || config.canViewReview || config.canCoAuthoring && config.canComments) && Common.UI.LayoutManager.isElementVisible('toolbar-collaboration'));
|
||||
|
||||
setEvents.call(me);
|
||||
});
|
||||
},
|
||||
|
@ -731,7 +732,7 @@ define([
|
|||
var button = new Common.UI.Button({
|
||||
cls : 'btn-toolbar',
|
||||
iconCls : 'toolbar__icon btn-ic-review',
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.previewReviewMode, Common.enumLock.viewFormMode, Common.enumLock.lostConnect],
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.previewReviewMode, Common.enumLock.viewFormMode, Common.enumLock.lostConnect, Common.enumLock.docLockView, Common.enumLock.docLockForms, Common.enumLock.docLockComments, Common.enumLock.docLockReview],
|
||||
hintAnchor : 'top',
|
||||
hint : this.tipReview,
|
||||
split : !this.appConfig.isReviewOnly,
|
||||
|
@ -778,7 +779,7 @@ define([
|
|||
button = new Common.UI.Button({
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-ic-docspell',
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.viewFormMode, Common.enumLock.previewReviewMode],
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.viewFormMode, Common.enumLock.previewReviewMode, Common.enumLock.docLockView, Common.enumLock.docLockForms, Common.enumLock.docLockComments],
|
||||
hintAnchor : 'top',
|
||||
hint: this.tipSetSpelling,
|
||||
enableToggle: true,
|
||||
|
@ -794,7 +795,7 @@ define([
|
|||
button = new Common.UI.Button({
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-ic-doclang',
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.previewReviewMode, Common.enumLock.viewFormMode, Common.enumLock.noSpellcheckLangs, Common.enumLock.lostConnect],
|
||||
lock: [Common.enumLock.viewMode, Common.enumLock.previewReviewMode, Common.enumLock.viewFormMode, Common.enumLock.noSpellcheckLangs, Common.enumLock.lostConnect, Common.enumLock.docLockView, Common.enumLock.docLockForms, Common.enumLock.docLockComments],
|
||||
hintAnchor : 'top',
|
||||
hint: this.tipSetDocLang,
|
||||
dataHint: '0',
|
||||
|
@ -973,6 +974,7 @@ define([
|
|||
this.options.tpl = _.template(this.template)(this.options);
|
||||
this.popoverChanges = this.options.popoverChanges;
|
||||
this.mode = this.options.mode;
|
||||
this.docProtection = this.options.docProtection;
|
||||
|
||||
var filter = Common.localStorage.getKeysFilter();
|
||||
this.appPrefix = (filter && filter.length) ? filter.split(',')[0] : '';
|
||||
|
@ -983,6 +985,7 @@ define([
|
|||
render: function() {
|
||||
Common.UI.Window.prototype.render.call(this);
|
||||
|
||||
var _set = Common.enumLock;
|
||||
this.btnPrev = new Common.UI.Button({
|
||||
cls: 'dlg-btn iconic',
|
||||
iconCls: 'img-commonctrl prev',
|
||||
|
@ -1003,7 +1006,8 @@ define([
|
|||
cls : 'btn-toolbar',
|
||||
caption : this.txtAccept,
|
||||
split : true,
|
||||
disabled : this.mode.isReviewOnly || !!Common.Utils.InternalSettings.get(this.appPrefix + "accept-reject-lock"),
|
||||
disabled : this.mode.isReviewOnly || this.docProtection.isReviewOnly || !!Common.Utils.InternalSettings.get(this.appPrefix + "accept-reject-lock"),
|
||||
lock : [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.docLockReview],
|
||||
menu : this.mode.canUseReviewPermissions ? false : new Common.UI.Menu({
|
||||
items: [
|
||||
this.mnuAcceptCurrent = new Common.UI.MenuItem({
|
||||
|
@ -1023,7 +1027,7 @@ define([
|
|||
cls : 'btn-toolbar',
|
||||
caption : this.txtReject,
|
||||
split : true,
|
||||
disabled : this.mode.isReviewOnly || !!Common.Utils.InternalSettings.get(this.appPrefix + "accept-reject-lock"),
|
||||
lock : [_set.reviewChangelock, _set.isReviewOnly, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.docLockReview],
|
||||
menu : this.mode.canUseReviewPermissions ? false : new Common.UI.Menu({
|
||||
items: [
|
||||
this.mnuRejectCurrent = new Common.UI.MenuItem({
|
||||
|
@ -1038,6 +1042,13 @@ define([
|
|||
})
|
||||
});
|
||||
this.btnReject.render(this.$window.find('#id-review-button-reject'));
|
||||
var arr = [this.btnAccept, this.btnReject];
|
||||
Common.Utils.lockControls(Common.enumLock.isReviewOnly, this.mode.isReviewOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, this.docProtection.isReadOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, this.docProtection.isFormsOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockReview, this.docProtection.isReviewOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, this.docProtection.isCommentsOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.reviewChangelock, !!Common.Utils.InternalSettings.get(this.appPrefix + "accept-reject-lock"), {array: arr});
|
||||
|
||||
var me = this;
|
||||
this.btnPrev.on('click', function (e) {
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 147 B |
BIN
apps/common/main/resources/img/toolbar/1x/text-box-vertical.png
Normal file
BIN
apps/common/main/resources/img/toolbar/1x/text-box-vertical.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 149 B |
|
@ -78,6 +78,12 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
.masked & {
|
||||
&.disabled {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -157,6 +157,7 @@ require([
|
|||
'Main',
|
||||
'ViewTab',
|
||||
'Search',
|
||||
'DocProtection',
|
||||
'Common.Controllers.Fonts',
|
||||
'Common.Controllers.History'
|
||||
/** coauthoring begin **/
|
||||
|
@ -191,6 +192,7 @@ require([
|
|||
'documenteditor/main/app/controller/Main',
|
||||
'documenteditor/main/app/controller/ViewTab',
|
||||
'documenteditor/main/app/controller/Search',
|
||||
'documenteditor/main/app/controller/DocProtection',
|
||||
'documenteditor/main/app/view/FileMenuPanels',
|
||||
'documenteditor/main/app/view/ParagraphSettings',
|
||||
'documenteditor/main/app/view/HeaderFooterSettings',
|
||||
|
|
253
apps/documenteditor/main/app/controller/DocProtection.js
Normal file
253
apps/documenteditor/main/app/controller/DocProtection.js
Normal file
|
@ -0,0 +1,253 @@
|
|||
/*
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2010-2022
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
|
||||
* street, Riga, Latvia, EU, LV-1050.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DocProtection.js
|
||||
*
|
||||
* Created by Julia Radzhabova on 21.09.2022
|
||||
* Copyright (c) 2022 Ascensio System SIA. All rights reserved.
|
||||
*
|
||||
*/
|
||||
define([
|
||||
'core',
|
||||
'common/main/lib/view/Protection',
|
||||
'documenteditor/main/app/view/DocProtection',
|
||||
'documenteditor/main/app/view/ProtectDialog'
|
||||
], function () {
|
||||
'use strict';
|
||||
|
||||
if (!Common.enumLock)
|
||||
Common.enumLock = {};
|
||||
|
||||
var enumLock = {
|
||||
docLockView: 'lock-mode-view',
|
||||
docLockForms: 'lock-mode-forms',
|
||||
docLockReview: 'lock-mode-review',
|
||||
docLockComments: 'lock-mode-comments',
|
||||
protectLock: 'protect-lock'
|
||||
};
|
||||
for (var key in enumLock) {
|
||||
if (enumLock.hasOwnProperty(key)) {
|
||||
Common.enumLock[key] = enumLock[key];
|
||||
}
|
||||
}
|
||||
|
||||
DE.Controllers.DocProtection = Backbone.Controller.extend(_.extend({
|
||||
models : [],
|
||||
collections : [
|
||||
],
|
||||
views : [
|
||||
'DocProtection'
|
||||
],
|
||||
|
||||
initialize: function () {
|
||||
|
||||
this.addListeners({
|
||||
'DocProtection': {
|
||||
'protect:document': _.bind(this.onProtectDocClick, this)
|
||||
}
|
||||
});
|
||||
},
|
||||
onLaunch: function () {
|
||||
this._state = {};
|
||||
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
|
||||
},
|
||||
setConfig: function (data, api) {
|
||||
this.setApi(api);
|
||||
},
|
||||
setApi: function (api) {
|
||||
if (api) {
|
||||
this.api = api;
|
||||
this.api.asc_registerCallback('asc_onChangeDocumentProtection',_.bind(this.onChangeProtectDocument, this));
|
||||
this.api.asc_registerCallback('asc_onLockDocumentProtection',_.bind(this.onLockDocumentProtection, this));
|
||||
}
|
||||
},
|
||||
|
||||
setMode: function(mode) {
|
||||
this.appConfig = mode;
|
||||
|
||||
this.appConfig.isEdit && (this.view = this.createView('DocProtection', {
|
||||
mode: mode
|
||||
}));
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
createToolbarPanel: function() {
|
||||
if (this.view)
|
||||
return this.view.getPanel();
|
||||
},
|
||||
|
||||
getView: function(name) {
|
||||
return !name && this.view ?
|
||||
this.view : Backbone.Controller.prototype.getView.call(this, name);
|
||||
},
|
||||
|
||||
onProtectDocClick: function(state) {
|
||||
this.view.btnProtectDoc.toggle(!state, true);
|
||||
if (state) {
|
||||
var me = this,
|
||||
btn,
|
||||
win = new DE.Views.ProtectDialog({
|
||||
props: me.appConfig,
|
||||
handler: function(result, value, props) {
|
||||
btn = result;
|
||||
if (result == 'ok') {
|
||||
var protection = me.api.asc_getDocumentProtection() || new AscCommonWord.CDocProtect();
|
||||
protection.asc_setEditType(props);
|
||||
protection.asc_setPassword(value);
|
||||
me.api.asc_setDocumentProtection(protection);
|
||||
}
|
||||
Common.NotificationCenter.trigger('edit:complete');
|
||||
}
|
||||
}).on('close', function() {
|
||||
if (btn!=='ok')
|
||||
me.view.btnProtectDoc.toggle(false, true);
|
||||
});
|
||||
|
||||
win.show();
|
||||
} else {
|
||||
var me = this,
|
||||
btn,
|
||||
props = me.api.asc_getDocumentProtection();
|
||||
if (props && props.asc_getIsPassword()) {
|
||||
var win = new Common.Views.OpenDialog({
|
||||
title: me.view.txtWBUnlockTitle,
|
||||
closable: true,
|
||||
type: Common.Utils.importTextType.DRM,
|
||||
txtOpenFile: me.view.txtWBUnlockDescription,
|
||||
validatePwd: false,
|
||||
maxPasswordLength: 15,
|
||||
handler: function (result, value) {
|
||||
btn = result;
|
||||
if (result == 'ok') {
|
||||
if (me.api) {
|
||||
props.asc_setEditType(Asc.c_oAscEDocProtect.None);
|
||||
value && value.drmOptions && props.asc_setPassword(value.drmOptions.asc_getPassword());
|
||||
me.api.asc_setDocumentProtection(props);
|
||||
}
|
||||
Common.NotificationCenter.trigger('edit:complete');
|
||||
}
|
||||
}
|
||||
}).on('close', function() {
|
||||
if (btn!=='ok')
|
||||
me.view.btnProtectDoc.toggle(true, true);
|
||||
});
|
||||
|
||||
win.show();
|
||||
} else {
|
||||
if (!props)
|
||||
props = new AscCommonWord.CDocProtect();
|
||||
props.asc_setEditType(Asc.c_oAscEDocProtect.None);
|
||||
me.api.asc_setDocumentProtection(props);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
onAppReady: function (config) {
|
||||
if (!this.view) return;
|
||||
|
||||
var me = this;
|
||||
(new Promise(function (resolve) {
|
||||
resolve();
|
||||
})).then(function () {
|
||||
var props = me.api.asc_getDocumentProtection(),
|
||||
type = props ? props.asc_getEditType() : Asc.c_oAscEDocProtect.None,
|
||||
isProtected = (type === Asc.c_oAscEDocProtect.ReadOnly || type === Asc.c_oAscEDocProtect.Comments ||
|
||||
type === Asc.c_oAscEDocProtect.TrackedChanges || type === Asc.c_oAscEDocProtect.Forms);
|
||||
me.view.btnProtectDoc.toggle(!!isProtected, true);
|
||||
props && me.applyRestrictions(type);
|
||||
});
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function() {
|
||||
var props = this.getDocProps(true),
|
||||
isProtected = props && (props.isReadOnly || props.isCommentsOnly || props.isFormsOnly || props.isReviewOnly);
|
||||
this.view && this.view.btnProtectDoc.toggle(isProtected, true);
|
||||
|
||||
// off preview forms
|
||||
var forms = this.getApplication().getController('FormsTab');
|
||||
forms && forms.changeViewFormMode(false);
|
||||
|
||||
// off preview review changes
|
||||
var review = this.getApplication().getController('Common.Controllers.ReviewChanges');
|
||||
if (review && review.isPreviewChangesMode()) {
|
||||
var value = Common.Utils.InternalSettings.get("de-review-mode-editor") || 'markup';
|
||||
review.turnDisplayMode(value);
|
||||
review.view && review.view.turnDisplayMode(value);
|
||||
}
|
||||
|
||||
props && this.applyRestrictions(props.type);
|
||||
Common.NotificationCenter.trigger('protect:doclock', props);
|
||||
},
|
||||
|
||||
getDocProps: function(update) {
|
||||
if (!this.appConfig || !this.appConfig.isEdit && !this.appConfig.isRestrictedEdit) return;
|
||||
|
||||
if (update || !this._state.docProtection) {
|
||||
var props = this.api.asc_getDocumentProtection(),
|
||||
type = props ? props.asc_getEditType() : Asc.c_oAscEDocProtect.None;
|
||||
this._state.docProtection = {
|
||||
type: type,
|
||||
isReadOnly: type===Asc.c_oAscEDocProtect.ReadOnly,
|
||||
isCommentsOnly: type===Asc.c_oAscEDocProtect.Comments,
|
||||
isReviewOnly: type===Asc.c_oAscEDocProtect.TrackedChanges,
|
||||
isFormsOnly: type===Asc.c_oAscEDocProtect.Forms
|
||||
};
|
||||
}
|
||||
return this._state.docProtection;
|
||||
},
|
||||
|
||||
applyRestrictions: function(type) {
|
||||
if (type === Asc.c_oAscEDocProtect.ReadOnly) {
|
||||
this.api.asc_setRestriction(Asc.c_oAscRestrictionType.View);
|
||||
} else if (type === Asc.c_oAscEDocProtect.Comments) {
|
||||
this.api.asc_setRestriction(this.appConfig.canComments ? Asc.c_oAscRestrictionType.OnlyComments : Asc.c_oAscRestrictionType.View);
|
||||
} else if (type === Asc.c_oAscEDocProtect.Forms) {
|
||||
this.api.asc_setRestriction(this.appConfig.canFillForms ? Asc.c_oAscRestrictionType.OnlyForms : Asc.c_oAscRestrictionType.View);
|
||||
} else { // none or tracked changes
|
||||
if (this.appConfig.isRestrictedEdit) {
|
||||
this.appConfig.canComments && this.api.asc_setRestriction(Asc.c_oAscRestrictionType.OnlyComments);
|
||||
this.appConfig.canFillForms && this.api.asc_setRestriction(Asc.c_oAscRestrictionType.OnlyForms);
|
||||
} else
|
||||
this.api.asc_setRestriction(Asc.c_oAscRestrictionType.None);
|
||||
}
|
||||
this.view && this.view.updateProtectionTips(type);
|
||||
},
|
||||
|
||||
onLockDocumentProtection: function(state) {
|
||||
this.view && Common.Utils.lockControls(Common.enumLock.protectLock, state, {array: [this.view.btnProtectDoc]});
|
||||
}
|
||||
|
||||
}, DE.Controllers.DocProtection || {}));
|
||||
});
|
|
@ -187,6 +187,7 @@ define([
|
|||
me.onDocumentHolderResize();
|
||||
}
|
||||
});
|
||||
Common.NotificationCenter.on('protect:doclock', _.bind(me.onChangeProtectDocument, me));
|
||||
},
|
||||
|
||||
setApi: function(o) {
|
||||
|
@ -226,7 +227,6 @@ define([
|
|||
this.api.asc_registerCallback('asc_onShowContentControlsActions',_.bind(this.onShowContentControlsActions, this));
|
||||
this.api.asc_registerCallback('asc_onHideContentControlsActions',_.bind(this.onHideContentControlsActions, this));
|
||||
}
|
||||
|
||||
this.documentHolder.setApi(this.api);
|
||||
}
|
||||
|
||||
|
@ -425,6 +425,8 @@ define([
|
|||
view.menuParaTOCSettings.on('click', _.bind(me.onParaTOCSettings, me));
|
||||
view.menuTableEquation.menu.on('item:click', _.bind(me.convertEquation, me));
|
||||
view.menuParagraphEquation.menu.on('item:click', _.bind(me.convertEquation, me));
|
||||
|
||||
me.onChangeProtectDocument();
|
||||
},
|
||||
|
||||
getView: function (name) {
|
||||
|
@ -585,7 +587,9 @@ define([
|
|||
showObjectMenu: function(event, docElement, eOpts){
|
||||
var me = this;
|
||||
if (me.api){
|
||||
var obj = (me.mode.isEdit && !me._isDisabled) ? me.fillMenuProps(me.api.getSelectedElements()) : me.fillViewMenuProps(me.api.getSelectedElements());
|
||||
var docProtection = me.documentHolder._docProtection;
|
||||
var obj = (me.mode.isEdit && !(me._isDisabled || docProtection.isReadOnly || docProtection.isFormsOnly || docProtection.isCommentsOnly)) ?
|
||||
me.fillMenuProps(me.api.getSelectedElements()) : me.fillViewMenuProps(me.api.getSelectedElements());
|
||||
if (obj) me.showPopupMenu(obj.menu_to_show, obj.menu_props, event, docElement, eOpts);
|
||||
}
|
||||
},
|
||||
|
@ -612,7 +616,9 @@ define([
|
|||
var me = this,
|
||||
currentMenu = me.documentHolder.currentMenu;
|
||||
if (currentMenu && currentMenu.isVisible() && currentMenu !== me.documentHolder.hdrMenu){
|
||||
var obj = (me.mode.isEdit && !me._isDisabled) ? me.fillMenuProps(selectedElements) : me.fillViewMenuProps(selectedElements);
|
||||
var docProtection = me.documentHolder._docProtection;
|
||||
var obj = (me.mode.isEdit && !(me._isDisabled || docProtection.isReadOnly || docProtection.isFormsOnly || docProtection.isCommentsOnly)) ?
|
||||
me.fillMenuProps(selectedElements) : me.fillViewMenuProps(selectedElements);
|
||||
if (obj) {
|
||||
if (obj.menu_to_show===currentMenu) {
|
||||
currentMenu.options.initMenu(obj.menu_props);
|
||||
|
@ -824,7 +830,8 @@ define([
|
|||
onDialogAddHyperlink: function() {
|
||||
var me = this;
|
||||
var win, props, text;
|
||||
if (me.api && me.mode.isEdit && !me._isDisabled && !me.getApplication().getController('LeftMenu').leftMenu.menuFile.isVisible()){
|
||||
var docProtection = me.documentHolder._docProtection;
|
||||
if (me.api && me.mode.isEdit && !(me._isDisabled || docProtection.isReadOnly || docProtection.isFormsOnly || docProtection.isCommentsOnly) && !me.getApplication().getController('LeftMenu').leftMenu.menuFile.isVisible()){
|
||||
var handlerDlg = function(dlg, result) {
|
||||
if (result == 'ok') {
|
||||
props = dlg.getSettings();
|
||||
|
@ -1180,7 +1187,8 @@ define([
|
|||
},
|
||||
|
||||
onDoubleClickOnChart: function(chart) {
|
||||
if (this.mode.isEdit && !this._isDisabled) {
|
||||
var docProtection = this.documentHolder._docProtection;
|
||||
if (this.mode.isEdit && !(this._isDisabled || docProtection.isReadOnly || docProtection.isFormsOnly || docProtection.isCommentsOnly)) {
|
||||
var diagramEditor = this.getApplication().getController('Common.Controllers.ExternalDiagramEditor').getView('Common.Views.ExternalDiagramEditor');
|
||||
if (diagramEditor && chart) {
|
||||
diagramEditor.setEditMode(true);
|
||||
|
@ -1191,7 +1199,8 @@ define([
|
|||
},
|
||||
|
||||
onDoubleClickOnTableOleObject: function(chart) {
|
||||
if (this.mode.isEdit && !this._isDisabled) {
|
||||
var docProtection = this.documentHolder._docProtection;
|
||||
if (this.mode.isEdit && !(this._isDisabled || docProtection.isReadOnly || docProtection.isFormsOnly || docProtection.isCommentsOnly)) {
|
||||
var oleEditor = this.getApplication().getController('Common.Controllers.ExternalOleEditor').getView('Common.Views.ExternalOleEditor');
|
||||
if (oleEditor && chart) {
|
||||
oleEditor.setEditMode(true);
|
||||
|
@ -1895,7 +1904,8 @@ define([
|
|||
this.api.asc_ViewCertificate(datavalue); //certificate id
|
||||
break;
|
||||
case 2:
|
||||
Common.NotificationCenter.trigger('protect:signature', 'visible', this._isDisabled, datavalue);//guid, can edit settings for requested signature
|
||||
var docProtection = this.documentHolder._docProtection;
|
||||
Common.NotificationCenter.trigger('protect:signature', 'visible', this._isDisabled || docProtection.isReadOnly || docProtection.isFormsOnly || docProtection.isCommentsOnly, datavalue);//guid, can edit settings for requested signature
|
||||
break;
|
||||
case 3:
|
||||
var me = this;
|
||||
|
@ -2308,6 +2318,16 @@ define([
|
|||
}
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = this.getApplication().getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props && this.documentHolder) {
|
||||
this.documentHolder._docProtection = props;
|
||||
}
|
||||
},
|
||||
|
||||
editComplete: function() {
|
||||
this.documentHolder && this.documentHolder.fireEvent('editcomplete', this.documentHolder);
|
||||
}
|
||||
|
|
|
@ -76,6 +76,7 @@ define([
|
|||
// this.api.asc_registerCallback('asc_onShowContentControlsActions',_.bind(this.onShowContentControlsActions, this));
|
||||
// this.api.asc_registerCallback('asc_onHideContentControlsActions',_.bind(this.onHideContentControlsActions, this));
|
||||
}
|
||||
Common.NotificationCenter.on('protect:doclock', _.bind(this.onChangeProtectDocument, this));
|
||||
return this;
|
||||
},
|
||||
|
||||
|
@ -216,6 +217,13 @@ define([
|
|||
Common.NotificationCenter.trigger('edit:complete', this.toolbar);
|
||||
},
|
||||
|
||||
changeViewFormMode: function(state) {
|
||||
if (this.view && (state !== this.view.btnViewForm.isActive())) {
|
||||
this.view.btnViewForm.toggle(state, true);
|
||||
this.onModeClick(state);
|
||||
}
|
||||
},
|
||||
|
||||
onClearClick: function() {
|
||||
if (this.api) {
|
||||
this.api.asc_ClearAllSpecialForms();
|
||||
|
@ -377,6 +385,7 @@ define([
|
|||
me.view.btnHighlight.currentColor = clr;
|
||||
}
|
||||
config.isEdit && config.canFeatureContentControl && config.isFormCreator && me.showCreateFormTip(); // show tip only when create form in docxf
|
||||
me.onChangeProtectDocument();
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -430,6 +439,23 @@ define([
|
|||
if (tab !== 'forms') {
|
||||
this.tipSaveForm && this.tipSaveForm.close();
|
||||
}
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = this.getApplication().getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props) {
|
||||
this._state.docProtection = props;
|
||||
if (this.view) {
|
||||
var arr = this.view.getButtons();
|
||||
Common.Utils.lockControls(Common.enumLock.docLockView, props.isReadOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockForms, props.isFormsOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockReview, props.isReviewOnly, {array: arr});
|
||||
Common.Utils.lockControls(Common.enumLock.docLockComments, props.isCommentsOnly, {array: arr});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}, DE.Controllers.FormsTab || {}));
|
||||
|
|
|
@ -113,12 +113,21 @@ define([
|
|||
if ( !this.leftMenu.panelHistory.isVisible() )
|
||||
this.clickMenuFileItem(null, 'history');
|
||||
}, this));
|
||||
Common.NotificationCenter.on('protect:doclock', _.bind(this.onChangeProtectDocument, this));
|
||||
},
|
||||
|
||||
onLaunch: function() {
|
||||
this.leftMenu = this.createView('LeftMenu').render();
|
||||
this.leftMenu.btnSearchBar.on('toggle', _.bind(this.onMenuSearchBar, this));
|
||||
|
||||
this._state = {
|
||||
disableEditing: false,
|
||||
docProtection: {
|
||||
isReadOnly: false,
|
||||
isReviewOnly: false,
|
||||
isFormsOnly: false,
|
||||
isCommentsOnly: false
|
||||
}
|
||||
};
|
||||
Common.util.Shortcuts.delegateShortcuts({
|
||||
shortcuts: {
|
||||
'command+shift+s,ctrl+shift+s': _.bind(this.onShortcut, this, 'save'),
|
||||
|
@ -215,7 +224,7 @@ define([
|
|||
}
|
||||
|
||||
(this.mode.trialMode || this.mode.isBeta) && this.leftMenu.setDeveloperMode(this.mode.trialMode, this.mode.isBeta, this.mode.buildVersion);
|
||||
|
||||
this.onChangeProtectDocument();
|
||||
Common.util.Shortcuts.resumeEvents();
|
||||
return this;
|
||||
},
|
||||
|
@ -584,8 +593,14 @@ define([
|
|||
},
|
||||
|
||||
setPreviewMode: function(mode) {
|
||||
if (this.viewmode === mode) return;
|
||||
this.viewmode = mode;
|
||||
this._state.disableEditing = mode;
|
||||
this.updatePreviewMode();
|
||||
},
|
||||
|
||||
updatePreviewMode: function() {
|
||||
var viewmode = this._state.disableEditing || this._state.docProtection.isReadOnly || this._state.docProtection.isFormsOnly;
|
||||
if (this.viewmode === viewmode) return;
|
||||
this.viewmode = viewmode;
|
||||
|
||||
this.leftMenu.panelSearch && this.leftMenu.panelSearch.setSearchMode(this.viewmode ? 'no-replace' : 'search');
|
||||
},
|
||||
|
@ -890,6 +905,17 @@ define([
|
|||
return this.leftMenu && this.leftMenu.panelComments && this.leftMenu.panelComments.isVisible();
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = this.getApplication().getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props) {
|
||||
this._state.docProtection = props;
|
||||
this.updatePreviewMode();
|
||||
}
|
||||
},
|
||||
|
||||
textNoTextFound : 'Text not found',
|
||||
newDocumentTitle : 'Unnamed document',
|
||||
requestEditRightsText : 'Requesting editing rights...',
|
||||
|
|
|
@ -94,6 +94,7 @@ define([
|
|||
Common.Gateway.on('setactionlink', function (url) {
|
||||
console.log('url with actions: ' + url);
|
||||
}.bind(this));
|
||||
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
|
||||
},
|
||||
|
||||
setApi: function (api) {
|
||||
|
@ -108,6 +109,7 @@ define([
|
|||
this.api.asc_registerCallback('asc_onAscReplaceCurrentTOF',_.bind(this.onAscReplaceCurrentTOF, this));
|
||||
this.api.asc_registerCallback('asc_onAscTOFUpdate',_.bind(this.onAscTOFUpdate, this));
|
||||
}
|
||||
Common.NotificationCenter.on('protect:doclock', _.bind(this.onChangeProtectDocument, this));
|
||||
return this;
|
||||
},
|
||||
|
||||
|
@ -203,7 +205,7 @@ define([
|
|||
},
|
||||
|
||||
lockToolbar: function (causes, lock, opts) {
|
||||
Common.Utils.lockControls(causes, lock, opts, this.view.getButtons());
|
||||
this.view && Common.Utils.lockControls(causes, lock, opts, this.view.getButtons());
|
||||
},
|
||||
|
||||
onApiCanAddHyperlink: function(value) {
|
||||
|
@ -570,6 +572,32 @@ define([
|
|||
Common.NotificationCenter.trigger('edit:complete', me.toolbar);
|
||||
}
|
||||
})).show();
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = this.getApplication().getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props) {
|
||||
this._state.docProtection = props;
|
||||
this.lockToolbar(Common.enumLock.docLockView, props.isReadOnly);
|
||||
this.lockToolbar(Common.enumLock.docLockForms, props.isFormsOnly);
|
||||
this.lockToolbar(Common.enumLock.docLockReview, props.isReviewOnly);
|
||||
this.lockToolbar(Common.enumLock.docLockComments, props.isCommentsOnly);
|
||||
}
|
||||
},
|
||||
|
||||
onAppReady: function (config) {
|
||||
var me = this;
|
||||
(new Promise(function (accept, reject) {
|
||||
accept();
|
||||
})).then(function(){
|
||||
if (me.view) {
|
||||
me.view.onAppReady(config);
|
||||
me.onChangeProtectDocument();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}, DE.Controllers.Links || {}));
|
||||
|
|
|
@ -842,7 +842,7 @@ define([
|
|||
app.getController('Navigation') && app.getController('Navigation').SetDisabled(disable);
|
||||
}
|
||||
if (options.plugins) {
|
||||
app.getController('Common.Controllers.Plugins').getView('Common.Views.Plugins').disableControls(disable);
|
||||
app.getController('Common.Controllers.Plugins').getView('Common.Views.Plugins').SetDisabled(disable, options.reviewMode, options.fillFormMode);
|
||||
}
|
||||
if (options.protect) {
|
||||
app.getController('Common.Controllers.Protection').SetDisabled(disable, false);
|
||||
|
@ -1694,14 +1694,16 @@ define([
|
|||
var toolbarController = application.getController('Toolbar');
|
||||
toolbarController && toolbarController.setApi(me.api);
|
||||
|
||||
if (this.appOptions.isEdit) {
|
||||
if (this.appOptions.isRestrictedEdit)
|
||||
application.getController('DocProtection').setMode(me.appOptions).setConfig({config: me.editorConfig}, me.api);
|
||||
else if (this.appOptions.isEdit) {
|
||||
var rightmenuController = application.getController('RightMenu'),
|
||||
fontsControllers = application.getController('Common.Controllers.Fonts');
|
||||
fontsControllers && fontsControllers.setApi(me.api);
|
||||
rightmenuController && rightmenuController.setApi(me.api);
|
||||
|
||||
if (this.appOptions.canProtect)
|
||||
application.getController('Common.Controllers.Protection').setMode(me.appOptions).setConfig({config: me.editorConfig}, me.api);
|
||||
application.getController('Common.Controllers.Protection').setMode(me.appOptions).setConfig({config: me.editorConfig}, me.api);
|
||||
application.getController('DocProtection').setMode(me.appOptions).setConfig({config: me.editorConfig}, me.api);
|
||||
|
||||
var viewport = this.getApplication().getController('Viewport').getView('Viewport');
|
||||
|
||||
|
@ -1975,6 +1977,10 @@ define([
|
|||
config.msg = this.errorTextFormWrongFormat;
|
||||
break;
|
||||
|
||||
case Asc.c_oAscError.ID.PasswordIsNotCorrect:
|
||||
config.msg = this.errorPasswordIsNotCorrect;
|
||||
break;
|
||||
|
||||
default:
|
||||
config.msg = (typeof id == 'string') ? id : this.errorDefaultMessage.replace('%1', id);
|
||||
break;
|
||||
|
@ -3257,7 +3263,8 @@ define([
|
|||
errorNoTOC: 'There\'s no table of contents to update. You can insert one from the References tab.',
|
||||
textRequestMacros: 'A macro makes a request to URL. Do you want to allow the request to the %1?',
|
||||
textRememberMacros: 'Remember my choice for all macros',
|
||||
errorTextFormWrongFormat: 'The value entered does not match the format of the field.'
|
||||
errorTextFormWrongFormat: 'The value entered does not match the format of the field.',
|
||||
errorPasswordIsNotCorrect: 'The password you supplied is not correct.<br>Verify that the CAPS LOCK key is off and be sure to use the correct capitalization.'
|
||||
}
|
||||
})(), DE.Controllers.Main || {}))
|
||||
});
|
|
@ -57,7 +57,7 @@ define([
|
|||
onLaunch: function (view) {
|
||||
this.toolbar = view;
|
||||
this.editMode = true;
|
||||
|
||||
this._state = {};
|
||||
return this;
|
||||
},
|
||||
|
||||
|
@ -98,7 +98,6 @@ define([
|
|||
this.api.asc_registerCallback('asc_onImgWrapStyleChanged', this.onApiWrappingStyleChanged.bind(this));
|
||||
this.api.asc_registerCallback('asc_onCoAuthoringDisconnect', this.onApiCoAuthoringDisconnect.bind(this));
|
||||
this.api.asc_registerCallback('asc_onFocusObject', this.onApiFocusObject.bind(this));
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
|
|
|
@ -54,7 +54,14 @@ define([
|
|||
initialize: function() {
|
||||
this.editMode = true;
|
||||
this._initSettings = true;
|
||||
|
||||
this._state = {
|
||||
docProtection: {
|
||||
isReadOnly: false,
|
||||
isReviewOnly: false,
|
||||
isFormsOnly: false,
|
||||
isCommentsOnly: false
|
||||
}
|
||||
};
|
||||
this.addListeners({
|
||||
'RightMenu': {
|
||||
'rightmenuclick': this.onRightMenuClick
|
||||
|
@ -89,6 +96,7 @@ define([
|
|||
setApi: function(api) {
|
||||
this.api = api;
|
||||
this.api.asc_registerCallback('asc_onUpdateSignatures', _.bind(this.onApiUpdateSignatures, this));
|
||||
Common.NotificationCenter.on('protect:doclock', _.bind(this.onChangeProtectDocument, this));
|
||||
this.api.asc_registerCallback('asc_onCoAuthoringDisconnect',_.bind(this.onCoAuthoringDisconnect, this));
|
||||
Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this));
|
||||
},
|
||||
|
@ -156,7 +164,9 @@ define([
|
|||
this._settings[Common.Utils.documentSettingsType.Signature].locked = false;
|
||||
|
||||
var isChart = false,
|
||||
isSmartArtInternal = false;
|
||||
isSmartArtInternal = false,
|
||||
isProtected = this._state.docProtection.isReadOnly || this._state.docProtection.isFormsOnly || this._state.docProtection.isCommentsOnly;
|
||||
|
||||
var control_props = this.api.asc_IsContentControl() ? this.api.asc_GetContentControlProperties() : null,
|
||||
control_lock = false;
|
||||
for (i=0; i<SelectedObjects.length; i++)
|
||||
|
@ -185,7 +195,7 @@ define([
|
|||
if (value.get_ShapeProperties().asc_getTextArtProperties()) {
|
||||
this._settings[Common.Utils.documentSettingsType.TextArt].props = value;
|
||||
this._settings[Common.Utils.documentSettingsType.TextArt].hidden = 0;
|
||||
this._settings[Common.Utils.documentSettingsType.TextArt].locked = value.get_Locked() || content_locked;
|
||||
this._settings[Common.Utils.documentSettingsType.TextArt].locked = value.get_Locked() || content_locked || isProtected;
|
||||
}
|
||||
}
|
||||
control_lock = control_lock || value.get_Locked();
|
||||
|
@ -197,11 +207,11 @@ define([
|
|||
}
|
||||
this._settings[settingsType].props = value;
|
||||
this._settings[settingsType].hidden = 0;
|
||||
this._settings[settingsType].locked = value.get_Locked() || content_locked;
|
||||
this._settings[settingsType].locked = value.get_Locked() || content_locked || isProtected;
|
||||
if (!this._settings[Common.Utils.documentSettingsType.MailMerge].locked) // lock MailMerge-InsertField, если хотя бы один объект locked
|
||||
this._settings[Common.Utils.documentSettingsType.MailMerge].locked = value.get_Locked();
|
||||
this._settings[Common.Utils.documentSettingsType.MailMerge].locked = value.get_Locked() || isProtected;
|
||||
if (!this._settings[Common.Utils.documentSettingsType.Signature].locked) // lock Signature, если хотя бы один объект locked
|
||||
this._settings[Common.Utils.documentSettingsType.Signature].locked = value.get_Locked();
|
||||
this._settings[Common.Utils.documentSettingsType.Signature].locked = value.get_Locked() || isProtected;
|
||||
}
|
||||
|
||||
if (control_props && control_props.get_FormPr() && this.rightmenu.formSettings) {
|
||||
|
@ -210,7 +220,7 @@ define([
|
|||
spectype==Asc.c_oAscContentControlSpecificType.ComboBox || spectype==Asc.c_oAscContentControlSpecificType.DropDownList || spectype==Asc.c_oAscContentControlSpecificType.None) {
|
||||
settingsType = Common.Utils.documentSettingsType.Form;
|
||||
this._settings[settingsType].props = control_props;
|
||||
this._settings[settingsType].locked = control_lock;
|
||||
this._settings[settingsType].locked = control_lock || isProtected;
|
||||
this._settings[settingsType].hidden = 0;
|
||||
if (control_props.get_FormPr().get_Fixed())
|
||||
this._settings[Common.Utils.documentSettingsType.TextArt].hidden = 1;
|
||||
|
@ -354,7 +364,6 @@ define([
|
|||
}
|
||||
this.api.asc_registerCallback('asc_onError', _.bind(this.onError, this));
|
||||
}
|
||||
|
||||
if (this.editMode && this.api) {
|
||||
// this.rightmenu.shapeSettings.createDelayedElements();
|
||||
var selectedElements = this.api.getSelectedElements();
|
||||
|
@ -362,6 +371,7 @@ define([
|
|||
this.onFocusObject(selectedElements);
|
||||
}
|
||||
}
|
||||
this.onChangeProtectDocument();
|
||||
},
|
||||
|
||||
onDoubleClickOnObject: function(obj) {
|
||||
|
@ -466,6 +476,21 @@ define([
|
|||
case Asc.c_oAscTypeSelectElement.Header:
|
||||
return Common.Utils.documentSettingsType.Header;
|
||||
}
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = this.getApplication().getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props) {
|
||||
this._state.docProtection = props;
|
||||
if (this.api) {
|
||||
var selectedElements = this.api.getSelectedElements();
|
||||
if (selectedElements.length > 0)
|
||||
this.onFocusObject(selectedElements);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
|
@ -122,7 +122,6 @@ define([
|
|||
me.statusbar.$el.find('.hide-select-tools').removeClass('hide-select-tools');
|
||||
}
|
||||
});
|
||||
|
||||
Common.NotificationCenter.on('app:ready', me.onAppReady.bind(me));
|
||||
},
|
||||
|
||||
|
|
|
@ -433,6 +433,7 @@ define([
|
|||
this.api.asc_registerCallback('asc_onCoAuthoringDisconnect', _.bind(this.onApiCoAuthoringDisconnect, this));
|
||||
Common.NotificationCenter.on('api:disconnect', _.bind(this.onApiCoAuthoringDisconnect, this));
|
||||
}
|
||||
Common.NotificationCenter.on('protect:doclock', _.bind(this.onChangeProtectDocument, this));
|
||||
},
|
||||
|
||||
onChangeCompactView: function(view, compact) {
|
||||
|
@ -3191,6 +3192,7 @@ define([
|
|||
createDelayedElements: function() {
|
||||
this.toolbar.createDelayedElements();
|
||||
this.attachUIEvents(this.toolbar);
|
||||
this.onChangeProtectDocument();
|
||||
},
|
||||
|
||||
onAppShowed: function (config) {
|
||||
|
@ -3233,13 +3235,24 @@ define([
|
|||
me.toolbar.processPanelVisible(null, true, true);
|
||||
}
|
||||
|
||||
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();
|
||||
// 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();
|
||||
//
|
||||
// if ($panel) me.toolbar.addTab(tab, $panel, 6);
|
||||
// }
|
||||
// }
|
||||
|
||||
if ($panel) me.toolbar.addTab(tab, $panel, 6);
|
||||
}
|
||||
tab = {action: 'protect', caption: me.toolbar.textTabProtect, layoutname: 'toolbar-protect', dataHintTitle: 'T'};
|
||||
$panel = me.getApplication().getController('Common.Controllers.Protection').createToolbarPanel();
|
||||
if ($panel) {
|
||||
config.canProtect && $panel.append($('<div class="separator long"></div>'));
|
||||
var doctab = me.getApplication().getController('DocProtection');
|
||||
$panel.append(doctab.createToolbarPanel());
|
||||
me.toolbar.addTab(tab, $panel, 6);
|
||||
me.toolbar.setVisible('protect', Common.UI.LayoutManager.isElementVisible('toolbar-protect'));
|
||||
Array.prototype.push.apply(me.toolbar.lockControls, doctab.getView('DocProtection').getButtons());
|
||||
}
|
||||
|
||||
var links = me.getApplication().getController('Links');
|
||||
|
@ -3282,7 +3295,7 @@ define([
|
|||
this.btnsComment = Common.Utils.injectButtons(this.toolbar.$el.find('.slot-comment'), 'tlbtn-addcomment-', 'toolbar__icon btn-menu-comments', this.toolbar.capBtnComment,
|
||||
[ Common.enumLock.paragraphLock, Common.enumLock.headerLock, Common.enumLock.richEditLock, Common.enumLock.plainEditLock, Common.enumLock.richDelLock, Common.enumLock.plainDelLock,
|
||||
Common.enumLock.cantAddQuotedComment, Common.enumLock.imageLock, Common.enumLock.inSpecificForm, Common.enumLock.inImage, Common.enumLock.lostConnect, Common.enumLock.disableOnStart,
|
||||
Common.enumLock.previewReviewMode, Common.enumLock.viewFormMode ],
|
||||
Common.enumLock.previewReviewMode, Common.enumLock.viewFormMode, Common.enumLock.docLockView, Common.enumLock.docLockForms ],
|
||||
undefined, undefined, undefined, '1', 'bottom');
|
||||
if ( this.btnsComment.length ) {
|
||||
var _comments = DE.getController('Common.Controllers.Comments').getView();
|
||||
|
@ -3350,6 +3363,20 @@ define([
|
|||
})).show();
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = this.getApplication().getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props) {
|
||||
this._state.docProtection = props;
|
||||
this.toolbar.lockToolbar(Common.enumLock.docLockView, props.isReadOnly);
|
||||
this.toolbar.lockToolbar(Common.enumLock.docLockForms, props.isFormsOnly);
|
||||
this.toolbar.lockToolbar(Common.enumLock.docLockReview, props.isReviewOnly);
|
||||
this.toolbar.lockToolbar(Common.enumLock.docLockComments, props.isCommentsOnly);
|
||||
}
|
||||
},
|
||||
|
||||
textEmptyImgUrl : 'You need to specify image URL.',
|
||||
textWarning : 'Warning',
|
||||
textFontSizeErr : 'The entered value is incorrect.<br>Please enter a numeric value between 1 and 300',
|
||||
|
|
147
apps/documenteditor/main/app/view/DocProtection.js
Normal file
147
apps/documenteditor/main/app/view/DocProtection.js
Normal file
|
@ -0,0 +1,147 @@
|
|||
/*
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2010-2022
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
|
||||
* street, Riga, Latvia, EU, LV-1050.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* DocProtection.js
|
||||
*
|
||||
* Created by Julia Radzhabova on 21.09.2022
|
||||
* Copyright (c) 2022 Ascensio System SIA. All rights reserved.
|
||||
*
|
||||
*/
|
||||
define([
|
||||
'common/main/lib/util/utils',
|
||||
'common/main/lib/component/BaseView',
|
||||
'common/main/lib/component/Layout',
|
||||
'common/main/lib/component/Window'
|
||||
], function (template) {
|
||||
'use strict';
|
||||
|
||||
DE.Views.DocProtection = Common.UI.BaseView.extend(_.extend((function(){
|
||||
var template =
|
||||
'<div class="group">' +
|
||||
'<span id="slot-btn-protect-doc" class="btn-slot text x-huge"></span>' +
|
||||
'</div>';
|
||||
|
||||
function setEvents() {
|
||||
var me = this;
|
||||
|
||||
this.btnProtectDoc.on('click', function (btn, e) {
|
||||
me.fireEvent('protect:document', [btn.pressed]);
|
||||
});
|
||||
me._isSetEvents = true;
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
options: {},
|
||||
|
||||
initialize: function (options) {
|
||||
Common.UI.BaseView.prototype.initialize.call(this, options);
|
||||
|
||||
this.appConfig = options.mode;
|
||||
|
||||
var _set = Common.enumLock;
|
||||
this.lockedControls = [];
|
||||
this._state = {disabled: false, currentProtectHint: this.hintProtectDoc };
|
||||
|
||||
this.btnProtectDoc = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon restrict-editing',
|
||||
enableToggle: true,
|
||||
caption: this.txtProtectDoc,
|
||||
lock : [_set.lostConnect, _set.coAuth, _set.previewReviewMode, _set.viewFormMode, _set.protectLock],
|
||||
dataHint : '1',
|
||||
dataHintDirection: 'bottom',
|
||||
dataHintOffset: 'small'
|
||||
});
|
||||
this.lockedControls.push(this.btnProtectDoc);
|
||||
|
||||
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
|
||||
},
|
||||
|
||||
render: function (el) {
|
||||
return this;
|
||||
},
|
||||
|
||||
onAppReady: function (config) {
|
||||
var me = this;
|
||||
(new Promise(function (accept, reject) {
|
||||
accept();
|
||||
})).then(function(){
|
||||
me.btnProtectDoc.updateHint(me._state.currentProtectHint, true);
|
||||
setEvents.call(me);
|
||||
});
|
||||
},
|
||||
|
||||
getPanel: function () {
|
||||
this.$el = $(_.template(template)( {} ));
|
||||
|
||||
this.btnProtectDoc.render(this.$el.find('#slot-btn-protect-doc'));
|
||||
return this.$el;
|
||||
},
|
||||
|
||||
getButtons: function(type) {
|
||||
if (type===undefined)
|
||||
return this.lockedControls;
|
||||
return [];
|
||||
},
|
||||
|
||||
show: function () {
|
||||
Common.UI.BaseView.prototype.show.call(this);
|
||||
this.fireEvent('show', this);
|
||||
},
|
||||
|
||||
updateProtectionTips: function(type) {
|
||||
var str = this.txtProtectDoc;
|
||||
if (type === Asc.c_oAscEDocProtect.ReadOnly) {
|
||||
str = this.txtDocProtectedView;
|
||||
} else if (type === Asc.c_oAscEDocProtect.Comments) {
|
||||
str = this.txtDocProtectedComment;
|
||||
} else if (type === Asc.c_oAscEDocProtect.Forms) {
|
||||
str = this.txtDocProtectedForms;
|
||||
} else if (type === Asc.c_oAscEDocProtect.TrackedChanges){ // none or tracked changes
|
||||
str = this.txtDocProtectedTrack;
|
||||
}
|
||||
this.btnProtectDoc.updateHint(str, true);
|
||||
this._state.currentProtectHint = str;
|
||||
},
|
||||
txtProtectDoc: 'Protect Document',
|
||||
txtDocProtectedView: 'Document is protected.<br>You may only view this document.',
|
||||
txtDocProtectedTrack: 'Document is protected.<br>You may edit this document, but all changes will be tracked.',
|
||||
txtDocProtectedComment: 'Document is protected.<br>You may only insert comments to this document.',
|
||||
txtDocProtectedForms: 'Document is protected.<br>You may only fill in forms in this document.',
|
||||
hintProtectDoc: 'Protect document',
|
||||
txtDocUnlockDescription: 'Enter a password to unprotect document'
|
||||
}
|
||||
}()), DE.Views.DocProtection || {}));
|
||||
});
|
|
@ -76,6 +76,12 @@ define([
|
|||
this._currentParaObjDisabled = false;
|
||||
this._currLang = {};
|
||||
this._isDisabled = false;
|
||||
this._docProtection = {
|
||||
isReadOnly: false,
|
||||
isReviewOnly: false,
|
||||
isFormsOnly: false,
|
||||
isCommentsOnly: false
|
||||
};
|
||||
},
|
||||
|
||||
render: function () {
|
||||
|
@ -169,7 +175,7 @@ define([
|
|||
}
|
||||
|
||||
me.menuViewUndo.setVisible(me.mode.canCoAuthoring && me.mode.canComments && !me._isDisabled);
|
||||
me.menuViewUndo.setDisabled(!me.api.asc_getCanUndo());
|
||||
me.menuViewUndo.setDisabled(!me.api.asc_getCanUndo() || me._docProtection.isReadOnly);
|
||||
me.menuViewCopySeparator.setVisible(isInSign);
|
||||
|
||||
var isRequested = (signProps) ? signProps.asc_getRequested() : false;
|
||||
|
@ -187,15 +193,15 @@ define([
|
|||
}
|
||||
|
||||
me.menuViewAddComment.setVisible(canComment);
|
||||
me.menuViewAddComment.setDisabled(value.paraProps && value.paraProps.locked === true);
|
||||
me.menuViewAddComment.setDisabled(value.paraProps && value.paraProps.locked === true || me._docProtection.isReadOnly || me._docProtection.isFormsOnly);
|
||||
|
||||
var disabled = value.paraProps && value.paraProps.locked === true;
|
||||
var cancopy = me.api && me.api.can_CopyCut();
|
||||
me.menuViewCopy.setDisabled(!cancopy);
|
||||
me.menuViewCut.setVisible(me._fillFormMode && canEditControl);
|
||||
me.menuViewCut.setDisabled(disabled || !cancopy);
|
||||
me.menuViewCut.setDisabled(disabled || !cancopy || me._docProtection.isReadOnly || me._docProtection.isCommentsOnly);
|
||||
me.menuViewPaste.setVisible(me._fillFormMode && canEditControl);
|
||||
me.menuViewPaste.setDisabled(disabled);
|
||||
me.menuViewPaste.setDisabled(disabled || me._docProtection.isReadOnly || me._docProtection.isCommentsOnly);
|
||||
me.menuViewPrint.setVisible(me.mode.canPrint && !me._fillFormMode);
|
||||
me.menuViewPrint.setDisabled(!cancopy);
|
||||
|
||||
|
|
|
@ -169,7 +169,7 @@ define([
|
|||
this.btnTextField = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-text-field',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnText,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -180,7 +180,7 @@ define([
|
|||
this.btnComboBox = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-combo-box',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnComboBox,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -191,7 +191,7 @@ define([
|
|||
this.btnDropDown = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-dropdown',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnDropDown,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -202,7 +202,7 @@ define([
|
|||
this.btnCheckBox = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-checkbox',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnCheckBox,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -213,7 +213,7 @@ define([
|
|||
this.btnRadioBox = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-radio-button',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnRadioBox,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -224,7 +224,7 @@ define([
|
|||
this.btnImageField = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-insertimage',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.complexForm, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.complexForm, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnImage,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -235,7 +235,7 @@ define([
|
|||
this.btnEmailField = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-email',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnEmail,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -246,7 +246,7 @@ define([
|
|||
this.btnPhoneField = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-phone',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnPhone,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -257,7 +257,7 @@ define([
|
|||
this.btnComplexField = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon complex-field',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.complexForm, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.contentLock, _set.complexForm, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnComplex,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -268,7 +268,7 @@ define([
|
|||
this.btnViewForm = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-sheet-view',
|
||||
lock: [ _set.previewReviewMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [ _set.previewReviewMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnView,
|
||||
enableToggle: true,
|
||||
dataHint: '1',
|
||||
|
@ -280,7 +280,7 @@ define([
|
|||
this.btnClearFields = new Common.UI.Button({
|
||||
cls : 'btn-toolbar',
|
||||
iconCls : 'toolbar__icon btn-clearstyle',
|
||||
lock: [ _set.previewReviewMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [ _set.previewReviewMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockComments],
|
||||
caption : this.textClearFields,
|
||||
dataHint : '1',
|
||||
dataHintDirection: 'left',
|
||||
|
@ -291,7 +291,7 @@ define([
|
|||
this.btnHighlight = new Common.UI.ButtonColored({
|
||||
cls : 'btn-toolbar',
|
||||
iconCls : 'toolbar__icon btn-highlight',
|
||||
lock: [ _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [ _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption : this.textHighlight,
|
||||
menu : true,
|
||||
additionalItems: [ this.mnuNoFormsColor = new Common.UI.MenuItem({
|
||||
|
@ -316,7 +316,7 @@ define([
|
|||
this.btnPrevForm = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon previous-field',
|
||||
lock: [ _set.previewReviewMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [ _set.previewReviewMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockComments],
|
||||
caption: this.capBtnPrev,
|
||||
// disabled: this.appConfig.isEdit && this.appConfig.canFeatureContentControl && this.appConfig.canFeatureForms, // disable only for edit mode
|
||||
dataHint: '1',
|
||||
|
@ -328,7 +328,7 @@ define([
|
|||
this.btnNextForm = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon next-field',
|
||||
lock: [ _set.previewReviewMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [ _set.previewReviewMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockComments],
|
||||
caption: this.capBtnNext,
|
||||
// disabled: this.appConfig.isEdit && this.appConfig.canFeatureContentControl && this.appConfig.canFeatureForms, // disable only for edit mode,
|
||||
dataHint: '1',
|
||||
|
|
|
@ -169,13 +169,13 @@ define([
|
|||
$host = me.toolbar.$el;
|
||||
|
||||
this.btnsContents = Common.Utils.injectButtons($host.find('.btn-slot.btn-contents'), '', 'toolbar__icon btn-contents', me.capBtnInsContents,
|
||||
[_set.inHeader, _set.richEditLock, _set.plainEditLock, _set.richDelLock, _set.plainDelLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
[_set.inHeader, _set.richEditLock, _set.plainEditLock, _set.richDelLock, _set.plainDelLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
true, true, undefined, '1', 'bottom', 'small');
|
||||
this.btnsNotes = Common.Utils.injectButtons($host.find('.btn-slot.slot-notes'), '', 'toolbar__icon btn-notes', me.capBtnInsFootnote,
|
||||
[_set.paragraphLock, _set.inEquation, _set.inImage, _set.inHeader, _set.controlPlain, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
[_set.paragraphLock, _set.inEquation, _set.inImage, _set.inHeader, _set.controlPlain, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
true, true, undefined, '1', 'bottom', 'small');
|
||||
this.btnsHyperlink = Common.Utils.injectButtons($host.find('.btn-slot.slot-inshyperlink'), '', 'toolbar__icon btn-inserthyperlink', me.capBtnInsLink,
|
||||
[_set.paragraphLock, _set.headerLock, _set.hyperlinkLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
[_set.paragraphLock, _set.headerLock, _set.hyperlinkLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
undefined, undefined, undefined, '1', 'bottom', 'small');
|
||||
Array.prototype.push.apply(this.paragraphControls, this.btnsContents.concat(this.btnsNotes, this.btnsHyperlink));
|
||||
|
||||
|
@ -183,7 +183,7 @@ define([
|
|||
parentEl: $host.find('#slot-btn-contents-update'),
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-update',
|
||||
lock: [ _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [ _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnContentsUpdate,
|
||||
split: true,
|
||||
menu: true,
|
||||
|
@ -197,7 +197,7 @@ define([
|
|||
parentEl: $host.find('#slot-btn-add-text'),
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon add-text',
|
||||
lock: [ _set.cantAddTextTOF, _set.inHeader, _set.inFootnote, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [ _set.cantAddTextTOF, _set.inHeader, _set.inFootnote, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnAddText,
|
||||
menu: new Common.UI.Menu({
|
||||
items: []
|
||||
|
@ -212,7 +212,7 @@ define([
|
|||
parentEl: $host.find('#slot-btn-bookmarks'),
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-bookmarks',
|
||||
lock: [_set.paragraphLock, _set.inHeader, _set.headerLock, _set.controlPlain, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.inHeader, _set.headerLock, _set.controlPlain, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnBookmarks,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -224,7 +224,7 @@ define([
|
|||
parentEl: $host.find('#slot-btn-caption'),
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-caption',
|
||||
lock: [_set.inHeader, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.inHeader, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnCaption,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -236,7 +236,7 @@ define([
|
|||
parentEl: $host.find('#slot-btn-crossref'),
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-cross-reference',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.richEditLock, _set.plainEditLock, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.controlPlain, _set.richEditLock, _set.plainEditLock, _set.contentLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnCrossRef,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -248,7 +248,7 @@ define([
|
|||
parentEl: $host.find('#slot-btn-tof'),
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-contents',
|
||||
lock: [_set.inHeader, _set.richEditLock, _set.plainEditLock, _set.richDelLock, _set.plainDelLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.inHeader, _set.richEditLock, _set.plainEditLock, _set.richDelLock, _set.plainDelLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnTOF,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'left',
|
||||
|
@ -260,7 +260,7 @@ define([
|
|||
parentEl: $host.find('#slot-btn-tof-update'),
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-update',
|
||||
lock: [_set.paragraphLock, _set.inHeader, _set.richEditLock, _set.plainEditLock, _set.richDelLock, _set.plainDelLock, _set.cantUpdateTOF, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.inHeader, _set.richEditLock, _set.plainEditLock, _set.richDelLock, _set.plainDelLock, _set.cantUpdateTOF, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: this.capBtnContentsUpdate,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'left',
|
||||
|
@ -269,7 +269,6 @@ define([
|
|||
this.paragraphControls.push(this.btnTableFiguresUpdate);
|
||||
Common.Utils.lockControls(Common.enumLock.disableOnStart, true, {array: this.paragraphControls});
|
||||
this._state = {disabled: false};
|
||||
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
|
||||
},
|
||||
|
||||
render: function (el) {
|
||||
|
|
225
apps/documenteditor/main/app/view/ProtectDialog.js
Normal file
225
apps/documenteditor/main/app/view/ProtectDialog.js
Normal file
|
@ -0,0 +1,225 @@
|
|||
/*
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2010-2022
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
|
||||
* street, Riga, Latvia, EU, LV-1050.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* ProtectDialog.js
|
||||
*
|
||||
* Created by Julia Radzhabova on 21.09.2022
|
||||
* Copyright (c) 2022 Ascensio System SIA. All rights reserved.
|
||||
*
|
||||
*/
|
||||
|
||||
define([
|
||||
'common/main/lib/component/Window'
|
||||
], function () {
|
||||
'use strict';
|
||||
|
||||
DE.Views.ProtectDialog = Common.UI.Window.extend(_.extend({
|
||||
|
||||
initialize : function (options) {
|
||||
var t = this,
|
||||
_options = {};
|
||||
|
||||
_.extend(_options, {
|
||||
title: options.title ? options.title : this.txtTitle,
|
||||
cls: 'modal-dlg',
|
||||
width: 350,
|
||||
height: 'auto',
|
||||
buttons: options.buttons ? options.buttons : [{
|
||||
value: 'ok',
|
||||
caption: this.txtProtect
|
||||
}, 'cancel']
|
||||
}, options);
|
||||
|
||||
this.handler = options.handler;
|
||||
this.props = options.props;
|
||||
|
||||
this.template = options.template || [
|
||||
'<div class="box">',
|
||||
'<div class="input-row">',
|
||||
'<label>' + t.txtPassword + ' (' + t.txtOptional + ')' + '</label>',
|
||||
'</div>',
|
||||
'<div id="id-protect-password-txt" class="input-row" style="margin-bottom: 5px;"></div>',
|
||||
'<div class="input-row">',
|
||||
'<label>' + t.txtRepeat + '</label>',
|
||||
'</div>',
|
||||
'<div id="id-protect-repeat-txt" class="input-row" style="margin-bottom: 10px;"></div>',
|
||||
'<div class="input-row" style="margin-bottom: 5px;">',
|
||||
'<label style="font-weight: bold;letter-spacing: 0.01em;margin-bottom: 5px;">' + t.txtAllow + '</label>',
|
||||
'</div>',
|
||||
'<div id="id-protect-radio-view" style="margin-bottom: 8px;"></div>',
|
||||
'<div id="id-protect-radio-forms" style="margin-bottom: 8px;"></div>',
|
||||
'<div id="id-protect-radio-review" style="margin-bottom: 8px;"></div>',
|
||||
'<div id="id-protect-radio-comment" style="margin-bottom: 8px;"></div>',
|
||||
'<label>' + t.txtWarning + '</label>',
|
||||
'</div>'
|
||||
].join('');
|
||||
|
||||
_options.tpl = _.template(this.template)(_options);
|
||||
|
||||
Common.UI.Window.prototype.initialize.call(this, _options);
|
||||
},
|
||||
render: function () {
|
||||
Common.UI.Window.prototype.render.call(this);
|
||||
|
||||
var me = this;
|
||||
this.$window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this));
|
||||
|
||||
this.repeatPwd = new Common.UI.InputField({
|
||||
el: this.$window.find('#id-protect-repeat-txt'),
|
||||
type: 'password',
|
||||
allowBlank : true,
|
||||
style : 'width: 100%;',
|
||||
maxLength: 15,
|
||||
validateOnBlur: false,
|
||||
validation : function(value) {
|
||||
return me.txtIncorrectPwd;
|
||||
}
|
||||
});
|
||||
|
||||
this.inputPwd = new Common.UI.InputFieldBtnPassword({
|
||||
el: this.$window.find('#id-protect-password-txt'),
|
||||
type: 'password',
|
||||
allowBlank : true,
|
||||
style : 'width: 100%;',
|
||||
maxLength: 15,
|
||||
validateOnBlur: false,
|
||||
repeatInput: this.repeatPwd,
|
||||
showPwdOnClick: true
|
||||
});
|
||||
|
||||
this.rbView = new Common.UI.RadioBox({
|
||||
el: this.$window.find('#id-protect-radio-view'),
|
||||
labelText: this.textView,
|
||||
name: 'asc-radio-protect-mode',
|
||||
value: Asc.c_oAscEDocProtect.ReadOnly,
|
||||
checked: true
|
||||
});
|
||||
|
||||
this.rbForms = new Common.UI.RadioBox({
|
||||
el: this.$window.find('#id-protect-radio-forms'),
|
||||
labelText: this.textForms,
|
||||
name: 'asc-radio-protect-mode',
|
||||
value: Asc.c_oAscEDocProtect.Forms
|
||||
});
|
||||
|
||||
this.rbReview = new Common.UI.RadioBox({
|
||||
el: this.$window.find('#id-protect-radio-review'),
|
||||
labelText: this.textReview,
|
||||
name: 'asc-radio-protect-mode',
|
||||
value: Asc.c_oAscEDocProtect.TrackedChanges
|
||||
});
|
||||
|
||||
this.rbComments = new Common.UI.RadioBox({
|
||||
el: this.$window.find('#id-protect-radio-comment'),
|
||||
labelText: this.textComments,
|
||||
name: 'asc-radio-protect-mode',
|
||||
value: Asc.c_oAscEDocProtect.Comments
|
||||
});
|
||||
|
||||
this.afterRender();
|
||||
},
|
||||
|
||||
getFocusedComponents: function() {
|
||||
return [this.inputPwd, this.repeatPwd, this.rbView, this.rbForms, this.rbReview, this.rbComments];
|
||||
},
|
||||
|
||||
getDefaultFocusableComponent: function () {
|
||||
return this.inputPwd;
|
||||
},
|
||||
|
||||
afterRender: function() {
|
||||
this._setDefaults(this.props);
|
||||
},
|
||||
|
||||
onPrimary: function(event) {
|
||||
this._handleInput('ok');
|
||||
return false;
|
||||
},
|
||||
|
||||
onBtnClick: function(event) {
|
||||
this._handleInput(event.currentTarget.attributes['result'].value);
|
||||
},
|
||||
|
||||
_handleInput: function(state) {
|
||||
if (this.handler) {
|
||||
if (state == 'ok') {
|
||||
if (this.inputPwd.checkValidate() !== true) {
|
||||
this.inputPwd.focus();
|
||||
return;
|
||||
}
|
||||
if (this.inputPwd.getValue() !== this.repeatPwd.getValue()) {
|
||||
this.repeatPwd.checkValidate();
|
||||
this.repeatPwd.focus();
|
||||
return;
|
||||
}
|
||||
}
|
||||
this.handler.call(this, state, this.inputPwd.getValue(), (state == 'ok') ? this.getSettings() : undefined);
|
||||
}
|
||||
|
||||
this.close();
|
||||
},
|
||||
|
||||
_setDefaults: function (props) {
|
||||
if (props) {
|
||||
this.rbReview.setDisabled(!props.canReview);
|
||||
this.rbForms.setDisabled(!props.canFillForms);
|
||||
this.rbComments.setDisabled(!props.canComments);
|
||||
}
|
||||
},
|
||||
|
||||
getSettings: function() {
|
||||
if (this.rbView.getValue())
|
||||
return Asc.c_oAscEDocProtect.ReadOnly;
|
||||
if (this.rbForms.getValue())
|
||||
return Asc.c_oAscEDocProtect.Forms;
|
||||
if (this.rbReview.getValue())
|
||||
return Asc.c_oAscEDocProtect.TrackedChanges;
|
||||
if (this.rbComments.getValue())
|
||||
return Asc.c_oAscEDocProtect.Comments;
|
||||
},
|
||||
|
||||
txtPassword : "Password",
|
||||
txtRepeat: 'Repeat password',
|
||||
txtOptional: 'optional',
|
||||
txtIncorrectPwd: 'Confirmation password is not identical',
|
||||
txtWarning: 'Warning: If you lose or forget the password, it cannot be recovered. Please keep it in a safe place.',
|
||||
txtProtect: 'Protect',
|
||||
txtTitle: 'Protect',
|
||||
txtAllow: 'Allow only this type of editing in the document',
|
||||
textView: 'No changes (Read only)',
|
||||
textForms: 'Filling forms',
|
||||
textReview: 'Tracked changes',
|
||||
textComments: 'Comments'
|
||||
|
||||
}, DE.Views.ProtectDialog || {}));
|
||||
});
|
|
@ -160,6 +160,8 @@ define([
|
|||
me.zoomMenu.on('item:click', function(menu, item) {
|
||||
me.fireEvent('zoom:value', [item.value]);
|
||||
});
|
||||
|
||||
me.onChangeProtectDocument();
|
||||
}
|
||||
|
||||
DE.Views.Statusbar = Backbone.View.extend(_.extend({
|
||||
|
@ -176,7 +178,15 @@ define([
|
|||
_.extend(this, options);
|
||||
this.pages = new DE.Models.Pages({current:1, count:1});
|
||||
this.pages.on('change', _.bind(_updatePagesCaption,this));
|
||||
this.state = {};
|
||||
this._state = {
|
||||
docProtection: {
|
||||
isReadOnly: false,
|
||||
isReviewOnly: false,
|
||||
isFormsOnly: false,
|
||||
isCommentsOnly: false
|
||||
}
|
||||
};
|
||||
this._isDisabled = false;
|
||||
|
||||
var me = this;
|
||||
this.$layout = $(this.template({
|
||||
|
@ -333,6 +343,7 @@ define([
|
|||
this.api.asc_registerCallback('asc_onCurrentPage', _.bind(_onCurrentPage, this));
|
||||
this.api.asc_registerCallback('asc_onCoAuthoringDisconnect',_.bind(this.onApiCoAuthoringDisconnect, this));
|
||||
Common.NotificationCenter.on('api:disconnect', _.bind(this.onApiCoAuthoringDisconnect, this));
|
||||
Common.NotificationCenter.on('protect:doclock', _.bind(this.onChangeProtectDocument, this));
|
||||
}
|
||||
|
||||
return this;
|
||||
|
@ -367,7 +378,8 @@ define([
|
|||
});
|
||||
this.langMenu.resetItems(arr);
|
||||
if (this.langMenu.items.length>0) {
|
||||
this.btnLanguage.setDisabled(!!this.mode.isDisconnected);
|
||||
var isProtected = this._state.docProtection.isReadOnly || this._state.docProtection.isFormsOnly || this._state.docProtection.isCommentsOnly;
|
||||
this.btnLanguage.setDisabled(this._isDisabled || !!this.mode.isDisconnected || isProtected);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -399,8 +411,21 @@ define([
|
|||
},
|
||||
|
||||
SetDisabled: function(disable) {
|
||||
this.btnLanguage.setDisabled(disable || this.langMenu.items.length<1);
|
||||
this.btnTurnReview && this.btnTurnReview.setDisabled(disable);
|
||||
this._isDisabled = disable;
|
||||
var isProtected = this._state.docProtection.isReadOnly || this._state.docProtection.isFormsOnly || this._state.docProtection.isCommentsOnly;
|
||||
this.btnLanguage.setDisabled(disable || this.langMenu.items.length<1 || isProtected);
|
||||
this.btnTurnReview && this.btnTurnReview.setDisabled(disable || isProtected);
|
||||
},
|
||||
|
||||
onChangeProtectDocument: function(props) {
|
||||
if (!props) {
|
||||
var docprotect = DE.getController('DocProtection');
|
||||
props = docprotect ? docprotect.getDocProps() : null;
|
||||
}
|
||||
if (props) {
|
||||
this._state.docProtection = props;
|
||||
this.SetDisabled(this._isDisabled);
|
||||
}
|
||||
},
|
||||
|
||||
onApiCoAuthoringDisconnect: function() {
|
||||
|
|
|
@ -214,7 +214,7 @@ define([
|
|||
id: 'id-toolbar-btn-undo',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-undo',
|
||||
lock: [_set.undoLock, _set.previewReviewMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.undoLock, _set.previewReviewMode, _set.lostConnect, _set.disableOnStart, _set.docLockView],
|
||||
signals: ['disabled'],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -226,7 +226,7 @@ define([
|
|||
id: 'id-toolbar-btn-redo',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-redo',
|
||||
lock: [_set.redoLock, _set.previewReviewMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.redoLock, _set.previewReviewMode, _set.lostConnect, _set.disableOnStart, _set.docLockView],
|
||||
signals: ['disabled'],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -249,7 +249,7 @@ define([
|
|||
id: 'id-toolbar-btn-paste',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-paste',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockComments],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'top',
|
||||
dataHintTitle: 'V'
|
||||
|
@ -260,7 +260,7 @@ define([
|
|||
id: 'id-toolbar-btn-cut',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-cut',
|
||||
lock: [_set.copyLock, _set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.imageLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.copyLock, _set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.imageLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockComments],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'top',
|
||||
dataHintTitle: 'X'
|
||||
|
@ -281,7 +281,7 @@ define([
|
|||
id: 'id-toolbar-btn-incfont',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-incfont',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'top'
|
||||
});
|
||||
|
@ -291,7 +291,7 @@ define([
|
|||
id: 'id-toolbar-btn-decfont',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-decfont',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'top'
|
||||
});
|
||||
|
@ -301,7 +301,7 @@ define([
|
|||
id: 'id-toolbar-btn-bold',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-bold',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
enableToggle: true,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom'
|
||||
|
@ -312,7 +312,7 @@ define([
|
|||
id: 'id-toolbar-btn-italic',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-italic',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
enableToggle: true,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom'
|
||||
|
@ -323,7 +323,7 @@ define([
|
|||
id: 'id-toolbar-btn-underline',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-underline',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
enableToggle: true,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom'
|
||||
|
@ -334,7 +334,7 @@ define([
|
|||
id: 'id-toolbar-btn-strikeout',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-strikeout',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
enableToggle: true,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom'
|
||||
|
@ -345,7 +345,7 @@ define([
|
|||
id: 'id-toolbar-btn-superscript',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-superscript',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inEquation, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inEquation, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
enableToggle: true,
|
||||
toggleGroup: 'superscriptGroup',
|
||||
dataHint: '1',
|
||||
|
@ -357,7 +357,7 @@ define([
|
|||
id: 'id-toolbar-btn-subscript',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-subscript',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inEquation, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inEquation, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
enableToggle: true,
|
||||
toggleGroup: 'superscriptGroup',
|
||||
dataHint: '1',
|
||||
|
@ -370,7 +370,7 @@ define([
|
|||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-highlight',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inChart, _set.inSmartart, _set.inSmartartInternal, _set.previewReviewMode, _set.viewFormMode,
|
||||
_set.lostConnect, _set.disableOnStart],
|
||||
_set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
enableToggle: true,
|
||||
allowDepress: true,
|
||||
split: true,
|
||||
|
@ -395,7 +395,7 @@ define([
|
|||
id: 'id-toolbar-btn-fontcolor',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-fontcolor',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
split: true,
|
||||
menu: true,
|
||||
auto: true,
|
||||
|
@ -410,7 +410,7 @@ define([
|
|||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-paracolor',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inChart, _set.inSmartart, _set.inSmartartInternal, _set.previewReviewMode, _set.viewFormMode,
|
||||
_set.lostConnect, _set.disableOnStart],
|
||||
_set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
split: true,
|
||||
transparent: true,
|
||||
menu: true,
|
||||
|
@ -425,7 +425,7 @@ define([
|
|||
id: 'id-toolbar-btn-case',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-change-case',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
menu: new Common.UI.Menu({
|
||||
items: [
|
||||
{caption: this.mniSentenceCase, value: Asc.c_oAscChangeTextCaseType.SentenceCase},
|
||||
|
@ -444,7 +444,7 @@ define([
|
|||
id: 'id-toolbar-btn-align-left',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-align-left',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
enableToggle: true,
|
||||
toggleGroup: 'alignGroup',
|
||||
dataHint: '1',
|
||||
|
@ -456,7 +456,7 @@ define([
|
|||
id: 'id-toolbar-btn-align-center',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-align-center',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
enableToggle: true,
|
||||
toggleGroup: 'alignGroup',
|
||||
dataHint: '1',
|
||||
|
@ -468,7 +468,7 @@ define([
|
|||
id: 'id-toolbar-btn-align-right',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-align-right',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
enableToggle: true,
|
||||
toggleGroup: 'alignGroup',
|
||||
dataHint: '1',
|
||||
|
@ -480,7 +480,7 @@ define([
|
|||
id: 'id-toolbar-btn-align-just',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-align-just',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
enableToggle: true,
|
||||
toggleGroup: 'alignGroup',
|
||||
dataHint: '1',
|
||||
|
@ -492,7 +492,7 @@ define([
|
|||
id: 'id-toolbar-btn-decoffset',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-decoffset',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inSmartartInternal, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inSmartartInternal, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'top'
|
||||
});
|
||||
|
@ -502,7 +502,7 @@ define([
|
|||
id: 'id-toolbar-btn-incoffset',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-incoffset',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inSmartartInternal, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inSmartartInternal, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'top'
|
||||
});
|
||||
|
@ -512,7 +512,7 @@ define([
|
|||
id: 'id-toolbar-btn-linespace',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-linespace',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
menu: new Common.UI.Menu({
|
||||
style: 'min-width: 60px;',
|
||||
items: [
|
||||
|
@ -534,7 +534,7 @@ define([
|
|||
id: 'id-toolbar-btn-hidenchars',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-paragraph',
|
||||
lock: [ _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [ _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
enableToggle: true,
|
||||
split: true,
|
||||
menu: new Common.UI.Menu({
|
||||
|
@ -555,7 +555,7 @@ define([
|
|||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-setmarkers',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inChart, _set.inSmartart, _set.inSmartartInternal, _set.previewReviewMode, _set.viewFormMode,
|
||||
_set.lostConnect, _set.disableOnStart],
|
||||
_set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
enableToggle: true,
|
||||
toggleGroup: 'markersGroup',
|
||||
split: true,
|
||||
|
@ -572,7 +572,7 @@ define([
|
|||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-numbering',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inChart, _set.inSmartart, _set.inSmartartInternal, _set.previewReviewMode, _set.viewFormMode,
|
||||
_set.lostConnect, _set.disableOnStart],
|
||||
_set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
enableToggle: true,
|
||||
toggleGroup: 'markersGroup',
|
||||
split: true,
|
||||
|
@ -589,7 +589,7 @@ define([
|
|||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-multilevels',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inChart, _set.inSmartart, _set.inSmartartInternal, _set.previewReviewMode, _set.viewFormMode,
|
||||
_set.lostConnect, _set.disableOnStart],
|
||||
_set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
menu: true,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'top',
|
||||
|
@ -622,7 +622,7 @@ define([
|
|||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-inserttable',
|
||||
lock: [_set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inEquation, _set.controlPlain, _set.richDelLock, _set.plainDelLock, _set.cantAddTable, _set.previewReviewMode,
|
||||
_set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
_set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnInsTable,
|
||||
menu: new Common.UI.Menu({
|
||||
items: [
|
||||
|
@ -645,7 +645,7 @@ define([
|
|||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-insertimage',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.inEquation, _set.controlPlain, _set.richDelLock, _set.plainDelLock, _set.contentLock, _set.cantAddImagePara,
|
||||
_set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
_set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnInsImage,
|
||||
menu: new Common.UI.Menu({
|
||||
items: [
|
||||
|
@ -666,7 +666,7 @@ define([
|
|||
caption: me.capBtnInsChart,
|
||||
iconCls: 'toolbar__icon btn-insertchart',
|
||||
lock: [ _set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.controlPlain, _set.richDelLock, _set.plainDelLock, _set.contentLock,
|
||||
_set.chartLock, _set.cantAddChart, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
_set.chartLock, _set.cantAddChart, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
menu: true,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -679,7 +679,7 @@ define([
|
|||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-text',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.inEquation, _set.controlPlain, _set.contentLock, _set.inFootnote, _set.previewReviewMode, _set.viewFormMode,
|
||||
_set.lostConnect, _set.disableOnStart],
|
||||
_set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnInsTextbox,
|
||||
enableToggle: true,
|
||||
split: true,
|
||||
|
@ -695,7 +695,7 @@ define([
|
|||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-textart',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.inEquation, _set.controlPlain, _set.richDelLock, _set.plainDelLock, _set.contentLock, _set.inFootnote, _set.cantAddImagePara,
|
||||
_set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
_set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnInsTextart,
|
||||
menu: new Common.UI.Menu({
|
||||
cls: 'menu-shapes',
|
||||
|
@ -713,7 +713,7 @@ define([
|
|||
id: 'id-toolbar-btn-editheader',
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-editheader',
|
||||
lock: [ _set.previewReviewMode, _set.viewFormMode, _set.inEquation, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [ _set.previewReviewMode, _set.viewFormMode, _set.inEquation, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnInsHeader,
|
||||
menu: true,
|
||||
dataHint: '1',
|
||||
|
@ -747,7 +747,7 @@ define([
|
|||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-datetime',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.richDelLock, _set.plainDelLock, _set.noParagraphSelected, _set.previewReviewMode,
|
||||
_set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
_set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnDateTime,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -760,7 +760,7 @@ define([
|
|||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-blankpage',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inEquation, _set.richDelLock, _set.plainDelLock, _set.inHeader, _set.inFootnote, _set.inControl,
|
||||
_set.cantPageBreak, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
_set.cantPageBreak, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnBlankPage,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -773,7 +773,7 @@ define([
|
|||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-insertshape',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.inEquation, _set.controlPlain, _set.contentLock, _set.inFootnote, _set.previewReviewMode, _set.viewFormMode,
|
||||
_set.lostConnect, _set.disableOnStart],
|
||||
_set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnInsShape,
|
||||
enableToggle: true,
|
||||
menu: new Common.UI.Menu({cls: 'menu-shapes menu-insert-shape'}),
|
||||
|
@ -788,7 +788,7 @@ define([
|
|||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-insertequation',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inChart, _set.controlPlain, _set.richDelLock, _set.plainDelLock, _set.cantAddEquation,
|
||||
_set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
_set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnInsEquation,
|
||||
split: true,
|
||||
menu: new Common.UI.Menu({cls: 'menu-shapes'}),
|
||||
|
@ -803,7 +803,7 @@ define([
|
|||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-symbol',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.richDelLock, _set.plainDelLock, _set.noParagraphSelected, _set.previewReviewMode,
|
||||
_set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
_set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnInsSymbol,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
|
@ -816,7 +816,7 @@ define([
|
|||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-dropcap',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inEquation, _set.controlPlain, _set.dropcapLock, _set.previewReviewMode, _set.viewFormMode,
|
||||
_set.lostConnect, _set.disableOnStart],
|
||||
_set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnInsDropcap,
|
||||
menu: new Common.UI.Menu({
|
||||
cls: 'ppm-toolbar shifted-right',
|
||||
|
@ -860,7 +860,7 @@ define([
|
|||
id: 'tlbtn-controls',
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-controls',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnInsControls,
|
||||
menu: new Common.UI.Menu({
|
||||
cls: 'ppm-toolbar shifted-right',
|
||||
|
@ -946,7 +946,7 @@ define([
|
|||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-columns',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.controlPlain, _set.inImage, _set.docPropsLock, _set.previewReviewMode, _set.viewFormMode,
|
||||
_set.lostConnect, _set.disableOnStart],
|
||||
_set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnColumns,
|
||||
menu: new Common.UI.Menu({
|
||||
cls: 'ppm-toolbar shifted-right',
|
||||
|
@ -1005,7 +1005,7 @@ define([
|
|||
id: 'tlbtn-pageorient',
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-pageorient',
|
||||
lock: [_set.docPropsLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.docPropsLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnPageOrient,
|
||||
menu: new Common.UI.Menu({
|
||||
cls: 'ppm-toolbar',
|
||||
|
@ -1047,7 +1047,7 @@ define([
|
|||
id: 'tlbtn-pagemargins',
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-pagemargins',
|
||||
lock: [_set.docPropsLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.docPropsLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnMargins,
|
||||
menu: new Common.UI.Menu({
|
||||
items: [
|
||||
|
@ -1110,7 +1110,7 @@ define([
|
|||
id: 'tlbtn-pagesize',
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-pagesize',
|
||||
lock: [_set.docPropsLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.docPropsLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnPageSize,
|
||||
menu: new Common.UI.Menu({
|
||||
restoreHeight: true,
|
||||
|
@ -1234,7 +1234,7 @@ define([
|
|||
id: 'tlbtn-line-numbers',
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-line-numbering',
|
||||
lock: [_set.docPropsLock, _set.inImagePara, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.docPropsLock, _set.inImagePara, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnLineNumbers,
|
||||
menu: new Common.UI.Menu({
|
||||
cls: 'ppm-toolbar',
|
||||
|
@ -1287,7 +1287,7 @@ define([
|
|||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-clearstyle',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inChart, _set.inSmartart, _set.inSmartartInternal, _set.previewReviewMode, _set.viewFormMode,
|
||||
_set.lostConnect, _set.disableOnStart],
|
||||
_set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'top'
|
||||
});
|
||||
|
@ -1297,7 +1297,7 @@ define([
|
|||
id: 'id-toolbar-btn-copystyle',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-copystyle',
|
||||
lock: [ _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [ _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
enableToggle: true,
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom'
|
||||
|
@ -1308,7 +1308,7 @@ define([
|
|||
id: 'id-toolbar-btn-colorschemas',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-colorschemas',
|
||||
lock: [_set.docSchemaLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.docSchemaLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
menu: new Common.UI.Menu({
|
||||
cls: 'shifted-left',
|
||||
items: [],
|
||||
|
@ -1324,7 +1324,7 @@ define([
|
|||
id: 'id-toolbar-btn-mailrecepients',
|
||||
cls: 'btn-toolbar',
|
||||
iconCls: 'toolbar__icon btn-mailmerge',
|
||||
lock: [_set.mmergeLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.mmergeLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
dataHint: '1',
|
||||
dataHintDirection: 'bottom',
|
||||
menu: new Common.UI.Menu({
|
||||
|
@ -1340,7 +1340,7 @@ define([
|
|||
me.btnImgAlign = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-img-align',
|
||||
lock: [_set.imageLock, _set.contentLock, _set.inImageInline, _set.noObjectSelected, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.imageLock, _set.contentLock, _set.inImageInline, _set.noObjectSelected, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capImgAlign,
|
||||
menu: true,
|
||||
dataHint: '1',
|
||||
|
@ -1351,7 +1351,7 @@ define([
|
|||
me.btnImgGroup = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-img-group',
|
||||
lock: [_set.imageLock, _set.contentLock, _set.inImageInline, _set.noObjectSelected, _set.cantGroup, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.imageLock, _set.contentLock, _set.inImageInline, _set.noObjectSelected, _set.cantGroup, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capImgGroup,
|
||||
menu: true,
|
||||
dataHint: '1',
|
||||
|
@ -1361,7 +1361,7 @@ define([
|
|||
me.btnImgForward = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-img-frwd',
|
||||
lock: [_set.cantArrange, _set.lostConnect, _set.contentLock, _set.noObjectSelected, _set.inSmartartInternal, _set.previewReviewMode, _set.viewFormMode, _set.disableOnStart],
|
||||
lock: [_set.cantArrange, _set.lostConnect, _set.contentLock, _set.noObjectSelected, _set.inSmartartInternal, _set.previewReviewMode, _set.viewFormMode, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capImgForward,
|
||||
split: true,
|
||||
menu: true,
|
||||
|
@ -1372,7 +1372,7 @@ define([
|
|||
me.btnImgBackward = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-img-bkwd',
|
||||
lock: [_set.cantArrange, _set.lostConnect, _set.contentLock, _set.noObjectSelected, _set.inSmartartInternal, _set.previewReviewMode, _set.viewFormMode, _set.disableOnStart],
|
||||
lock: [_set.cantArrange, _set.lostConnect, _set.contentLock, _set.noObjectSelected, _set.inSmartartInternal, _set.previewReviewMode, _set.viewFormMode, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capImgBackward,
|
||||
split: true,
|
||||
menu: true,
|
||||
|
@ -1383,7 +1383,7 @@ define([
|
|||
me.btnImgWrapping = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-img-wrap',
|
||||
lock: [_set.cantWrap, _set.imageLock, _set.contentLock, _set.noObjectSelected, _set.lostConnect, _set.previewReviewMode, _set.viewFormMode, _set.disableOnStart],
|
||||
lock: [_set.cantWrap, _set.imageLock, _set.contentLock, _set.noObjectSelected, _set.lostConnect, _set.previewReviewMode, _set.viewFormMode, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capImgWrapping,
|
||||
menu: true,
|
||||
dataHint: '1',
|
||||
|
@ -1394,7 +1394,7 @@ define([
|
|||
me.btnWatermark = new Common.UI.Button({
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'toolbar__icon btn-watermark',
|
||||
lock: [_set.headerLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.headerLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
caption: me.capBtnWatermark,
|
||||
menu: new Common.UI.Menu({
|
||||
cls: 'ppm-toolbar',
|
||||
|
@ -1433,7 +1433,7 @@ define([
|
|||
this.cmbFontSize = new Common.UI.ComboBox({
|
||||
cls: 'input-group-nr',
|
||||
menuStyle: 'min-width: 55px;',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
hint: this.tipFontSize,
|
||||
data: [
|
||||
{value: 8, displayValue: "8"},
|
||||
|
@ -1463,7 +1463,7 @@ define([
|
|||
cls: 'input-group-nr',
|
||||
menuCls: 'scrollable-menu',
|
||||
menuStyle: 'min-width: 325px;',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
hint: this.tipFontName,
|
||||
store: new Common.Collections.Fonts(),
|
||||
dataHint: '1',
|
||||
|
@ -1482,7 +1482,7 @@ define([
|
|||
this.listStyles = new Common.UI.ComboDataView({
|
||||
cls: 'combo-styles',
|
||||
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inChart, _set.inSmartart, _set.inSmartartInternal, _set.previewReviewMode,
|
||||
_set.viewFormMode, _set.lostConnect, _set.disableOnStart],
|
||||
_set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments],
|
||||
itemWidth: itemWidth,
|
||||
itemHeight: itemHeight,
|
||||
style: 'min-width:139px;',
|
||||
|
@ -1741,7 +1741,7 @@ define([
|
|||
this.btnsPageBreak = Common.Utils.injectButtons($host.find('.btn-slot.btn-pagebreak'), '', 'toolbar__icon btn-pagebreak', this.capBtnInsPagebreak,
|
||||
[Common.enumLock.paragraphLock, Common.enumLock.headerLock, Common.enumLock.richEditLock, Common.enumLock.plainEditLock, Common.enumLock.inEquation, Common.enumLock.richDelLock,
|
||||
Common.enumLock.plainDelLock, Common.enumLock.inHeader, Common.enumLock.inFootnote, Common.enumLock.inControl, Common.enumLock.cantPageBreak, Common.enumLock.previewReviewMode,
|
||||
Common.enumLock.viewFormMode, Common.enumLock.lostConnect, Common.enumLock.disableOnStart],
|
||||
Common.enumLock.viewFormMode, Common.enumLock.lostConnect, Common.enumLock.disableOnStart, Common.enumLock.docLockView, Common.enumLock.docLockForms, Common.enumLock.docLockComments],
|
||||
true, true, undefined, '1', 'bottom', 'small');
|
||||
Array.prototype.push.apply(this.paragraphControls, this.btnsPageBreak);
|
||||
Array.prototype.push.apply(this.lockControls, this.btnsPageBreak);
|
||||
|
|
|
@ -147,6 +147,7 @@ require([
|
|||
'Main',
|
||||
'ViewTab',
|
||||
'Search',
|
||||
'DocProtection',
|
||||
'Common.Controllers.Fonts',
|
||||
'Common.Controllers.History'
|
||||
/** coauthoring begin **/
|
||||
|
@ -181,6 +182,7 @@ require([
|
|||
'documenteditor/main/app/controller/Main',
|
||||
'documenteditor/main/app/controller/ViewTab',
|
||||
'documenteditor/main/app/controller/Search',
|
||||
'documenteditor/main/app/controller/DocProtection',
|
||||
'documenteditor/main/app/view/FileMenuPanels',
|
||||
'documenteditor/main/app/view/ParagraphSettings',
|
||||
'documenteditor/main/app/view/HeaderFooterSettings',
|
||||
|
|
|
@ -932,6 +932,7 @@
|
|||
"DE.Controllers.Main.warnNoLicense": "You've reached the limit for simultaneous connections to %1 editors. This document will be opened for viewing only.<br>Contact %1 sales team for personal upgrade terms.",
|
||||
"DE.Controllers.Main.warnNoLicenseUsers": "You've reached the user limit for %1 editors. Contact %1 sales team for personal upgrade terms.",
|
||||
"DE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.",
|
||||
"DE.Controllers.Main.errorPasswordIsNotCorrect": "The password you supplied is not correct.<br>Verify that the CAPS LOCK key is off and be sure to use the correct capitalization.",
|
||||
"DE.Controllers.Navigation.txtBeginning": "Beginning of document",
|
||||
"DE.Controllers.Navigation.txtGotoBeginning": "Go to the beginning of the document",
|
||||
"DE.Controllers.Search.notcriticalErrorTitle": "Warning",
|
||||
|
@ -1447,6 +1448,13 @@
|
|||
"DE.Views.DateTimeDialog.textLang": "Language",
|
||||
"DE.Views.DateTimeDialog.textUpdate": "Update automatically",
|
||||
"DE.Views.DateTimeDialog.txtTitle": "Date & Time",
|
||||
"DE.Views.DocProtection.txtProtectDoc": "Protect Document",
|
||||
"DE.Views.DocProtection.txtDocProtectedView": "Document is protected.<br>You may only view this document.",
|
||||
"DE.Views.DocProtection.txtDocProtectedTrack": "Document is protected.<br>You may edit this document, but all changes will be tracked.",
|
||||
"DE.Views.DocProtection.txtDocProtectedComment": "Document is protected.<br>You may only insert comments to this document.",
|
||||
"DE.Views.DocProtection.txtDocProtectedForms": "Document is protected.<br>You may only fill in forms in this document.",
|
||||
"DE.Views.DocProtection.hintProtectDoc": "Protect document",
|
||||
"DE.Views.DocProtection.txtDocUnlockDescription": "Enter a password to unprotect document",
|
||||
"DE.Views.DocumentHolder.aboveText": "Above",
|
||||
"DE.Views.DocumentHolder.addCommentText": "Add Comment",
|
||||
"DE.Views.DocumentHolder.advancedDropCapText": "Drop Cap Settings",
|
||||
|
@ -2401,6 +2409,18 @@
|
|||
"DE.Views.ParagraphSettingsAdvanced.tipTop": "Set top border only",
|
||||
"DE.Views.ParagraphSettingsAdvanced.txtAutoText": "Auto",
|
||||
"DE.Views.ParagraphSettingsAdvanced.txtNoBorders": "No borders",
|
||||
"DE.Views.ProtectDialog.txtPassword": "Password",
|
||||
"DE.Views.ProtectDialog.txtRepeat": "Repeat password",
|
||||
"DE.Views.ProtectDialog.txtOptional": "optional",
|
||||
"DE.Views.ProtectDialog.txtIncorrectPwd": "Confirmation password is not identical",
|
||||
"DE.Views.ProtectDialog.txtWarning": "Warning: If you lose or forget the password, it cannot be recovered. Please keep it in a safe place.",
|
||||
"DE.Views.ProtectDialog.txtProtect": "Protect",
|
||||
"DE.Views.ProtectDialog.txtTitle": "Protect",
|
||||
"DE.Views.ProtectDialog.txtAllow": "Allow only this type of editing in the document",
|
||||
"DE.Views.ProtectDialog.textView": "No changes (Read only)",
|
||||
"DE.Views.ProtectDialog.textForms": "Filling forms",
|
||||
"DE.Views.ProtectDialog.textReview": "Tracked changes",
|
||||
"DE.Views.ProtectDialog.textComments": "Comments",
|
||||
"DE.Views.RightMenu.txtChartSettings": "Chart settings",
|
||||
"DE.Views.RightMenu.txtFormSettings": "Form Settings",
|
||||
"DE.Views.RightMenu.txtHeaderFooterSettings": "Header and footer settings",
|
||||
|
|
|
@ -805,8 +805,8 @@ define([
|
|||
this.leftMenu.btnSearchBar.setDisabled(isRangeSelection);
|
||||
this.leftMenu.btnSpellcheck.setDisabled(isRangeSelection);
|
||||
if (this.mode.canPlugins && this.leftMenu.panelPlugins) {
|
||||
Common.Utils.lockControls(Common.enumLock.selRangeEdit, isRangeSelection, {array: this.leftMenu.panelPlugins.lockedControls});
|
||||
this.leftMenu.panelPlugins.setLocked(isRangeSelection);
|
||||
this.leftMenu.panelPlugins.disableControls(isRangeSelection);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -817,8 +817,8 @@ define([
|
|||
this.leftMenu.btnSearchBar.setDisabled(isEditFormula);
|
||||
this.leftMenu.btnSpellcheck.setDisabled(isEditFormula);
|
||||
if (this.mode.canPlugins && this.leftMenu.panelPlugins) {
|
||||
Common.Utils.lockControls(Common.enumLock.editFormula, isEditFormula, {array: this.leftMenu.panelPlugins.lockedControls});
|
||||
this.leftMenu.panelPlugins.setLocked(isEditFormula);
|
||||
this.leftMenu.panelPlugins.disableControls(isEditFormula);
|
||||
}
|
||||
},
|
||||
|
||||
|
|
Loading…
Reference in a new issue