From 5f58bd0ca0d6b8f8063b1421c1b90e201c6416b0 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 3 Jul 2020 14:59:48 +0300 Subject: [PATCH 1/5] [DE] Add autocorrect options --- apps/common/main/lib/util/utils.js | 14 ++ .../common/main/lib/view/AutoCorrectDialog.js | 122 ++++++++++++++++++ apps/documenteditor/main/app/view/FileMenu.js | 2 + .../main/app/view/FileMenuPanels.js | 44 ++++++- 4 files changed, 180 insertions(+), 2 deletions(-) create mode 100644 apps/common/main/lib/view/AutoCorrectDialog.js diff --git a/apps/common/main/lib/util/utils.js b/apps/common/main/lib/util/utils.js index 0c32fc416..948cbb4e3 100644 --- a/apps/common/main/lib/util/utils.js +++ b/apps/common/main/lib/util/utils.js @@ -594,6 +594,20 @@ Common.Utils.String = new (function() { parseFloat: function(string) { (typeof string === 'string') && (string = string.replace(',', '.')); return parseFloat(string) + }, + + encodeSurrogateChar: function(nUnicode) { + if (nUnicode < 0x10000) + { + return String.fromCharCode(nUnicode); + } + else + { + nUnicode = nUnicode - 0x10000; + var nLeadingChar = 0xD800 | (nUnicode >> 10); + var nTrailingChar = 0xDC00 | (nUnicode & 0x3FF); + return String.fromCharCode(nLeadingChar) + String.fromCharCode(nTrailingChar); + } } } })(); diff --git a/apps/common/main/lib/view/AutoCorrectDialog.js b/apps/common/main/lib/view/AutoCorrectDialog.js new file mode 100644 index 000000000..d2ef90c61 --- /dev/null +++ b/apps/common/main/lib/view/AutoCorrectDialog.js @@ -0,0 +1,122 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2020 + * + * 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 + * + */ + +/** + * AutoCorrectDialog.js + * + * Created by Julia Radzhabova on 03.07.2020 + * Copyright (c) 2020 Ascensio System SIA. All rights reserved. + * + */ +if (Common === undefined) + var Common = {}; +define([ + 'common/main/lib/component/ListView', + 'common/main/lib/component/Window' +], function () { 'use strict'; + + Common.Views.AutoCorrectDialog = Common.UI.Window.extend(_.extend({ + options: { + width: 448, + cls: 'modal-dlg', + buttons: null + }, + + initialize : function(options) { + _.extend(this.options, { + title: this.textTitle + }, options || {}); + + this.template = [ + '
', + '
', + '', + '', + '', + '', + '', + '', + '', + '
', + '', + '
', + '
', + '
', + '
', + '
', + '' + ].join(''); + + this.options.tpl = _.template(this.template)(this.options); + this.props = this.options.props || []; + + Common.UI.Window.prototype.initialize.call(this, this.options); + }, + + render: function() { + Common.UI.Window.prototype.render.call(this); + + var $window = this.getChild(); + + // special + this.mathList = new Common.UI.ListView({ + el: $window.find('#auto-correct-math-list'), + store: new Common.UI.DataViewStore(this.props), + simpleAddMode: true, + template: _.template(['
'].join('')), + itemTemplate: _.template([ + '
', + '
<%= replaced %>
', + '
<%= by %>
', + '
' + ].join('')), + scrollAlwaysVisible: true + }); + $window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this)); + }, + + onBtnClick: function(event) { + this.close(); + }, + + onPrimary: function(event) { + return true; + }, + + textTitle: 'AutoCorrect', + textMathCorrect: 'Math AutoCorrect' + + }, Common.Views.AutoCorrectDialog || {})) +}); diff --git a/apps/documenteditor/main/app/view/FileMenu.js b/apps/documenteditor/main/app/view/FileMenu.js index f6b7f36e1..1a2a6838e 100644 --- a/apps/documenteditor/main/app/view/FileMenu.js +++ b/apps/documenteditor/main/app/view/FileMenu.js @@ -239,6 +239,7 @@ define([ if ( !!this.api ) { this.panels['info'].setApi(this.api); + this.panels['opts'].setApi(this.api); if ( this.panels['protect'] ) this.panels['protect'].setApi(this.api); } @@ -373,6 +374,7 @@ define([ if ( this.rendered ) { this.panels['info'].setApi(api); + this.panels['opts'].setApi(api); if (this.panels['protect']) this.panels['protect'].setApi(api); } diff --git a/apps/documenteditor/main/app/view/FileMenuPanels.js b/apps/documenteditor/main/app/view/FileMenuPanels.js index ced874565..a3a4ffb8c 100644 --- a/apps/documenteditor/main/app/view/FileMenuPanels.js +++ b/apps/documenteditor/main/app/view/FileMenuPanels.js @@ -41,7 +41,8 @@ */ define([ - 'common/main/lib/view/DocumentAccessDialog' + 'common/main/lib/view/DocumentAccessDialog', + 'common/main/lib/view/AutoCorrectDialog' ], function () { 'use strict'; @@ -202,6 +203,10 @@ define([ '', '
', '','', + '', + '', + '', + '','', '', '', '
', @@ -430,6 +435,11 @@ define([ labelText: this.strPasteButton }); + this.btnAutoCorrect = new Common.UI.Button({ + el: $markup.findById('#fms-btn-auto-correct') + }); + this.btnAutoCorrect.on('click', _.bind(this.autoCorrect, this)); + this.btnApply = new Common.UI.Button({ el: $markup.findById('#fms-btn-apply') }); @@ -473,6 +483,11 @@ define([ $('tr.macros', this.el)[(mode.customization && mode.customization.macros===false) ? 'hide' : 'show'](); }, + setApi: function(o) { + this.api = o; + return this; + }, + updateSettings: function() { this.chInputMode.setValue(Common.Utils.InternalSettings.get("de-settings-inputmode")); @@ -593,6 +608,29 @@ define([ this._fontRender = combo.getValue(); }, + autoCorrect: function() { + if (!this._mathCorrect) { + var arr = (this.api) ? this.api.asc_getAutoCorrectMathSymbols() : [], + data = []; + _.each(arr, function(item, index){ + var itm = {replaced: item[0]}; + if (typeof item[1]=='object') { + itm.by = ''; + _.each(item[1], function(ch){ + itm.by += Common.Utils.String.encodeSurrogateChar(ch); + }); + } else { + itm.by = Common.Utils.String.encodeSurrogateChar(item[1]); + } + data.push(itm); + }); + this._mathCorrect = data; + } + (new Common.Views.AutoCorrectDialog({ + props: this._mathCorrect + })).show(); + }, + strLiveComment: 'Turn on option', strInputMode: 'Turn on hieroglyphs', strZoom: 'Default Zoom Value', @@ -642,7 +680,9 @@ define([ txtRunMacrosDesc: 'Enable all macros without notification', txtStopMacrosDesc: 'Disable all macros without notification', strPaste: 'Cut, copy and paste', - strPasteButton: 'Show Paste Options button when content is pasted' + strPasteButton: 'Show Paste Options button when content is pasted', + txtProofing: 'Proofing', + txtAutoCorrect: 'AutoCorrect options...' }, DE.Views.FileMenuPanels.Settings || {})); DE.Views.FileMenuPanels.RecentFiles = Common.UI.BaseView.extend({ From ad49bc4e6180361381f78098e9e7dc4ef53e0d15 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 3 Jul 2020 15:15:17 +0300 Subject: [PATCH 2/5] [PE][SSE] Add autocorrect options --- apps/documenteditor/main/app/view/FileMenu.js | 4 +- .../main/app/view/FileMenu.js | 2 + .../main/app/view/FileMenuPanels.js | 42 ++++++++++++++++++- .../main/app/view/FileMenuPanels.js | 41 ++++++++++++++++-- 4 files changed, 83 insertions(+), 6 deletions(-) diff --git a/apps/documenteditor/main/app/view/FileMenu.js b/apps/documenteditor/main/app/view/FileMenu.js index 1a2a6838e..e550d78a6 100644 --- a/apps/documenteditor/main/app/view/FileMenu.js +++ b/apps/documenteditor/main/app/view/FileMenu.js @@ -239,7 +239,7 @@ define([ if ( !!this.api ) { this.panels['info'].setApi(this.api); - this.panels['opts'].setApi(this.api); + if (this.panels['opts']) this.panels['opts'].setApi(this.api); if ( this.panels['protect'] ) this.panels['protect'].setApi(this.api); } @@ -374,7 +374,7 @@ define([ if ( this.rendered ) { this.panels['info'].setApi(api); - this.panels['opts'].setApi(api); + if (this.panels['opts']) this.panels['opts'].setApi(api); if (this.panels['protect']) this.panels['protect'].setApi(api); } diff --git a/apps/presentationeditor/main/app/view/FileMenu.js b/apps/presentationeditor/main/app/view/FileMenu.js index 5d5189f4d..9c5ef6561 100644 --- a/apps/presentationeditor/main/app/view/FileMenu.js +++ b/apps/presentationeditor/main/app/view/FileMenu.js @@ -223,6 +223,7 @@ define([ if ( !!this.api ) { this.panels['info'].setApi(this.api); + if (this.panels['opts']) this.panels['opts'].setApi(this.api); if ( this.panels['protect'] ) this.panels['protect'].setApi(this.api); } @@ -352,6 +353,7 @@ define([ if ( this.rendered ) { this.panels['info'].setApi(api); + if (this.panels['opts']) this.panels['opts'].setApi(api); if (this.panels['protect']) this.panels['protect'].setApi(api); } this.api.asc_registerCallback('asc_onDocumentName', _.bind(this.onDocumentName, this)); diff --git a/apps/presentationeditor/main/app/view/FileMenuPanels.js b/apps/presentationeditor/main/app/view/FileMenuPanels.js index 73dc6cf58..1575ebb79 100644 --- a/apps/presentationeditor/main/app/view/FileMenuPanels.js +++ b/apps/presentationeditor/main/app/view/FileMenuPanels.js @@ -42,6 +42,7 @@ define([ 'common/main/lib/view/DocumentAccessDialog', + 'common/main/lib/view/AutoCorrectDialog', 'common/main/lib/component/CheckBox' ], function () { 'use strict'; @@ -184,6 +185,10 @@ define([ '', '
', '','', + '', + '', + '', + '','', '', '', '
', @@ -373,6 +378,11 @@ define([ labelText: this.strPasteButton }); + this.btnAutoCorrect = new Common.UI.Button({ + el: $markup.findById('#fms-btn-auto-correct') + }); + this.btnAutoCorrect.on('click', _.bind(this.autoCorrect, this)); + this.btnApply = new Common.UI.Button({ el: $markup.findById('#fms-btn-apply') }); @@ -414,6 +424,11 @@ define([ $('tr.macros', this.el)[(mode.customization && mode.customization.macros===false) ? 'hide' : 'show'](); }, + setApi: function(o) { + this.api = o; + return this; + }, + updateSettings: function() { this.chSpell.setValue(Common.Utils.InternalSettings.get("pe-settings-spellcheck")); @@ -506,6 +521,29 @@ define([ this._fontRender = combo.getValue(); }, + autoCorrect: function() { + if (!this._mathCorrect) { + var arr = (this.api) ? this.api.asc_getAutoCorrectMathSymbols() : [], + data = []; + _.each(arr, function(item, index){ + var itm = {replaced: item[0]}; + if (typeof item[1]=='object') { + itm.by = ''; + _.each(item[1], function(ch){ + itm.by += Common.Utils.String.encodeSurrogateChar(ch); + }); + } else { + itm.by = Common.Utils.String.encodeSurrogateChar(item[1]); + } + data.push(itm); + }); + this._mathCorrect = data; + } + (new Common.Views.AutoCorrectDialog({ + props: this._mathCorrect + })).show(); + }, + strInputMode: 'Turn on hieroglyphs', strZoom: 'Default Zoom Value', okButtonText: 'Apply', @@ -549,7 +587,9 @@ define([ txtRunMacrosDesc: 'Enable all macros without notification', txtStopMacrosDesc: 'Disable all macros without notification', strPaste: 'Cut, copy and paste', - strPasteButton: 'Show Paste Options button when content is pasted' + strPasteButton: 'Show Paste Options button when content is pasted', + txtProofing: 'Proofing', + txtAutoCorrect: 'AutoCorrect options...' }, PE.Views.FileMenuPanels.Settings || {})); PE.Views.FileMenuPanels.RecentFiles = Common.UI.BaseView.extend({ diff --git a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js index 6a92c8ff6..affbdea83 100644 --- a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js +++ b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js @@ -31,7 +31,8 @@ * */ define([ - 'common/main/lib/view/DocumentAccessDialog' + 'common/main/lib/view/DocumentAccessDialog', + 'common/main/lib/view/AutoCorrectDialog' ], function () { 'use strict'; @@ -257,6 +258,7 @@ define([ setApi: function(api) { this.generalSettings && this.generalSettings.setApi(api); + this.spellcheckSettings && this.spellcheckSettings.setApi(api); }, txtGeneral: 'General', @@ -1237,6 +1239,10 @@ define([ '', '', '','', + '', + '', + '', + '','', '', '', '', @@ -1272,6 +1278,11 @@ define([ menuStyle: 'min-width: 267px; max-height: 209px;' }); + this.btnAutoCorrect = new Common.UI.Button({ + el: $markup.findById('#fms-btn-auto-correct') + }); + this.btnAutoCorrect.on('click', _.bind(this.autoCorrect, this)); + this.btnApply = new Common.UI.Button({ el: $markup.findById('#fms-spellcheck-btn-apply') }); @@ -1362,11 +1373,35 @@ define([ } }, + autoCorrect: function() { + if (!this._mathCorrect) { + var arr = (this.api) ? this.api.asc_getAutoCorrectMathSymbols() : [], + data = []; + _.each(arr, function(item, index){ + var itm = {replaced: item[0]}; + if (typeof item[1]=='object') { + itm.by = ''; + _.each(item[1], function(ch){ + itm.by += Common.Utils.String.encodeSurrogateChar(ch); + }); + } else { + itm.by = Common.Utils.String.encodeSurrogateChar(item[1]); + } + data.push(itm); + }); + this._mathCorrect = data; + } + (new Common.Views.AutoCorrectDialog({ + props: this._mathCorrect + })).show(); + }, + strIgnoreWordsInUPPERCASE: 'Ignore words in UPPERCASE', strIgnoreWordsWithNumbers: 'Ignore words with numbers', strDictionaryLanguage: 'Dictionary language', - okButtonText: 'Apply' - + okButtonText: 'Apply', + txtProofing: 'Proofing', + txtAutoCorrect: 'AutoCorrect options...' }, SSE.Views.FileMenuPanels.MainSpellCheckSettings || {})); SSE.Views.FileMenuPanels.RecentFiles = Common.UI.BaseView.extend({ From 660d38a853ac61f6d9776d9900b760f999f7bbfd Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 3 Jul 2020 15:27:20 +0300 Subject: [PATCH 3/5] AutoCorrection: refactoring. Add translation --- apps/documenteditor/main/app/view/FileMenuPanels.js | 2 +- apps/documenteditor/main/locale/en.json | 4 ++++ apps/presentationeditor/main/app/view/FileMenuPanels.js | 2 +- apps/presentationeditor/main/locale/en.json | 4 ++++ apps/spreadsheeteditor/main/app/view/FileMenuPanels.js | 2 +- apps/spreadsheeteditor/main/locale/en.json | 4 ++++ 6 files changed, 15 insertions(+), 3 deletions(-) diff --git a/apps/documenteditor/main/app/view/FileMenuPanels.js b/apps/documenteditor/main/app/view/FileMenuPanels.js index a3a4ffb8c..2d46a8e45 100644 --- a/apps/documenteditor/main/app/view/FileMenuPanels.js +++ b/apps/documenteditor/main/app/view/FileMenuPanels.js @@ -205,7 +205,7 @@ define([ '','', '', '', - '', + '', '','', '', '', diff --git a/apps/documenteditor/main/locale/en.json b/apps/documenteditor/main/locale/en.json index 30b809527..d871d544c 100644 --- a/apps/documenteditor/main/locale/en.json +++ b/apps/documenteditor/main/locale/en.json @@ -157,6 +157,8 @@ "Common.Views.About.txtPoweredBy": "Powered by", "Common.Views.About.txtTel": "tel.: ", "Common.Views.About.txtVersion": "Version ", + "Common.Views.AutoCorrectDialog.textTitle": "AutoCorrect", + "Common.Views.AutoCorrectDialog.textMathCorrect": "Math AutoCorrect", "Common.Views.Chat.textSend": "Send", "Common.Views.Comments.textAdd": "Add", "Common.Views.Comments.textAddComment": "Add Comment", @@ -1581,6 +1583,8 @@ "DE.Views.FileMenuPanels.Settings.txtStopMacrosDesc": "Disable all macros without notification", "DE.Views.FileMenuPanels.Settings.strPaste": "Cut, copy and paste", "DE.Views.FileMenuPanels.Settings.strPasteButton": "Show Paste Options button when content is pasted", + "DE.Views.FileMenuPanels.Settings.txtProofing": "Proofing", + "DE.Views.FileMenuPanels.Settings.txtAutoCorrect": "AutoCorrect options...", "DE.Views.HeaderFooterSettings.textBottomCenter": "Bottom center", "DE.Views.HeaderFooterSettings.textBottomLeft": "Bottom left", "DE.Views.HeaderFooterSettings.textBottomPage": "Bottom of Page", diff --git a/apps/presentationeditor/main/app/view/FileMenuPanels.js b/apps/presentationeditor/main/app/view/FileMenuPanels.js index 1575ebb79..c7bd22e8e 100644 --- a/apps/presentationeditor/main/app/view/FileMenuPanels.js +++ b/apps/presentationeditor/main/app/view/FileMenuPanels.js @@ -187,7 +187,7 @@ define([ '','', '', '', - '', + '', '','', '', '', diff --git a/apps/presentationeditor/main/locale/en.json b/apps/presentationeditor/main/locale/en.json index f4caa3913..fd52cf811 100644 --- a/apps/presentationeditor/main/locale/en.json +++ b/apps/presentationeditor/main/locale/en.json @@ -58,6 +58,8 @@ "Common.Views.About.txtPoweredBy": "Powered by", "Common.Views.About.txtTel": "tel.: ", "Common.Views.About.txtVersion": "Version ", + "Common.Views.AutoCorrectDialog.textTitle": "AutoCorrect", + "Common.Views.AutoCorrectDialog.textMathCorrect": "Math AutoCorrect", "Common.Views.Chat.textSend": "Send", "Common.Views.Comments.textAdd": "Add", "Common.Views.Comments.textAddComment": "Add Comment", @@ -1274,6 +1276,8 @@ "PE.Views.FileMenuPanels.Settings.txtStopMacrosDesc": "Disable all macros without notification", "PE.Views.FileMenuPanels.Settings.strPaste": "Cut, copy and paste", "PE.Views.FileMenuPanels.Settings.strPasteButton": "Show Paste Options button when content is pasted", + "PE.Views.FileMenuPanels.Settings.txtProofing": "Proofing", + "PE.Views.FileMenuPanels.Settings.txtAutoCorrect": "AutoCorrect options...", "PE.Views.HeaderFooterDialog.applyAllText": "Apply to all", "PE.Views.HeaderFooterDialog.applyText": "Apply", "PE.Views.HeaderFooterDialog.diffLanguage": "You can’t use a date format in a different language than the slide master.
To change the master, click 'Apply to all' instead of 'Apply'", diff --git a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js index affbdea83..04a4ab069 100644 --- a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js +++ b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js @@ -1241,7 +1241,7 @@ define([ '','', '', '', - '', + '', '','', '', '', diff --git a/apps/spreadsheeteditor/main/locale/en.json b/apps/spreadsheeteditor/main/locale/en.json index b6bb22291..7d7a4d017 100644 --- a/apps/spreadsheeteditor/main/locale/en.json +++ b/apps/spreadsheeteditor/main/locale/en.json @@ -59,6 +59,8 @@ "Common.Views.About.txtPoweredBy": "Powered by", "Common.Views.About.txtTel": "tel.: ", "Common.Views.About.txtVersion": "Version ", + "Common.Views.AutoCorrectDialog.textTitle": "AutoCorrect", + "Common.Views.AutoCorrectDialog.textMathCorrect": "Math AutoCorrect", "Common.Views.Chat.textSend": "Send", "Common.Views.Comments.textAdd": "Add", "Common.Views.Comments.textAddComment": "Add Comment", @@ -1726,6 +1728,8 @@ "SSE.Views.FileMenuPanels.MainSpellCheckSettings.strDictionaryLanguage": "Dictionary language", "SSE.Views.FileMenuPanels.MainSpellCheckSettings.strIgnoreWordsInUPPERCASE": "Ignore words in UPPERCASE", "SSE.Views.FileMenuPanels.MainSpellCheckSettings.strIgnoreWordsWithNumbers": "Ignore words with numbers", + "SSE.Views.FileMenuPanels.MainSpellCheckSettings.txtProofing": "Proofing", + "SSE.Views.FileMenuPanels.MainSpellCheckSettings.txtAutoCorrect": "AutoCorrect options...", "SSE.Views.FileMenuPanels.ProtectDoc.notcriticalErrorTitle": "Warning", "SSE.Views.FileMenuPanels.ProtectDoc.strEncrypt": "With password", "SSE.Views.FileMenuPanels.ProtectDoc.strProtect": "Protect Spreadsheet", From 4ca4897e9c09ff7fc8b249642283e44d4f0bb2e7 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 3 Jul 2020 18:06:34 +0300 Subject: [PATCH 4/5] Change autocorrect options --- .../common/main/lib/view/AutoCorrectDialog.js | 71 +++++++++++++++++-- apps/documenteditor/main/locale/en.json | 2 + apps/presentationeditor/main/locale/en.json | 2 + apps/spreadsheeteditor/main/locale/en.json | 2 + 4 files changed, 73 insertions(+), 4 deletions(-) diff --git a/apps/common/main/lib/view/AutoCorrectDialog.js b/apps/common/main/lib/view/AutoCorrectDialog.js index d2ef90c61..ba49b37a0 100644 --- a/apps/common/main/lib/view/AutoCorrectDialog.js +++ b/apps/common/main/lib/view/AutoCorrectDialog.js @@ -62,13 +62,25 @@ define([ '
', '', '', - '', '', '', '', + '', + '', + '', + '', + '', + '', '', '
', - '', + '', + '', '
', - '
', + '', + '', + '
', + '
', + '
', + '
', + '
', '
', @@ -89,6 +101,7 @@ define([ Common.UI.Window.prototype.render.call(this); var $window = this.getChild(); + var me = this; // special this.mathList = new Common.UI.ListView({ @@ -104,9 +117,57 @@ define([ ].join('')), scrollAlwaysVisible: true }); + this.mathList.on('item:select', _.bind(this.onSelectMathItem, this)); + + this.inputReplace = new Common.UI.InputField({ + el : $window.find('#auto-correct-replace'), + allowBlank : true, + validateOnChange : true, + validation : function () { return true; } + }).on ('changing', function (input, value) { + if (value.length) { + var store = me.mathList.store; + var _selectedItem = store.find(function(item) { + if ( item.get('replaced').indexOf(value) == 0) { + return true; + } + }); + if (_selectedItem) { + me.mathList.selectRecord(_selectedItem, true); + me.mathList.scrollToRecord(_selectedItem); + } else { + me.mathList.deselectAll(); + } + } else { + me.mathList.deselectAll(); + } + }); + + this.inputBy = new Common.UI.InputField({ + el : $window.find('#auto-correct-by'), + allowBlank : true, + validateOnChange : true, + validation : function () { return true; } + }); + // this.inputBy.cmpEl.find('input').css('font-size', '13px'); + $window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this)); }, + onSelectMathItem: function(lisvView, itemView, record) { + this.inputReplace.setValue(record.get('replaced')); + this.inputBy.setValue(record.get('by')); + }, + + show: function() { + Common.UI.Window.prototype.show.apply(this, arguments); + + var me = this; + _.delay(function(){ + $('input', me.inputReplace.cmpEl).select().focus(); + },100); + }, + onBtnClick: function(event) { this.close(); }, @@ -116,7 +177,9 @@ define([ }, textTitle: 'AutoCorrect', - textMathCorrect: 'Math AutoCorrect' + textMathCorrect: 'Math AutoCorrect', + textReplace: 'Replace:', + textBy: 'By:' }, Common.Views.AutoCorrectDialog || {})) }); diff --git a/apps/documenteditor/main/locale/en.json b/apps/documenteditor/main/locale/en.json index d871d544c..79b088a3a 100644 --- a/apps/documenteditor/main/locale/en.json +++ b/apps/documenteditor/main/locale/en.json @@ -159,6 +159,8 @@ "Common.Views.About.txtVersion": "Version ", "Common.Views.AutoCorrectDialog.textTitle": "AutoCorrect", "Common.Views.AutoCorrectDialog.textMathCorrect": "Math AutoCorrect", + "Common.Views.AutoCorrectDialog.textReplace": "Replace:", + "Common.Views.AutoCorrectDialog.textBy": "By:", "Common.Views.Chat.textSend": "Send", "Common.Views.Comments.textAdd": "Add", "Common.Views.Comments.textAddComment": "Add Comment", diff --git a/apps/presentationeditor/main/locale/en.json b/apps/presentationeditor/main/locale/en.json index fd52cf811..6ae930552 100644 --- a/apps/presentationeditor/main/locale/en.json +++ b/apps/presentationeditor/main/locale/en.json @@ -60,6 +60,8 @@ "Common.Views.About.txtVersion": "Version ", "Common.Views.AutoCorrectDialog.textTitle": "AutoCorrect", "Common.Views.AutoCorrectDialog.textMathCorrect": "Math AutoCorrect", + "Common.Views.AutoCorrectDialog.textReplace": "Replace:", + "Common.Views.AutoCorrectDialog.textBy": "By:", "Common.Views.Chat.textSend": "Send", "Common.Views.Comments.textAdd": "Add", "Common.Views.Comments.textAddComment": "Add Comment", diff --git a/apps/spreadsheeteditor/main/locale/en.json b/apps/spreadsheeteditor/main/locale/en.json index 7d7a4d017..d21b9534b 100644 --- a/apps/spreadsheeteditor/main/locale/en.json +++ b/apps/spreadsheeteditor/main/locale/en.json @@ -61,6 +61,8 @@ "Common.Views.About.txtVersion": "Version ", "Common.Views.AutoCorrectDialog.textTitle": "AutoCorrect", "Common.Views.AutoCorrectDialog.textMathCorrect": "Math AutoCorrect", + "Common.Views.AutoCorrectDialog.textReplace": "Replace:", + "Common.Views.AutoCorrectDialog.textBy": "By:", "Common.Views.Chat.textSend": "Send", "Common.Views.Comments.textAdd": "Add", "Common.Views.Comments.textAddComment": "Add Comment", From 9619a20bd4bd2def74870952896a961273d438b5 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 3 Jul 2020 18:34:57 +0300 Subject: [PATCH 5/5] Autocorrect refactoring --- apps/common/main/lib/view/AutoCorrectDialog.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/apps/common/main/lib/view/AutoCorrectDialog.js b/apps/common/main/lib/view/AutoCorrectDialog.js index ba49b37a0..f7d348a95 100644 --- a/apps/common/main/lib/view/AutoCorrectDialog.js +++ b/apps/common/main/lib/view/AutoCorrectDialog.js @@ -143,6 +143,20 @@ define([ } }); + this.inputReplace.cmpEl.find('input').on('keydown', function(event){ + if (event.key == 'ArrowDown') { + var _selectedItem = me.mathList.getSelectedRec() || me.mathList.store.at(0); + if (_selectedItem) { + me.mathList.selectRecord(_selectedItem); + me.mathList.scrollToRecord(_selectedItem); + } + _.delay(function(){ + me.mathList.cmpEl.find('.listview').focus(); + },10); + + } + }); + this.inputBy = new Common.UI.InputField({ el : $window.find('#auto-correct-by'), allowBlank : true,