diff --git a/apps/common/main/lib/controller/Protection.js b/apps/common/main/lib/controller/Protection.js index 351ba98a2..af4c2f733 100644 --- a/apps/common/main/lib/controller/Protection.js +++ b/apps/common/main/lib/controller/Protection.js @@ -110,9 +110,7 @@ define([ }, onDocumentPassword: function(hasPassword) { - if (!this.view) return; - this.view.btnAddPwd.setVisible(!hasPassword); - this.view.btnPwd.setVisible(hasPassword); + this.view && this.view.onDocumentPassword(hasPassword); }, SetDisabled: function(state) { @@ -147,6 +145,7 @@ define([ onAppReady: function (config) { var me = this; // this.onApiUpdateSignatures([{name: 'Hammish Mitchell', guid: '123', date: '18/05/2017'}, {name: 'Someone Somewhere', guid: '345', date: '18/05/2017'}]); + // this.onDocumentPassword(true); }, addPassword: function() { diff --git a/apps/common/main/lib/view/Protection.js b/apps/common/main/lib/view/Protection.js index a3cd222da..44ed9ab15 100644 --- a/apps/common/main/lib/view/Protection.js +++ b/apps/common/main/lib/view/Protection.js @@ -66,8 +66,16 @@ define([ var me = this; if ( me.appConfig.isDesktopApp && me.appConfig.isOffline ) { - this.btnAddPwd.on('click', function (e) { - me.fireEvent('protect:password', [me.btnAddPwd, 'add']); + this.btnsAddPwd.concat(this.btnsChangePwd).forEach(function(button) { + button.on('click', function (b, e) { + me.fireEvent('protect:password', [b, 'add']); + }); + }); + + this.btnsDelPwd.forEach(function(button) { + button.on('click', function (b, e) { + me.fireEvent('protect:password', [b, 'delete']); + }); }); this.btnPwd.menu.on('item:click', function (menu, item, e) { @@ -97,18 +105,27 @@ define([ this.appConfig = options.mode; + this.btnsInvisibleSignature = []; + this.btnsAddPwd = []; + this.btnsDelPwd = []; + this.btnsChangePwd = []; + + this._state = {disabled: false, hasPassword: false}; + if ( this.appConfig.isDesktopApp && this.appConfig.isOffline ) { this.btnAddPwd = new Common.UI.Button({ cls: 'btn-toolbar x-huge icon-top', iconCls: 'review-prev', caption: this.txtEncrypt }); + this.btnsAddPwd.push(this.btnAddPwd); this.btnPwd = new Common.UI.Button({ cls: 'btn-toolbar x-huge icon-top', iconCls: 'btn-ic-reviewview', caption: this.txtEncrypt, - menu: true + menu: true, + visible: false }); if (this.appConfig.canProtect) @@ -120,8 +137,6 @@ define([ }); } - this.btnsInvisibleSignature = []; - var filter = Common.localStorage.getKeysFilter(); this.appPrefix = (filter && filter.length) ? filter.split(',')[0] : ''; @@ -189,7 +204,6 @@ define([ if ( this.appConfig.isDesktopApp && this.appConfig.isOffline ) { this.btnAddPwd.render(this.$el.find('#slot-btn-add-password')); this.btnPwd.render(this.$el.find('#slot-btn-change-password')); - this.btnPwd.setVisible(false); this.btnSignature && this.btnSignature.render(this.$el.find('#slot-btn-signature')); } return this.$el; @@ -205,21 +219,76 @@ define([ var button = new Common.UI.Button({ cls: 'btn-text-default', style: 'width: 100%;', - caption: this.txtInvisibleSignature + caption: this.txtInvisibleSignature, + disabled: this._state.disabled }); this.btnsInvisibleSignature.push(button); + return button; + } else if ( type == 'add-password' ) { + var button = new Common.UI.Button({ + cls: 'btn-text-default', + style: 'width: 100%;', + caption: this.txtAddPwd, + disabled: this._state.disabled, + visible: !this._state.hasPassword + }); + this.btnsAddPwd.push(button); + + return button; + } else if ( type == 'del-password' ) { + var button = new Common.UI.Button({ + cls: 'btn-text-default', + style: 'width: 100%;', + caption: this.txtDeletePwd, + disabled: this._state.disabled, + visible: this._state.hasPassword + }); + this.btnsDelPwd.push(button); + + return button; + } else if ( type == 'change-password' ) { + var button = new Common.UI.Button({ + cls: 'btn-text-default', + style: 'width: 100%;', + caption: this.txtChangePwd, + disabled: this._state.disabled, + visible: this._state.hasPassword + }); + this.btnsChangePwd.push(button); + return button; } }, - SetDisabled: function (state, langs) { + SetDisabled: function (state) { + this._state.disabled = state; this.btnsInvisibleSignature && this.btnsInvisibleSignature.forEach(function(button) { if ( button ) { button.setDisabled(state); } }, this); this.btnSignature && this.btnSignature.setDisabled(state); + this.btnsAddPwd.concat(this.btnsDelPwd, this.btnsChangePwd).forEach(function(button) { + if ( button ) { + button.setDisabled(state); + } + }, this); + }, + + onDocumentPassword: function (hasPassword) { + this._state.hasPassword = hasPassword; + this.btnsAddPwd && this.btnsAddPwd.forEach(function(button) { + if ( button ) { + button.setVisible(!hasPassword); + } + }, this); + this.btnsDelPwd.concat(this.btnsChangePwd).forEach(function(button) { + if ( button ) { + button.setVisible(hasPassword); + } + }, this); + this.btnPwd.setVisible(hasPassword); }, txtEncrypt: 'Encrypt', @@ -229,6 +298,7 @@ define([ hintSignature: 'Add digital signature or signature line', txtChangePwd: 'Change password', txtDeletePwd: 'Delete password', + txtAddPwd: 'Add password', txtInvisibleSignature: 'Add digital signature', txtSignatureLine: 'Signature line' } diff --git a/apps/documenteditor/main/app/view/FileMenuPanels.js b/apps/documenteditor/main/app/view/FileMenuPanels.js index bc230f4ee..233dc2c18 100644 --- a/apps/documenteditor/main/app/view/FileMenuPanels.js +++ b/apps/documenteditor/main/app/view/FileMenuPanels.js @@ -1101,9 +1101,22 @@ define([ template: _.template([ '', + '
', + '', + '
', + '', + '', + '', + '', + '', + '', + '', + '', + '
<%= scope.txtEncrypted %>
', + '
', '
', '', - '
', + '
', '
', '
' ].join('')), @@ -1131,6 +1144,21 @@ define([ $(this.el).html(this.template({scope: this})); var protection = DE.getController('Common.Controllers.Protection').getView(); + + this.btnAddPwd = protection.getButton('add-password'); + this.btnAddPwd.render(this.$el.find('#fms-btn-add-pwd')); + this.btnAddPwd.on('click', _.bind(this.closeMenu, this)); + + this.btnChangePwd = protection.getButton('change-password'); + this.btnChangePwd.render(this.$el.find('#fms-btn-change-pwd')); + this.btnChangePwd.on('click', _.bind(this.closeMenu, this)); + + this.btnDeletePwd = protection.getButton('del-password'); + this.btnDeletePwd.render(this.$el.find('#fms-btn-delete-pwd')); + this.btnDeletePwd.on('click', _.bind(this.closeMenu, this)); + + this.cntPassword = $('#id-fms-view-pwd'); + this.btnAddInvisibleSign = protection.getButton('signature'); this.btnAddInvisibleSign.render(this.$el.find('#fms-btn-invisible-sign')); this.btnAddInvisibleSign.on('click', _.bind(this.closeMenu, this)); @@ -1153,6 +1181,7 @@ define([ show: function() { Common.UI.BaseView.prototype.show.call(this,arguments); this.updateSignatures(); + this.updateEncrypt(); }, setMode: function(mode) { @@ -1180,7 +1209,7 @@ define([ primary: 'ok', callback: function(btn) { if (btn == 'ok') { - // me.api.editSignedDoc(); + me.api.asc_RemoveAllSignatures(); } } }); @@ -1217,6 +1246,10 @@ define([ this.cntSignatureView.html(this.templateSignature({tipText: tipText, hasSigned: (hasValid || hasInvalid), hasRequested: hasRequested})); }, + updateEncrypt: function() { + this.cntPassword.toggleClass('hidden', this.btnAddPwd.isVisible()); + }, + strProtect: 'Protect Document', strSignature: 'Signature', txtView: 'View signatures', @@ -1225,7 +1258,9 @@ define([ txtSignedInvalid: 'Some of the digital signatures in document are invalid or could not be verified. The document is protected from editing.', txtRequestedSignatures: 'This document needs to be signed.', notcriticalErrorTitle: 'Warning', - txtEditWarning: 'Editing will remove the signatures from the document.
Are you sure you want to continue?' + txtEditWarning: 'Editing will remove the signatures from the document.
Are you sure you want to continue?', + strEncrypt: 'Password', + txtEncrypted: 'This document has been protected by password' }, DE.Views.FileMenuPanels.ProtectDoc || {})); diff --git a/apps/documenteditor/main/locale/en.json b/apps/documenteditor/main/locale/en.json index a6ac6dcac..740e053c1 100644 --- a/apps/documenteditor/main/locale/en.json +++ b/apps/documenteditor/main/locale/en.json @@ -196,6 +196,7 @@ "Common.Views.Plugins.textLoading": "Loading", "Common.Views.Plugins.textStart": "Start", "Common.Views.Plugins.textStop": "Stop", + "Common.Views.Protection.txtAddPwd": "Add password", "Common.Views.Protection.txtEncrypt": "Encrypt", "Common.Views.Protection.txtSignature": "Signature", "Common.Views.Protection.hintAddPwd": "Encrypt with password", @@ -1051,6 +1052,17 @@ "DE.Views.FileMenuPanels.DocumentInfo.txtWords": "Words", "DE.Views.FileMenuPanels.DocumentRights.txtBtnAccessRights": "Change access rights", "DE.Views.FileMenuPanels.DocumentRights.txtRights": "Persons who have rights", + "DE.Views.FileMenuPanels.ProtectDoc.strProtect": "Protect Document", + "DE.Views.FileMenuPanels.ProtectDoc.strSignature": "Signature", + "DE.Views.FileMenuPanels.ProtectDoc.txtView": "View signatures", + "DE.Views.FileMenuPanels.ProtectDoc.txtEdit": "Edit document", + "DE.Views.FileMenuPanels.ProtectDoc.txtSigned": "Valid signatures has been added to the document. The document is protected from editing.", + "DE.Views.FileMenuPanels.ProtectDoc.txtSignedInvalid": "Some of the digital signatures in document are invalid or could not be verified. The document is protected from editing.", + "DE.Views.FileMenuPanels.ProtectDoc.txtRequestedSignatures": "This document needs to be signed.", + "DE.Views.FileMenuPanels.ProtectDoc.notcriticalErrorTitle": "Warning", + "DE.Views.FileMenuPanels.ProtectDoc.txtEditWarning": "Editing will remove the signatures from the document.
Are you sure you want to continue?", + "DE.Views.FileMenuPanels.ProtectDoc.strEncrypt": "Password", + "DE.Views.FileMenuPanels.ProtectDoc.txtEncrypted": "This document has been protected by password", "DE.Views.FileMenuPanels.Settings.okButtonText": "Apply", "DE.Views.FileMenuPanels.Settings.strAlignGuides": "Turn on alignment guides", "DE.Views.FileMenuPanels.Settings.strAutoRecover": "Turn on autorecover", @@ -1097,15 +1109,6 @@ "DE.Views.HeaderFooterSettings.textBottomCenter": "Bottom center", "DE.Views.HeaderFooterSettings.textBottomLeft": "Bottom left", "DE.Views.HeaderFooterSettings.textBottomRight": "Bottom right", - "DE.Views.FileMenuPanels.ProtectDoc.strProtect": "Protect Document", - "DE.Views.FileMenuPanels.ProtectDoc.strSignature": "Signature", - "DE.Views.FileMenuPanels.ProtectDoc.txtView": "View signatures", - "DE.Views.FileMenuPanels.ProtectDoc.txtEdit": "Edit document", - "DE.Views.FileMenuPanels.ProtectDoc.txtSigned": "Valid signatures has been added to the document. The document is protected from editing.", - "DE.Views.FileMenuPanels.ProtectDoc.txtSignedInvalid": "Some of the digital signatures in document are invalid or could not be verified. The document is protected from editing.", - "DE.Views.FileMenuPanels.ProtectDoc.txtRequestedSignatures": "This document needs to be signed.", - "DE.Views.FileMenuPanels.ProtectDoc.notcriticalErrorTitle": "Warning", - "DE.Views.FileMenuPanels.ProtectDoc.txtEditWarning": "Editing will remove the signatures from the document.
Are you sure you want to continue?", "DE.Views.HeaderFooterSettings.textDiffFirst": "Different first page", "DE.Views.HeaderFooterSettings.textDiffOdd": "Different odd and even pages", "DE.Views.HeaderFooterSettings.textHeaderFromBottom": "Footer from Bottom",