Lock edit plugins when document is protected
This commit is contained in:
parent
6f1ee48c6d
commit
041557e6a3
|
@ -105,6 +105,7 @@ define([
|
||||||
Common.NotificationCenter.on('app:face', this.onAppShowed.bind(this));
|
Common.NotificationCenter.on('app:face', this.onAppShowed.bind(this));
|
||||||
Common.NotificationCenter.on('uitheme:changed', this.updatePluginsButtons.bind(this));
|
Common.NotificationCenter.on('uitheme:changed', this.updatePluginsButtons.bind(this));
|
||||||
Common.NotificationCenter.on('window:resize', 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) {
|
loadConfig: function(data) {
|
||||||
|
@ -151,6 +152,16 @@ define([
|
||||||
onAppShowed: function (config) {
|
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) {
|
setApi: function(api) {
|
||||||
this.api = api;
|
this.api = api;
|
||||||
|
|
||||||
|
@ -225,6 +236,10 @@ define([
|
||||||
var _group = $('> .group', me.$toolbarPanelPlugins);
|
var _group = $('> .group', me.$toolbarPanelPlugins);
|
||||||
var $slot = $('<span class="btn-slot text x-huge"></span>').appendTo(_group);
|
var $slot = $('<span class="btn-slot text x-huge"></span>').appendTo(_group);
|
||||||
btn.render($slot);
|
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;
|
rank = new_rank;
|
||||||
});
|
});
|
||||||
_group.appendTo(me.$toolbarPanelPlugins);
|
_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 {
|
} else {
|
||||||
console.error('toolbar panel isnot created');
|
console.error('toolbar panel isnot created');
|
||||||
}
|
}
|
||||||
|
@ -518,10 +537,13 @@ define([
|
||||||
}
|
}
|
||||||
|
|
||||||
var variationsArr = [],
|
var variationsArr = [],
|
||||||
pluginVisible = false;
|
pluginVisible = false,
|
||||||
|
isDisplayedInViewer = false;
|
||||||
item.variations.forEach(function(itemVar){
|
item.variations.forEach(function(itemVar){
|
||||||
var visible = (isEdit || itemVar.isViewer && (itemVar.isDisplayedInViewer!==false)) && _.contains(itemVar.EditorsSupport, editor) && !itemVar.isSystem;
|
var visible = (isEdit || itemVar.isViewer && (itemVar.isDisplayedInViewer!==false)) && _.contains(itemVar.EditorsSupport, editor) && !itemVar.isSystem;
|
||||||
if ( visible ) pluginVisible = true;
|
if ( visible ) pluginVisible = true;
|
||||||
|
if (itemVar.isViewer && (itemVar.isDisplayedInViewer!==false))
|
||||||
|
isDisplayedInViewer = true;
|
||||||
|
|
||||||
if (item.isUICustomizer ) {
|
if (item.isUICustomizer ) {
|
||||||
visible && arrUI.push({
|
visible && arrUI.push({
|
||||||
|
@ -571,7 +593,8 @@ define([
|
||||||
groupName: (item.group) ? item.group.name : '',
|
groupName: (item.group) ? item.group.name : '',
|
||||||
groupRank: (item.group) ? item.group.rank : 0,
|
groupRank: (item.group) ? item.group.rank : 0,
|
||||||
minVersion: item.minVersion,
|
minVersion: item.minVersion,
|
||||||
original: item
|
original: item,
|
||||||
|
isDisplayedInViewer: isDisplayedInViewer
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -720,6 +743,19 @@ define([
|
||||||
}, funcComplete);
|
}, funcComplete);
|
||||||
} else
|
} else
|
||||||
funcComplete();
|
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 || {}));
|
}, Common.Controllers.Plugins || {}));
|
||||||
});
|
});
|
||||||
|
|
|
@ -74,14 +74,16 @@ define([
|
||||||
_.extend(this, options);
|
_.extend(this, options);
|
||||||
this._locked = false;
|
this._locked = false;
|
||||||
this._state = {
|
this._state = {
|
||||||
DisabledControls: false
|
DisabledControls: false,
|
||||||
|
docProtection: {
|
||||||
|
isReadOnly: false,
|
||||||
|
isReviewOnly: false,
|
||||||
|
isFormsOnly: false,
|
||||||
|
isCommentsOnly: false
|
||||||
|
}
|
||||||
};
|
};
|
||||||
this.lockedControls = [];
|
this.lockedControls = [];
|
||||||
Common.UI.BaseView.prototype.initialize.call(this, arguments);
|
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) {
|
render: function(el) {
|
||||||
|
@ -153,6 +155,7 @@ define([
|
||||||
if ( !this.storePlugins.isEmpty() ) {
|
if ( !this.storePlugins.isEmpty() ) {
|
||||||
var me = this;
|
var me = this;
|
||||||
var _group = $('<div class="group"></div>');
|
var _group = $('<div class="group"></div>');
|
||||||
|
var _set = Common.enumLock;
|
||||||
this.storePlugins.each(function (model) {
|
this.storePlugins.each(function (model) {
|
||||||
if (model.get('visible')) {
|
if (model.get('visible')) {
|
||||||
var modes = model.get('variations'),
|
var modes = model.get('variations'),
|
||||||
|
@ -167,6 +170,7 @@ define([
|
||||||
split: modes && modes.length > 1,
|
split: modes && modes.length > 1,
|
||||||
value: guid,
|
value: guid,
|
||||||
hint: model.get('name'),
|
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',
|
dataHint: '1',
|
||||||
dataHintDirection: 'bottom',
|
dataHintDirection: 'bottom',
|
||||||
dataHintOffset: 'small'
|
dataHintOffset: 'small'
|
||||||
|
@ -179,6 +183,10 @@ define([
|
||||||
me.lockedControls.push(btn);
|
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);
|
parent.html(_group);
|
||||||
$('<div class="separator long"></div>').prependTo(parent);
|
$('<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) {
|
openInsideMode: function(name, url, frameId) {
|
||||||
if (!this.pluginsPanel) return false;
|
if (!this.pluginsPanel) return false;
|
||||||
|
|
||||||
|
@ -289,9 +307,6 @@ define([
|
||||||
this.loadMask.hide();
|
this.loadMask.hide();
|
||||||
},
|
},
|
||||||
|
|
||||||
_onAppReady: function (mode) {
|
|
||||||
},
|
|
||||||
|
|
||||||
parseIcons: function(icons) {
|
parseIcons: function(icons) {
|
||||||
if (icons.length && typeof icons[0] !== 'string') {
|
if (icons.length && typeof icons[0] !== 'string') {
|
||||||
var theme = Common.UI.Themes.currentThemeId().toLowerCase(),
|
var theme = Common.UI.Themes.currentThemeId().toLowerCase(),
|
||||||
|
@ -389,6 +404,7 @@ define([
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var _set = Common.enumLock;
|
||||||
var btn = new Common.UI.Button({
|
var btn = new Common.UI.Button({
|
||||||
cls: 'btn-toolbar x-huge icon-top',
|
cls: 'btn-toolbar x-huge icon-top',
|
||||||
iconImg: icon_url,
|
iconImg: icon_url,
|
||||||
|
@ -397,6 +413,7 @@ define([
|
||||||
split: _menu_items.length > 1,
|
split: _menu_items.length > 1,
|
||||||
value: guid,
|
value: guid,
|
||||||
hint: model.get('name'),
|
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',
|
dataHint: '1',
|
||||||
dataHintDirection: 'bottom',
|
dataHintDirection: 'bottom',
|
||||||
dataHintOffset: 'small'
|
dataHintOffset: 'small'
|
||||||
|
|
|
@ -842,7 +842,7 @@ define([
|
||||||
app.getController('Navigation') && app.getController('Navigation').SetDisabled(disable);
|
app.getController('Navigation') && app.getController('Navigation').SetDisabled(disable);
|
||||||
}
|
}
|
||||||
if (options.plugins) {
|
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) {
|
if (options.protect) {
|
||||||
app.getController('Common.Controllers.Protection').SetDisabled(disable, false);
|
app.getController('Common.Controllers.Protection').SetDisabled(disable, false);
|
||||||
|
|
|
@ -805,8 +805,8 @@ define([
|
||||||
this.leftMenu.btnSearchBar.setDisabled(isRangeSelection);
|
this.leftMenu.btnSearchBar.setDisabled(isRangeSelection);
|
||||||
this.leftMenu.btnSpellcheck.setDisabled(isRangeSelection);
|
this.leftMenu.btnSpellcheck.setDisabled(isRangeSelection);
|
||||||
if (this.mode.canPlugins && this.leftMenu.panelPlugins) {
|
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.setLocked(isRangeSelection);
|
||||||
this.leftMenu.panelPlugins.disableControls(isRangeSelection);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -817,8 +817,8 @@ define([
|
||||||
this.leftMenu.btnSearchBar.setDisabled(isEditFormula);
|
this.leftMenu.btnSearchBar.setDisabled(isEditFormula);
|
||||||
this.leftMenu.btnSpellcheck.setDisabled(isEditFormula);
|
this.leftMenu.btnSpellcheck.setDisabled(isEditFormula);
|
||||||
if (this.mode.canPlugins && this.leftMenu.panelPlugins) {
|
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.setLocked(isEditFormula);
|
||||||
this.leftMenu.panelPlugins.disableControls(isEditFormula);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue