diff --git a/apps/common/main/lib/component/InputField.js b/apps/common/main/lib/component/InputField.js index 41f09c5933..f8155b6d6d 100644 --- a/apps/common/main/lib/component/InputField.js +++ b/apps/common/main/lib/component/InputField.js @@ -394,7 +394,6 @@ define([ title : errors.join('\n'), placement : 'cursor' }); - errorBadge.tooltip('show'); if (modalParents.length > 0) { errorBadge.data('bs.tooltip').tip().css('z-index', parseInt(modalParents.css('z-index')) + 10); diff --git a/apps/common/main/lib/view/TextInputDialog.js b/apps/common/main/lib/view/TextInputDialog.js index c818c0cd9d..2698e41809 100644 --- a/apps/common/main/lib/view/TextInputDialog.js +++ b/apps/common/main/lib/view/TextInputDialog.js @@ -138,7 +138,6 @@ define([], function () { 'use strict'; if (state == 'ok') { if (this.inputLabel.checkValidate() !== true) { this.inputLabel.cmpEl.find('input').focus(); - this.inputLabel.showError(this.inputLabel.checkValidate()) return; } } diff --git a/apps/pdfeditor/main/app/controller/RedactTab.js b/apps/pdfeditor/main/app/controller/RedactTab.js index 7778d2fd77..a0a976ed21 100644 --- a/apps/pdfeditor/main/app/controller/RedactTab.js +++ b/apps/pdfeditor/main/app/controller/RedactTab.js @@ -40,16 +40,12 @@ define([ 'core', 'pdfeditor/main/app/view/RedactTab', - 'pdfeditor/main/app/collection/ShapeGroups', - 'pdfeditor/main/app/collection/EquationGroups' ], function () { 'use strict'; PDFE.Controllers.RedactTab = Backbone.Controller.extend(_.extend({ models : [], collections : [ - 'ShapeGroups', - 'EquationGroups' ], views : [ 'RedactTab' @@ -124,7 +120,7 @@ define([ }, onRedactPages: function() { - const self = this; + const me = this; const countPages = this.api.getCountPages(); (new Common.Views.TextInputDialog({ @@ -132,7 +128,6 @@ define([ label: this.textEnterPageRange, value: `1-${countPages}`, description: this.textEnterRangeDescription, - inputFixedConfig: {fixedWidth: 40}, inputConfig: { maxLength: 20, allowBlank: false, @@ -142,7 +137,7 @@ define([ if (singlePage.test(value)) { const page = parseInt(value, 10); - if (page < 1 || page > countPages) return `Page must be between 1 and ${countPages}`; + if (page < 1 || page > countPages) return Common.Utils.String.format(me.txtInvalidRange, countPages); return true; } @@ -151,13 +146,13 @@ define([ const start = parseInt(match[1], 10); const end = parseInt(match[2], 10); if (start < 1 || end < 1 || start > countPages || end > countPages) { - return `Pages must be between 1 and ${countPages}`; + return Common.Utils.String.format(me.txtInvalidRange, countPages); } - if (start > end) return 'Start page must be less than or equal to end page'; + if (start > end) return me.txtReversedRange; return true; } - return 'Invalid format. Use single number or range with dash, e.g., 2 or 2-6'; + return me.txtInvalidFormat; } }, handler: function(result, value) { @@ -173,38 +168,42 @@ define([ pages.push(parseInt(value, 10)); } - self.api.RedactPages(pages); + me.api.RedactPages(pages); } } })).show(); }, onActiveTab: function(tab) { - Common.UI.TooltipManager.showTip('mark-for-redaction'); - const isMarked = this.api.HasRedact(); - if (isMarked) { - Common.UI.warning({ - width: 500, - msg: this.textUnappliedRedactions, - buttons: ['apply', 'doNotApply', 'cancel'], - primary: 'apply', - callback: _.bind(function(btn) { - if (btn == 'apply') { - this.api.ApplyRedact(); - this.api.SetRedactTool(false); - this.view.btnMarkForRedact.toggle(false); - } else if (btn == 'doNotApply') { - this.api.RemoveAllRedact(); - this.api.SetRedactTool(false); - this.view.btnMarkForRedact.toggle(false); - } else if (btn == 'cancel') { - // Common.NotificationCenter.trigger('tab:set-active', 'red'); - this.toolbar.toolbar.setTab('red') - }}, this) - }); + if (tab == 'red') { + Common.UI.TooltipManager.showTip('mark-for-redaction'); } else { - this.view.btnMarkForRedact.toggle(false); - this.api.SetRedactTool(false); + // Common.UI.TooltipManager.closeTip('mark-for-redaction'); + // Common.UI.TooltipManager.closeTip('apply-redaction'); + const isMarked = this.api.HasRedact(); + if (isMarked) { + Common.UI.warning({ + width: 500, + msg: this.textUnappliedRedactions, + buttons: ['apply', 'doNotApply', 'cancel'], + primary: 'apply', + callback: _.bind(function(btn) { + if (btn == 'apply') { + this.api.ApplyRedact(); + this.api.SetRedactTool(false); + this.view.btnMarkForRedact.toggle(false); + } else if (btn == 'doNotApply') { + this.api.RemoveAllRedact(); + this.api.SetRedactTool(false); + this.view.btnMarkForRedact.toggle(false); + } else if (btn == 'cancel') { + this.toolbar.toolbar.setTab('red') + }}, this) + }); + } else { + this.view.btnMarkForRedact.toggle(false); + this.api.SetRedactTool(false); + } } }, diff --git a/apps/pdfeditor/main/app/controller/Toolbar.js b/apps/pdfeditor/main/app/controller/Toolbar.js index 77d606fe40..e13e165a1b 100644 --- a/apps/pdfeditor/main/app/controller/Toolbar.js +++ b/apps/pdfeditor/main/app/controller/Toolbar.js @@ -1474,6 +1474,17 @@ define([ me.toolbar.setVisible('ins', true); } + tab = {caption: me.toolbar.textTabRedact, action: 'red', extcls: config.isEdit ? 'canedit' : '', layoutname: 'toolbar-redact', dataHintTitle: 'X'}; + var redacttab = me.getApplication().getController('RedactTab'); + redacttab.setApi(me.api).setConfig({toolbar: me, mode: config}); + redacttab.onAppReady(config); + $panel = redacttab.createToolbarPanel() + if ($panel) { + me.toolbar.addTab(tab, $panel, 2); + me.toolbar.setVisible('red', true); + redacttab.onDocumentReady(); + }; + if (config.canFeatureForms) { tab = {caption: me.textTabForms, action: 'forms', layoutname: 'toolbar-forms', dataHintTitle: 'M'}; var forms = me.getApplication().getController('FormsTab'); @@ -1518,7 +1529,7 @@ define([ instab.onDocumentReady(); }, 50); - var tab = {caption: 'Redact', action: 'red', extcls: this.mode.isEdit ? 'canedit' : '', layoutname: 'toolbar-redact', dataHintTitle: 'X'}; + var tab = {caption: toolbar.textTabRedact, action: 'red', extcls: this.mode.isEdit ? 'canedit' : '', layoutname: 'toolbar-redact', dataHintTitle: 'X'}; var redacttab = this.getApplication().getController('RedactTab'); redacttab.setApi(this.api).setConfig({toolbar: this, mode: this.mode}); toolbar.addTab(tab, redacttab.createToolbarPanel(), 2); diff --git a/apps/pdfeditor/main/app/view/RedactTab.js b/apps/pdfeditor/main/app/view/RedactTab.js index 6e2051c054..e2ddb9fa03 100644 --- a/apps/pdfeditor/main/app/view/RedactTab.js +++ b/apps/pdfeditor/main/app/view/RedactTab.js @@ -40,7 +40,6 @@ define([ 'common/main/lib/util/utils', 'common/main/lib/component/BaseView', 'common/main/lib/component/Layout', - 'common/main/lib/component/DimensionPicker' ], function () { 'use strict'; @@ -48,12 +47,12 @@ define([ var template = '
' + '
' + - '' + + '' + '' + '
' + - '
' + + '
' + '
' + - '' + + '' + '
' + '
'; @@ -102,7 +101,6 @@ define([ dataHint: '1', dataHintDirection: 'bottom', dataHintOffset: 'small', - action: 'interface-theme' }); me.lockedControls.push(this.btnRedactPages); @@ -147,8 +145,8 @@ define([ me.btnRedactPages.setMenu( new Common.UI.Menu({ items: [ - {caption: 'Mark current page', value: 'current'}, - {caption: 'Select range', value: 'range'}, + {caption: me.txtMarkCurrentPage, value: 'current'}, + {caption: me.txtSelectRange, value: 'range'}, ] }).on('item:click', function (menu, item, e) { if (item.value === 'current') { diff --git a/apps/pdfeditor/main/locale/en.json b/apps/pdfeditor/main/locale/en.json index 3297f1cc23..a644058ef4 100644 --- a/apps/pdfeditor/main/locale/en.json +++ b/apps/pdfeditor/main/locale/en.json @@ -876,6 +876,9 @@ "PDFE.Controllers.RedactTab.tipApplyRedaction": "Apply and save all redactions. Unsaved redactions can still be undone.", "PDFE.Controllers.RedactTab.tipApplyRedactionHeader": "Apply redactions", "PDFE.Controllers.RedactTab.tipMarkForRedactionHeader": "Mark for redactions", + "PDFE.Controllers.RedactTab.txtInvalidRange": "Pages must be between 1 and {0}", + "PDFE.Controllers.RedactTab.txtReversedRange": "Start page must be less than or equal to end page", + "PDFE.Controllers.RedactTab.txtInvalidFormat": "Invalid format. Use single number or range with dash, e.g., 2 or 2-6", "PDFE.Controllers.LeftMenu.leavePageText": "All unsaved changes in this document will be lost.
Click \"Cancel\" then \"Save\" to save them. Click \"OK\" to discard all the unsaved changes.", "PDFE.Controllers.LeftMenu.newDocumentTitle": "Unnamed document", "PDFE.Controllers.LeftMenu.notcriticalErrorTitle": "Warning", @@ -1706,6 +1709,8 @@ "PDFE.Views.RedactTab.capMarkRedact": "Mark for Redaction", "PDFE.Views.RedactTab.capRedactPages": "Redact Pages", "PDFE.Views.RedactTab.capApplyRedactions": "Apply Redactions", + "PDFE.Views.RedactTab.txtMarkCurrentPage": "Mark current page", + "PDFE.Views.RedactTab.txtSelectRange": "Select range", "PDFE.Views.LeftMenu.ariaLeftMenu": "Left menu", "PDFE.Views.LeftMenu.tipAbout": "About", "PDFE.Views.LeftMenu.tipChat": "Chat", @@ -2175,6 +2180,7 @@ "PDFE.Views.Toolbar.textTabFile": "File", "PDFE.Views.Toolbar.textTabHome": "Home", "PDFE.Views.Toolbar.textTabInsert": "Insert", + "PDFE.Views.Toolbar.textTabRedact": "Redact", "PDFE.Views.Toolbar.textTabView": "View", "PDFE.Views.Toolbar.textUnderline": "Underline", "PDFE.Views.Toolbar.tipAddComment": "Add comment",