[PE] Show tooltip and disable editing when document is signed.

This commit is contained in:
Julia Radzhabova 2017-11-28 14:32:48 +03:00
parent 4a5d78f36e
commit 580903591a
10 changed files with 110 additions and 35 deletions

View file

@ -175,6 +175,7 @@ require([
'presentationeditor/main/app/view/SlideSettings', 'presentationeditor/main/app/view/SlideSettings',
'presentationeditor/main/app/view/TableSettings', 'presentationeditor/main/app/view/TableSettings',
'presentationeditor/main/app/view/TextArtSettings', 'presentationeditor/main/app/view/TextArtSettings',
'presentationeditor/main/app/view/SignatureSettings',
'common/main/lib/util/utils', 'common/main/lib/util/utils',
'common/main/lib/util/LocalStorage', 'common/main/lib/util/LocalStorage',
'common/main/lib/controller/Fonts' 'common/main/lib/controller/Fonts'

View file

@ -693,14 +693,12 @@ define([
toolbarController.onApiCoAuthoringDisconnect(); toolbarController.onApiCoAuthoringDisconnect();
me.api.UpdateInterfaceState(); me.api.UpdateInterfaceState();
if (me.appOptions.canBrandingExt) Common.NotificationCenter.trigger('document:ready', 'main');
Common.NotificationCenter.trigger('document:ready', 'main');
} }
}, 50); }, 50);
} else { } else {
documentHolderController.getView('DocumentHolder').createDelayedElementsViewer(); documentHolderController.getView('DocumentHolder').createDelayedElementsViewer();
if (me.appOptions.canBrandingExt) Common.NotificationCenter.trigger('document:ready', 'main');
Common.NotificationCenter.trigger('document:ready', 'main');
} }
if (this.appOptions.canAnalytics && false) if (this.appOptions.canAnalytics && false)

View file

@ -211,6 +211,11 @@ define([
this.setMode({isEdit: false}); this.setMode({isEdit: false});
}, },
SetDisabled: function(disabled, allowSignature) {
this.setMode({isEdit: !disabled});
this.rightmenu.SetDisabled('', disabled, true, allowSignature);
},
onInsertTable: function() { onInsertTable: function() {
this._settings[Common.Utils.documentSettingsType.Table].needShow = true; this._settings[Common.Utils.documentSettingsType.Table].needShow = true;
}, },

View file

@ -2041,7 +2041,10 @@ define([
this._state.activated = true; this._state.activated = true;
}, },
DisableToolbar: function(disable) { DisableToolbar: function(disable, viewMode) {
if (viewMode!==undefined) this.editMode = !viewMode;
disable = disable || !this.editMode;
var mask = $('.toolbar-mask'); var mask = $('.toolbar-mask');
if (disable && mask.length>0 || !disable && mask.length==0) return; if (disable && mask.length>0 || !disable && mask.length==0) return;

View file

@ -68,6 +68,7 @@ define([
me._currentSpellObj = undefined; me._currentSpellObj = undefined;
me._currLang = {}; me._currLang = {};
me._state = {}; me._state = {};
me._isDisabled = false;
/** coauthoring begin **/ /** coauthoring begin **/
var usersStore = PE.getCollection('Common.Collections.Users'); var usersStore = PE.getCollection('Common.Collections.Users');
@ -187,6 +188,9 @@ define([
var fillViewMenuProps = function(selectedElements) { var fillViewMenuProps = function(selectedElements) {
if (!selectedElements || !_.isArray(selectedElements)) return; if (!selectedElements || !_.isArray(selectedElements)) return;
if (!me.viewModeMenu)
me.createDelayedElementsViewer();
var menu_props = {}, var menu_props = {},
menu_to_show = null; menu_to_show = null;
_.each(selectedElements, function(element, index) { _.each(selectedElements, function(element, index) {
@ -210,7 +214,7 @@ define([
var showObjectMenu = function(event, docElement, eOpts){ var showObjectMenu = function(event, docElement, eOpts){
if (me.api){ if (me.api){
var obj = (me.mode.isEdit) ? fillMenuProps(me.api.getSelectedElements()) : fillViewMenuProps(me.api.getSelectedElements()); var obj = (me.mode.isEdit && !me._isDisabled) ? fillMenuProps(me.api.getSelectedElements()) : fillViewMenuProps(me.api.getSelectedElements());
if (obj) showPopupMenu(obj.menu_to_show, obj.menu_props, event, docElement, eOpts); if (obj) showPopupMenu(obj.menu_to_show, obj.menu_props, event, docElement, eOpts);
} }
}; };
@ -218,7 +222,7 @@ define([
var onContextMenu = function(event){ var onContextMenu = function(event){
_.delay(function(){ _.delay(function(){
if (event.get_Type() == Asc.c_oAscContextMenuTypes.Thumbnails) { if (event.get_Type() == Asc.c_oAscContextMenuTypes.Thumbnails) {
showPopupMenu.call(me, me.slideMenu, {isSlideSelect: event.get_IsSlideSelect(), isSlideHidden: event.get_IsSlideHidden(), fromThumbs: true}, event); !me._isDisabled && showPopupMenu.call(me, me.slideMenu, {isSlideSelect: event.get_IsSlideSelect(), isSlideHidden: event.get_IsSlideHidden(), fromThumbs: true}, event);
} else { } else {
showObjectMenu.call(me, event); showObjectMenu.call(me, event);
} }
@ -228,7 +232,7 @@ define([
var onFocusObject = function(selectedElements) { var onFocusObject = function(selectedElements) {
if (me.currentMenu && me.currentMenu.isVisible()){ if (me.currentMenu && me.currentMenu.isVisible()){
if (me.api.asc_getCurrentFocusObject() === 0 ){ // thumbnails if (me.api.asc_getCurrentFocusObject() === 0 ){ // thumbnails
if (me.slideMenu===me.currentMenu) { if (me.slideMenu===me.currentMenu && !me._isDisabled) {
var isHidden = false; var isHidden = false;
_.each(selectedElements, function(element, index) { _.each(selectedElements, function(element, index) {
if (Asc.c_oAscTypeSelectElement.Slide == element.get_ObjectType()) { if (Asc.c_oAscTypeSelectElement.Slide == element.get_ObjectType()) {
@ -240,7 +244,7 @@ define([
me.currentMenu.alignPosition(); me.currentMenu.alignPosition();
} }
} else { } else {
var obj = (me.mode.isEdit) ? fillMenuProps(selectedElements) : fillViewMenuProps(selectedElements); var obj = (me.mode.isEdit && !me._isDisabled) ? fillMenuProps(selectedElements) : fillViewMenuProps(selectedElements);
if (obj) { if (obj) {
if (obj.menu_to_show===me.currentMenu) { if (obj.menu_to_show===me.currentMenu) {
me.currentMenu.options.initMenu(obj.menu_props); me.currentMenu.options.initMenu(obj.menu_props);
@ -575,7 +579,7 @@ define([
var onDialogAddHyperlink = function() { var onDialogAddHyperlink = function() {
var win, props, text; var win, props, text;
if (me.api && me.mode.isEdit){ if (me.api && me.mode.isEdit && !me._isDisabled){
var handlerDlg = function(dlg, result) { var handlerDlg = function(dlg, result) {
if (result == 'ok') { if (result == 'ok') {
props = dlg.getSettings(); props = dlg.getSettings();
@ -668,7 +672,7 @@ define([
}; };
var onDoubleClickOnChart = function(chart) { var onDoubleClickOnChart = function(chart) {
if (me.mode.isEdit) { if (me.mode.isEdit && !me._isDisabled) {
var diagramEditor = PE.getController('Common.Controllers.ExternalDiagramEditor').getView('Common.Views.ExternalDiagramEditor'); var diagramEditor = PE.getController('Common.Controllers.ExternalDiagramEditor').getView('Common.Views.ExternalDiagramEditor');
if (diagramEditor && chart) { if (diagramEditor && chart) {
@ -1739,10 +1743,10 @@ define([
this.viewModeMenu = new Common.UI.Menu({ this.viewModeMenu = new Common.UI.Menu({
initMenu: function (value) { initMenu: function (value) {
menuViewUndo.setVisible(me.mode.canCoAuthoring && me.mode.canComments); menuViewUndo.setVisible(me.mode.canCoAuthoring && me.mode.canComments && !me._isDisabled);
menuViewUndo.setDisabled(!me.api.asc_getCanUndo()); menuViewUndo.setDisabled(!me.api.asc_getCanUndo() && !me._isDisabled);
menuViewCopySeparator.setVisible(!value.isChart && me.api.can_AddQuotedComment() !== false && me.mode.canCoAuthoring && me.mode.canComments); menuViewCopySeparator.setVisible(!value.isChart && me.api.can_AddQuotedComment() !== false && me.mode.canCoAuthoring && me.mode.canComments && !me._isDisabled);
menuViewAddComment.setVisible(!value.isChart && me.api.can_AddQuotedComment() !== false && me.mode.canCoAuthoring && me.mode.canComments); menuViewAddComment.setVisible(!value.isChart && me.api.can_AddQuotedComment() !== false && me.mode.canCoAuthoring && me.mode.canComments && !me._isDisabled);
menuViewAddComment.setDisabled(value.locked); menuViewAddComment.setDisabled(value.locked);
}, },
items: [ items: [
@ -3159,6 +3163,10 @@ define([
} }
}, },
SetDisabled: function(state) {
this._isDisabled = state;
},
insertRowAboveText : 'Row Above', insertRowAboveText : 'Row Above',
insertRowBelowText : 'Row Below', insertRowBelowText : 'Row Below',
insertColumnLeftText : 'Column Left', insertColumnLeftText : 'Column Left',

View file

@ -950,10 +950,14 @@ define([
var sign = {name: item.asc_getSigner1(), date: '18/05/2017'}; var sign = {name: item.asc_getSigner1(), date: '18/05/2017'};
(item.asc_getValid()==0) ? valid_arr.push(sign) : invalid_arr.push(sign); (item.asc_getValid()==0) ? valid_arr.push(sign) : invalid_arr.push(sign);
}); });
// valid_arr = [{name: 'Hammish Mitchell', guid: '123', date: '18/05/2017'}, {name: 'Someone Somewhere', guid: '345', date: '18/05/2017'}];
// invalid_arr = [{name: 'Mary White', guid: '111', date: '18/05/2017'}, {name: 'John Black', guid: '456', date: '18/05/2017'}];
this.cntValidSign.html(this.templateValid({signatures: valid_arr, header: this.strValid})); this.cntValidSign.html(this.templateValid({signatures: valid_arr, header: this.strValid}));
this.cntInvalidSign.html(this.templateValid({signatures: invalid_arr, header: this.strInvalid})); this.cntInvalidSign.html(this.templateValid({signatures: invalid_arr, header: this.strInvalid}));
// this.cntValidSign.html(this.templateValid({signatures: [{name: 'Hammish Mitchell', date: '18/05/2017'}, {name: 'Someone Somewhere', date: '18/05/2017'}], header: this.strValid}));
// this.cntInvalidSign.html(this.templateValid({signatures: [{name: 'Mary White', date: '18/05/2017'}, {name: 'John Black', date: '18/05/2017'}], header: this.strInvalid})); this.btnAddInvisibleSign.setDisabled(valid_arr.length>0 || invalid_arr.length>0);
}, },
strProtect: 'Protect Document', strProtect: 'Protect Document',

View file

@ -280,7 +280,7 @@ define([
return (this.minimizedMode) ? null : this.$el.find(".settings-panel.active")[0].id; return (this.minimizedMode) ? null : this.$el.find(".settings-panel.active")[0].id;
}, },
SetDisabled: function(id, disabled, all) { SetDisabled: function(id, disabled, all, allowSignature) {
if (all) { if (all) {
this.slideSettings.SetSlideDisabled(disabled, disabled, disabled); this.slideSettings.SetSlideDisabled(disabled, disabled, disabled);
this.paragraphSettings.disableControls(disabled); this.paragraphSettings.disableControls(disabled);
@ -288,6 +288,12 @@ define([
this.tableSettings.disableControls(disabled); this.tableSettings.disableControls(disabled);
this.imageSettings.disableControls(disabled); this.imageSettings.disableControls(disabled);
this.chartSettings.disableControls(disabled); this.chartSettings.disableControls(disabled);
if (!allowSignature && this.signatureSettings) {
this.signatureSettings.disableControls(disabled);
this.btnSignature.setDisabled(disabled);
}
} else { } else {
var cmp = $("#" + id); var cmp = $("#" + id);
if (disabled !== cmp.hasClass('disabled')) { if (disabled !== cmp.hasClass('disabled')) {

View file

@ -65,10 +65,9 @@ define([
initialize: function () { initialize: function () {
var me = this; var me = this;
this._initSettings = true;
this._state = { this._state = {
DisabledControls: false, DisabledControls: false,
DisabledInsertControls: false,
validSignatures: undefined, validSignatures: undefined,
invalidSignatures: undefined invalidSignatures: undefined
}; };
@ -118,17 +117,11 @@ define([
if (this.api) { if (this.api) {
this.api.asc_registerCallback('asc_onUpdateSignatures', _.bind(this.onUpdateSignatures, this)); this.api.asc_registerCallback('asc_onUpdateSignatures', _.bind(this.onUpdateSignatures, this));
} }
Common.NotificationCenter.on('document:ready', _.bind(this.onDocumentReady, this));
return this; return this;
}, },
createDelayedControls: function() {
this._initSettings = false;
},
ChangeSettings: function(props) { ChangeSettings: function(props) {
if (this._initSettings)
this.createDelayedControls();
if (!this._state.validSignatures || !this._state.invalidSignatures) { if (!this._state.validSignatures || !this._state.invalidSignatures) {
this.onUpdateSignatures(this.api.asc_getSignatures()); this.onUpdateSignatures(this.api.asc_getSignatures());
} }
@ -141,15 +134,19 @@ define([
}, },
disableControls: function(disable) { disableControls: function(disable) {
if (this._initSettings) return;
if (this._state.DisabledControls!==disable) { if (this._state.DisabledControls!==disable) {
this._state.DisabledControls = disable; this._state.DisabledControls = disable;
this.$linksView && this.$linksView.toggleClass('disabled', disable);
}
this.disableInsertControls(disable);
},
disableInsertControls: function(disable) {
if (this._state.DisabledInsertControls!==disable) {
this._state.DisabledInsertControls = disable;
_.each(this.lockedControls, function(item) { _.each(this.lockedControls, function(item) {
item.setDisabled(disable); item.setDisabled(disable);
}); });
this.$linksSign.toggleClass('disabled', disable);
this.$linksView.toggleClass('disabled', disable);
} }
}, },
@ -166,10 +163,12 @@ define([
var sign = {name: item.asc_getSigner1(), guid: item.asc_getId(), date: '18/05/2017'}; var sign = {name: item.asc_getSigner1(), guid: item.asc_getId(), date: '18/05/2017'};
(item.asc_getValid()==0) ? me._state.validSignatures.push(sign) : me._state.invalidSignatures.push(sign); (item.asc_getValid()==0) ? me._state.validSignatures.push(sign) : me._state.invalidSignatures.push(sign);
}); });
// me._state.validSignatures = [{name: 'Hammish Mitchell', guid: '123', date: '18/05/2017'}, {name: 'Someone Somewhere', guid: '345', date: '18/05/2017'}];
// me._state.invalidSignatures = [{name: 'Mary White', guid: '111', date: '18/05/2017'}, {name: 'John Black', guid: '456', date: '18/05/2017'}];
this.cntValidSign.html(this.templateValid({signatures: me._state.validSignatures, header: this.strValid})); this.cntValidSign.html(this.templateValid({signatures: me._state.validSignatures, header: this.strValid}));
this.cntInvalidSign.html(this.templateValid({signatures: me._state.invalidSignatures, header: this.strInvalid})); this.cntInvalidSign.html(this.templateValid({signatures: me._state.invalidSignatures, header: this.strInvalid}));
// this.cntValidSign.html(this.templateValid({signatures: [{name: 'Hammish Mitchell', guid: '123', date: '18/05/2017'}, {name: 'Someone Somewhere', guid: '345', date: '18/05/2017'}], header: this.strValid}));
// this.cntInvalidSign.html(this.templateValid({signatures: [{name: 'Mary White', guid: '111', date: '18/05/2017'}, {name: 'John Black', guid: '456', date: '18/05/2017'}], header: this.strInvalid}));
this.$linksView = $('.signature-view-link', this.$el); this.$linksView = $('.signature-view-link', this.$el);
var width = this.$linksView.width(); var width = this.$linksView.width();
@ -201,11 +200,60 @@ define([
this.api.asc_ViewCertificate(target.attr('data-value')); this.api.asc_ViewCertificate(target.attr('data-value'));
}, },
onDocumentReady: function() {
this.ChangeSettings();
var me = this,
hasSigned = (me._state.validSignatures.length>0 || me._state.invalidSignatures.length>0);
hasSigned && this.disableEditing(hasSigned);
if (!this._state.tip && hasSigned) {
this._state.tip = new Common.UI.SynchronizeTip({
target : PE.getController('RightMenu').getView('RightMenu').btnSignature.btnEl,
text : this.txtSignedDocument,
showLink: hasSigned,
textLink: this.txtContinueEditing,
placement: 'left'
});
this._state.tip.on({
'dontshowclick': function() {
me._state.tip.hide();
// me.api.editSingedDoc();
me.disableEditing(false);
},
'closeclick': function() {
me._state.tip.hide();
}
});
this._state.tip.show();
}
},
disableEditing: function(disable) {
disable && PE.getController('RightMenu').getView('RightMenu').clearSelection();
PE.getController('RightMenu').SetDisabled(disable, true);
PE.getController('Toolbar').DisableToolbar(disable, disable);
PE.getController('Statusbar').getView('Statusbar').SetDisabled(disable);
PE.getController('Common.Controllers.ReviewChanges').SetDisabled(disable);
PE.getController('DocumentHolder').getView('DocumentHolder').SetDisabled(disable);
var leftMenu = PE.getController('LeftMenu').leftMenu;
leftMenu.btnComments.setDisabled(disable);
var comments = PE.getController('Common.Controllers.Comments');
if (comments)
comments.setPreviewMode(disable);
this.disableInsertControls(disable);
},
strSignature: 'Signature', strSignature: 'Signature',
strInvisibleSign: 'Add invisible digital signature', strInvisibleSign: 'Add invisible digital signature',
strValid: 'Valid signatures', strValid: 'Valid signatures',
strInvalid: 'Invalid signatures', strInvalid: 'Invalid signatures',
strView: 'View' strView: 'View',
txtSignedDocument: 'This document has been signed. It should not be edited.',
txtContinueEditing: 'Edit anyway'
}, PE.Views.SignatureSettings || {})); }, PE.Views.SignatureSettings || {}));
}); });

View file

@ -369,6 +369,7 @@ define([
var langs = this.langMenu.items.length>0; var langs = this.langMenu.items.length>0;
this.btnLanguage.setDisabled(disable || !langs || this._state.no_paragraph); this.btnLanguage.setDisabled(disable || !langs || this._state.no_paragraph);
this.btnDocLanguage.setDisabled(disable || !langs); this.btnDocLanguage.setDisabled(disable || !langs);
this.mode.isEdit = !disable;
}, },
onApiFocusObject: function(selectedObjects) { onApiFocusObject: function(selectedObjects) {

View file

@ -166,6 +166,7 @@ require([
'presentationeditor/main/app/view/SlideSettings', 'presentationeditor/main/app/view/SlideSettings',
'presentationeditor/main/app/view/TableSettings', 'presentationeditor/main/app/view/TableSettings',
'presentationeditor/main/app/view/TextArtSettings', 'presentationeditor/main/app/view/TextArtSettings',
'presentationeditor/main/app/view/SignatureSettings',
'common/main/lib/util/utils', 'common/main/lib/util/utils',
'common/main/lib/util/LocalStorage', 'common/main/lib/util/LocalStorage',
'common/main/lib/controller/Fonts' 'common/main/lib/controller/Fonts'