diff --git a/apps/documenteditor/main/app/controller/Search.js b/apps/documenteditor/main/app/controller/Search.js index 562d3cb2e..c09206667 100644 --- a/apps/documenteditor/main/app/controller/Search.js +++ b/apps/documenteditor/main/app/controller/Search.js @@ -53,7 +53,6 @@ define([ ], initialize: function () { - console.log('init'); this.addListeners({ 'SearchBar': { 'search:back': _.bind(this.onQuerySearch, this, 'back'), diff --git a/apps/presentationeditor/main/app.js b/apps/presentationeditor/main/app.js index 0b2f1c272..8e22ee158 100644 --- a/apps/presentationeditor/main/app.js +++ b/apps/presentationeditor/main/app.js @@ -153,6 +153,7 @@ require([ 'LeftMenu', 'Main', 'ViewTab', + 'Search', 'Common.Controllers.Fonts', 'Common.Controllers.History' /** coauthoring begin **/ @@ -178,6 +179,7 @@ require([ 'presentationeditor/main/app/controller/LeftMenu', 'presentationeditor/main/app/controller/Main', 'presentationeditor/main/app/controller/ViewTab', + 'presentationeditor/main/app/controller/Search', 'presentationeditor/main/app/view/FileMenuPanels', 'presentationeditor/main/app/view/ParagraphSettings', 'presentationeditor/main/app/view/ImageSettings', diff --git a/apps/presentationeditor/main/app/controller/LeftMenu.js b/apps/presentationeditor/main/app/controller/LeftMenu.js index 3be667173..e26083eef 100644 --- a/apps/presentationeditor/main/app/controller/LeftMenu.js +++ b/apps/presentationeditor/main/app/controller/LeftMenu.js @@ -171,6 +171,8 @@ define([ if (this.mode.canUseHistory) this.getApplication().getController('Common.Controllers.History').setApi(this.api).setMode(this.mode); this.leftMenu.btnThumbs.toggle(true); + this.getApplication().getController('Search').setApi(this.api).setMode(this.mode); + this.leftMenu.setOptionsPanel('advancedsearch', this.getApplication().getController('Search').getView('Common.Views.SearchPanel')); return this; }, @@ -747,6 +749,9 @@ define([ // focus to sdk this.api.asc_enableKeyEvents(true); + } else if (this.leftMenu.btnSearchBar.isActive()) { + this.leftMenu.btnSearchBar.toggle(false); + this.leftMenu.onBtnMenuClick(this.leftMenu.btnSearchBar); } } }, diff --git a/apps/presentationeditor/main/app/controller/Search.js b/apps/presentationeditor/main/app/controller/Search.js new file mode 100644 index 000000000..48af40a15 --- /dev/null +++ b/apps/presentationeditor/main/app/controller/Search.js @@ -0,0 +1,126 @@ +/* + * + * (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 + * + */ + +/** + * ViewTab.js + * + * Created by Julia Svinareva on 25.02.2022 + * Copyright (c) 2022 Ascensio System SIA. All rights reserved. + * + */ + +define([ + 'core', + 'common/main/lib/view/SearchPanel' +], function () { + 'use strict'; + + PE.Controllers.Search = Backbone.Controller.extend(_.extend({ + sdkViewName : '#id_main', + + views: [ + 'Common.Views.SearchPanel' + ], + + initialize: function () { + this.addListeners({ + 'SearchBar': { + 'search:back': _.bind(this.onQuerySearch, this, 'back'), + 'search:next': _.bind(this.onQuerySearch, this, 'next'), + }, + 'Common.Views.SearchPanel': { + 'search:back': _.bind(this.onQuerySearch, this, 'back'), + 'search:next': _.bind(this.onQuerySearch, this, 'next'), + 'search:replace': _.bind(this.onQueryReplace, this), + 'search:replaceall': _.bind(this.onQueryReplaceAll, this) + } + }); + }, + onLaunch: function () { + this._state = {}; + }, + + setMode: function (mode) { + this.view = this.createView('Common.Views.SearchPanel', { mode: mode }); + }, + + setApi: function (api) { + if (api) { + this.api = api; + } + return this; + }, + + getView: function(name) { + return !name && this.view ? + this.view : Backbone.Controller.prototype.getView.call(this, name); + }, + + onQuerySearch: function (d, w, opts) { + if (opts.textsearch && opts.textsearch.length) { + if (!this.api.asc_findText(opts.textsearch, d != 'back', opts.matchcase)) { + var me = this; + Common.UI.info({ + msg: this.textNoTextFound, + callback: function() { + //me.dlgSearch.focus(); + } + }); + } + } + }, + + onQueryReplace: function(w, opts) { + if (!_.isEmpty(opts.textsearch)) { + if (!this.api.asc_replaceText(opts.textsearch, opts.textreplace, false, opts.matchcase)) { + var me = this; + Common.UI.info({ + msg: this.textNoTextFound, + callback: function() { + me.view.focus(); + } + }); + } + } + }, + + onQueryReplaceAll: function(w, opts) { + if (!_.isEmpty(opts.textsearch)) { + this.api.asc_replaceText(opts.textsearch, opts.textreplace, true, opts.matchcase); + } + }, + + textNoTextFound: 'The data you have been searching for could not be found. Please adjust your search options.', + + }, PE.Controllers.Search || {})); +}); \ No newline at end of file diff --git a/apps/presentationeditor/main/app/template/LeftMenu.template b/apps/presentationeditor/main/app/template/LeftMenu.template index abd645e85..384fc8c88 100644 --- a/apps/presentationeditor/main/app/template/LeftMenu.template +++ b/apps/presentationeditor/main/app/template/LeftMenu.template @@ -1,6 +1,7 @@