From 269fc87bb3ed1ddd88913573136bdf666e3e9231 Mon Sep 17 00:00:00 2001 From: Julia Svinareva Date: Thu, 4 Jul 2019 10:13:22 +0300 Subject: [PATCH 1/4] [DE mobile] Add PluginShow handler --- apps/documenteditor/mobile/app-dev.js | 6 +- apps/documenteditor/mobile/app.js | 6 +- .../mobile/app/controller/Plugins.js | 165 ++++++++++++++++++ 3 files changed, 173 insertions(+), 4 deletions(-) create mode 100644 apps/documenteditor/mobile/app/controller/Plugins.js diff --git a/apps/documenteditor/mobile/app-dev.js b/apps/documenteditor/mobile/app-dev.js index 95ac0d284..02dfbce11 100644 --- a/apps/documenteditor/mobile/app-dev.js +++ b/apps/documenteditor/mobile/app-dev.js @@ -150,7 +150,8 @@ require([ 'AddShape', 'AddImage', 'AddOther', - 'Collaboration' + 'Collaboration', + 'Plugins' ] }); @@ -220,7 +221,8 @@ require([ 'documenteditor/mobile/app/controller/add/AddShape', 'documenteditor/mobile/app/controller/add/AddImage', 'documenteditor/mobile/app/controller/add/AddOther', - 'documenteditor/mobile/app/controller/Collaboration' + 'documenteditor/mobile/app/controller/Collaboration', + 'documenteditor/mobile/app/controller/Plugins' ], function() { window.compareVersions = true; app.start(); diff --git a/apps/documenteditor/mobile/app.js b/apps/documenteditor/mobile/app.js index 4b139e5f6..2aaca7591 100644 --- a/apps/documenteditor/mobile/app.js +++ b/apps/documenteditor/mobile/app.js @@ -161,7 +161,8 @@ require([ 'AddShape', 'AddImage', 'AddOther', - 'Collaboration' + 'Collaboration', + 'Plugins' ] }); @@ -231,7 +232,8 @@ require([ 'documenteditor/mobile/app/controller/add/AddShape', 'documenteditor/mobile/app/controller/add/AddImage', 'documenteditor/mobile/app/controller/add/AddOther', - 'documenteditor/mobile/app/controller/Collaboration' + 'documenteditor/mobile/app/controller/Collaboration', + 'documenteditor/mobile/app/controller/Plugins' ], function() { app.start(); }); diff --git a/apps/documenteditor/mobile/app/controller/Plugins.js b/apps/documenteditor/mobile/app/controller/Plugins.js new file mode 100644 index 000000000..8afd29608 --- /dev/null +++ b/apps/documenteditor/mobile/app/controller/Plugins.js @@ -0,0 +1,165 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2019 + * + * 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 + * + */ + +/** + * Plugins.js + * Document Editor + * + * Created by Julia Svinareva on 1/7/19 + * Copyright (c) 2019 Ascensio System SIA. All rights reserved. + * + */ +define([ + 'core', + 'jquery', + 'underscore', + 'backbone' +], function (core, $, _, Backbone) { + 'use strict'; + + DE.Controllers.Plugins = Backbone.Controller.extend(_.extend((function() { + // Private + var rootView; + + return { + models: [], + collections: [], + views: [ + ], + + initialize: function() { + var me = this; + }, + + setApi: function(api) { + this.api = api; + this.api.asc_registerCallback("asc_onPluginShow", _.bind(this.showPluginModal, this)); + this.api.asc_registerCallback("asc_onPluginClose", _.bind(this.pluginClose, this)); + }, + + onLaunch: function () { + }, + + setMode: function(mode) { + this.appConfig = mode; + }, + + + showPluginModal: function(plugin, variationIndex, frameId, urlAddition) { + var me = this, + isAndroid = Framework7.prototype.device.android === true, + mainView = DE.getController('Editor').getView('Editor').f7View, + isEdit = me.appConfig.isEdit; + + uiApp.closeModal(); + + var variation = plugin.get_Variations()[variationIndex]; + if (variation.get_Visual()) { + var url = variation.get_Url(); + url = ((plugin.get_BaseUrl().length == 0) ? url : plugin.get_BaseUrl()) + url; + if (urlAddition) + url += urlAddition; + var isCustomWindow = variation.get_CustomWindow(), + arrBtns = variation.get_Buttons(), + newBtns = [], + size = variation.get_Size(); //size[0] - width, size[1] - height + if (_.isArray(arrBtns)) { + _.each(arrBtns, function(b, index){ + if ((isEdit || b.isViewer !== false)) + newBtns[index] = { + text: b.text, + attributes: {result: index} + }; + }); + } + var modal = uiApp.modal({ + title: '', + text: '', + afterText: + '
'+ + '
', + buttons: isCustomWindow ? undefined : newBtns + }); + $('#plugin-frame').html('
'); + me.iframe = document.createElement("iframe"); + me.iframe.id = frameId; + me.iframe.name = 'pluginFrameEditor'; + me.iframe.width = '100%'; + me.iframe.height = '100%'; + me.iframe.align = "top"; + me.iframe.frameBorder = 0; + me.iframe.scrolling = "no"; + me.iframe.src = url; + setTimeout(function () { + $('#plugin-frame').html(me.iframe); + }, 100); + $$(modal).find('.modal-button').on('click', _.bind(me.onDlgBtnClick, me)); + $$(modal).css({ + margin: '0', + width: '90%', + left: '5%', + height: 'auto', + top: '20px', + }); + $$(modal).find('.modal-inner').css({padding: '0'}); + if (Common.SharedSettings.get('phone')) { + $$(modal).find('#plugin-frame').css({height: '240px'}); + } else { + $$(modal).find('#plugin-frame').css({height: '500px'}); + } + + if (Framework7.prototype.device.android === true) { + $$('.view.collaboration-root-view.navbar-through').removeClass('navbar-through').addClass('navbar-fixed'); + $$('.view.collaboration-root-view .navbar').prependTo('.view.collaboration-root-view > .pages > .page'); + } + + DE.getController('Toolbar').getView('Toolbar').hideSearch(); + } + }, + + onDlgBtnClick: function (e) { + var index = $(e.currentTarget).index(); + this.api.asc_pluginButtonClick(index); + }, + + pluginClose: function (plugin) { + if (this.iframe) { + this.iframe = null; + } + }, + + textCancel: 'Cancel', + textLoading: 'Loading' + } + })(), DE.Controllers.Plugins || {})) +}); \ No newline at end of file From c828e8072ce5ab8895ff13ce16362ad94bfa1c9a Mon Sep 17 00:00:00 2001 From: Julia Svinareva Date: Mon, 8 Jul 2019 09:45:19 +0300 Subject: [PATCH 2/4] [DE mobile] Fix plugin resize --- .../mobile/app/controller/Plugins.js | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/apps/documenteditor/mobile/app/controller/Plugins.js b/apps/documenteditor/mobile/app/controller/Plugins.js index 8afd29608..d9eaaa869 100644 --- a/apps/documenteditor/mobile/app/controller/Plugins.js +++ b/apps/documenteditor/mobile/app/controller/Plugins.js @@ -49,7 +49,8 @@ define([ DE.Controllers.Plugins = Backbone.Controller.extend(_.extend((function() { // Private - var rootView; + var rootView, + modal; return { models: [], @@ -65,6 +66,7 @@ define([ this.api = api; this.api.asc_registerCallback("asc_onPluginShow", _.bind(this.showPluginModal, this)); this.api.asc_registerCallback("asc_onPluginClose", _.bind(this.pluginClose, this)); + this.api.asc_registerCallback("asc_onPluginResize", _.bind(this.pluginResize, this)); }, onLaunch: function () { @@ -102,7 +104,7 @@ define([ }; }); } - var modal = uiApp.modal({ + modal = uiApp.modal({ title: '', text: '', afterText: @@ -133,9 +135,11 @@ define([ }); $$(modal).find('.modal-inner').css({padding: '0'}); if (Common.SharedSettings.get('phone')) { - $$(modal).find('#plugin-frame').css({height: '240px'}); + var height = Math.min(size[1], 240); + $$(modal).find('#plugin-frame').css({height: height + 'px'}); } else { - $$(modal).find('#plugin-frame').css({height: '500px'}); + var height = Math.min(size[1], 500); + $$(modal).find('#plugin-frame').css({height: height + 'px'}); } if (Framework7.prototype.device.android === true) { @@ -158,6 +162,16 @@ define([ } }, + pluginResize: function(size) { + if (Common.SharedSettings.get('phone')) { + var height = Math.min(size[1], 240); + $$(modal).find('#plugin-frame').css({height: height + 'px'}); + } else { + var height = Math.min(size[1], 500); + $$(modal).find('#plugin-frame').css({height: height + 'px'}); + } + }, + textCancel: 'Cancel', textLoading: 'Loading' } From d51f9be27d7ef526f7daf48126210c759b366b07 Mon Sep 17 00:00:00 2001 From: Julia Svinareva Date: Mon, 8 Jul 2019 13:24:28 +0300 Subject: [PATCH 3/4] [Common mobile] Add PluginsShow --- .../mobile/lib}/controller/Plugins.js | 21 ++++++++++--------- apps/documenteditor/mobile/app-dev.js | 8 +++---- apps/documenteditor/mobile/app.js | 8 +++---- apps/presentationeditor/mobile/app-dev.js | 2 ++ apps/presentationeditor/mobile/app.js | 2 ++ apps/spreadsheeteditor/mobile/app-dev.js | 2 ++ apps/spreadsheeteditor/mobile/app.js | 2 ++ 7 files changed, 27 insertions(+), 18 deletions(-) rename apps/{documenteditor/mobile/app => common/mobile/lib}/controller/Plugins.js (94%) diff --git a/apps/documenteditor/mobile/app/controller/Plugins.js b/apps/common/mobile/lib/controller/Plugins.js similarity index 94% rename from apps/documenteditor/mobile/app/controller/Plugins.js rename to apps/common/mobile/lib/controller/Plugins.js index d9eaaa869..d9e37a5d3 100644 --- a/apps/documenteditor/mobile/app/controller/Plugins.js +++ b/apps/common/mobile/lib/controller/Plugins.js @@ -33,12 +33,17 @@ /** * Plugins.js - * Document Editor * - * Created by Julia Svinareva on 1/7/19 + * Created by Julia Svinareva on 8/7/19 * Copyright (c) 2019 Ascensio System SIA. All rights reserved. * */ + +if (Common === undefined) + var Common = {}; + +Common.Controllers = Common.Controllers || {}; + define([ 'core', 'jquery', @@ -47,10 +52,9 @@ define([ ], function (core, $, _, Backbone) { 'use strict'; - DE.Controllers.Plugins = Backbone.Controller.extend(_.extend((function() { + Common.Controllers.Plugins = Backbone.Controller.extend(_.extend((function() { // Private - var rootView, - modal; + var modal; return { models: [], @@ -80,7 +84,6 @@ define([ showPluginModal: function(plugin, variationIndex, frameId, urlAddition) { var me = this, isAndroid = Framework7.prototype.device.android === true, - mainView = DE.getController('Editor').getView('Editor').f7View, isEdit = me.appConfig.isEdit; uiApp.closeModal(); @@ -131,7 +134,7 @@ define([ width: '90%', left: '5%', height: 'auto', - top: '20px', + top: '20px' }); $$(modal).find('.modal-inner').css({padding: '0'}); if (Common.SharedSettings.get('phone')) { @@ -146,8 +149,6 @@ define([ $$('.view.collaboration-root-view.navbar-through').removeClass('navbar-through').addClass('navbar-fixed'); $$('.view.collaboration-root-view .navbar').prependTo('.view.collaboration-root-view > .pages > .page'); } - - DE.getController('Toolbar').getView('Toolbar').hideSearch(); } }, @@ -175,5 +176,5 @@ define([ textCancel: 'Cancel', textLoading: 'Loading' } - })(), DE.Controllers.Plugins || {})) + })(), Common.Controllers.Plugins || {})) }); \ No newline at end of file diff --git a/apps/documenteditor/mobile/app-dev.js b/apps/documenteditor/mobile/app-dev.js index 02dfbce11..768ce7629 100644 --- a/apps/documenteditor/mobile/app-dev.js +++ b/apps/documenteditor/mobile/app-dev.js @@ -130,6 +130,7 @@ require([ nameSpace: 'DE', autoCreate: false, controllers : [ + 'Common.Controllers.Plugins', 'Editor', 'Toolbar', 'Search', @@ -150,8 +151,7 @@ require([ 'AddShape', 'AddImage', 'AddOther', - 'Collaboration', - 'Plugins' + 'Collaboration' ] }); @@ -201,6 +201,7 @@ require([ require([ 'common/main/lib/util/LocalStorage', 'common/main/lib/util/utils', + 'common/mobile/lib/controller/Plugins', 'documenteditor/mobile/app/controller/Editor', 'documenteditor/mobile/app/controller/Toolbar', 'documenteditor/mobile/app/controller/Search', @@ -221,8 +222,7 @@ require([ 'documenteditor/mobile/app/controller/add/AddShape', 'documenteditor/mobile/app/controller/add/AddImage', 'documenteditor/mobile/app/controller/add/AddOther', - 'documenteditor/mobile/app/controller/Collaboration', - 'documenteditor/mobile/app/controller/Plugins' + 'documenteditor/mobile/app/controller/Collaboration' ], function() { window.compareVersions = true; app.start(); diff --git a/apps/documenteditor/mobile/app.js b/apps/documenteditor/mobile/app.js index 2aaca7591..0b3aeb561 100644 --- a/apps/documenteditor/mobile/app.js +++ b/apps/documenteditor/mobile/app.js @@ -141,6 +141,7 @@ require([ nameSpace: 'DE', autoCreate: false, controllers : [ + 'Common.Controllers.Plugins', 'Editor', 'Toolbar', 'Search', @@ -161,8 +162,7 @@ require([ 'AddShape', 'AddImage', 'AddOther', - 'Collaboration', - 'Plugins' + 'Collaboration' ] }); @@ -212,6 +212,7 @@ require([ require([ 'common/main/lib/util/LocalStorage', 'common/main/lib/util/utils', + 'common/mobile/lib/controller/Plugins', 'documenteditor/mobile/app/controller/Editor', 'documenteditor/mobile/app/controller/Toolbar', 'documenteditor/mobile/app/controller/Search', @@ -232,8 +233,7 @@ require([ 'documenteditor/mobile/app/controller/add/AddShape', 'documenteditor/mobile/app/controller/add/AddImage', 'documenteditor/mobile/app/controller/add/AddOther', - 'documenteditor/mobile/app/controller/Collaboration', - 'documenteditor/mobile/app/controller/Plugins' + 'documenteditor/mobile/app/controller/Collaboration' ], function() { app.start(); }); diff --git a/apps/presentationeditor/mobile/app-dev.js b/apps/presentationeditor/mobile/app-dev.js index 411ac5c56..eb062d384 100644 --- a/apps/presentationeditor/mobile/app-dev.js +++ b/apps/presentationeditor/mobile/app-dev.js @@ -127,6 +127,7 @@ require([ nameSpace: 'PE', autoCreate: false, controllers : [ + 'Common.Controllers.Plugins', 'Editor', 'Toolbar', 'Search', @@ -195,6 +196,7 @@ require([ require([ 'common/main/lib/util/LocalStorage', 'common/main/lib/util/utils', + 'common/mobile/lib/controller/Plugins', 'presentationeditor/mobile/app/controller/Editor', 'presentationeditor/mobile/app/controller/Toolbar', 'presentationeditor/mobile/app/controller/Search', diff --git a/apps/presentationeditor/mobile/app.js b/apps/presentationeditor/mobile/app.js index b744ea4f9..5103851de 100644 --- a/apps/presentationeditor/mobile/app.js +++ b/apps/presentationeditor/mobile/app.js @@ -138,6 +138,7 @@ require([ nameSpace: 'PE', autoCreate: false, controllers : [ + 'Common.Controllers.Plugins', 'Editor', 'Toolbar', 'Search', @@ -206,6 +207,7 @@ require([ require([ 'common/main/lib/util/LocalStorage', 'common/main/lib/util/utils', + 'common/mobile/lib/controller/Plugins', 'presentationeditor/mobile/app/controller/Editor', 'presentationeditor/mobile/app/controller/Toolbar', 'presentationeditor/mobile/app/controller/Search', diff --git a/apps/spreadsheeteditor/mobile/app-dev.js b/apps/spreadsheeteditor/mobile/app-dev.js index 582d4473a..0a41b8910 100644 --- a/apps/spreadsheeteditor/mobile/app-dev.js +++ b/apps/spreadsheeteditor/mobile/app-dev.js @@ -112,6 +112,7 @@ require([ nameSpace: 'SSE', autoCreate: false, controllers : [ + 'Common.Controllers.Plugins', 'Editor', 'Toolbar', 'Search', @@ -184,6 +185,7 @@ require([ require([ 'common/main/lib/util/LocalStorage', 'common/main/lib/util/utils', + 'common/mobile/lib/controller/Plugins', 'spreadsheeteditor/mobile/app/controller/Editor', 'spreadsheeteditor/mobile/app/controller/Toolbar', 'spreadsheeteditor/mobile/app/controller/Search', diff --git a/apps/spreadsheeteditor/mobile/app.js b/apps/spreadsheeteditor/mobile/app.js index fa8717b31..1f518f056 100644 --- a/apps/spreadsheeteditor/mobile/app.js +++ b/apps/spreadsheeteditor/mobile/app.js @@ -123,6 +123,7 @@ require([ nameSpace: 'SSE', autoCreate: false, controllers : [ + 'Common.Controllers.Plugins', 'Editor', 'Toolbar', 'Search', @@ -195,6 +196,7 @@ require([ require([ 'common/main/lib/util/LocalStorage', 'common/main/lib/util/utils', + 'common/mobile/lib/controller/Plugins', 'spreadsheeteditor/mobile/app/controller/Editor', 'spreadsheeteditor/mobile/app/controller/Toolbar', 'spreadsheeteditor/mobile/app/controller/Search', From 2fc833ecd35b2d4b785ebdb4d36bd0d7198e112d Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 8 Jul 2019 13:56:26 +0300 Subject: [PATCH 4/4] [DE][DE mobile] Fix adding footnotes --- apps/documenteditor/main/app/controller/Links.js | 4 +++- apps/documenteditor/mobile/app/controller/add/AddOther.js | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/documenteditor/main/app/controller/Links.js b/apps/documenteditor/main/app/controller/Links.js index 51f697cfc..1e034c149 100644 --- a/apps/documenteditor/main/app/controller/Links.js +++ b/apps/documenteditor/main/app/controller/Links.js @@ -294,7 +294,9 @@ define([ if (settings) { me.api.asc_SetFootnoteProps(settings.props, settings.applyToAll); if (result == 'insert') - me.api.asc_AddFootnote(settings.custom); + setTimeout(function() { + me.api.asc_AddFootnote(settings.custom); + }, 1); } Common.NotificationCenter.trigger('edit:complete', me.toolbar); }, diff --git a/apps/documenteditor/mobile/app/controller/add/AddOther.js b/apps/documenteditor/mobile/app/controller/add/AddOther.js index 04ba5b122..8b14782a0 100644 --- a/apps/documenteditor/mobile/app/controller/add/AddOther.js +++ b/apps/documenteditor/mobile/app/controller/add/AddOther.js @@ -162,7 +162,9 @@ define([ props.put_NumRestart(Asc.c_oAscFootnoteRestart.Continuous); if (me.api) { me.api.asc_SetFootnoteProps(props, false); - me.api.asc_AddFootnote(); + setTimeout(function() { + me.api.asc_AddFootnote(); + }, 1); DE.getController('AddContainer').hideModal(); } },