diff --git a/apps/api/documents/index.html.desktop b/apps/api/documents/index.html.desktop index 03edba6c18..28857deae0 100644 --- a/apps/api/documents/index.html.desktop +++ b/apps/api/documents/index.html.desktop @@ -58,8 +58,6 @@ editorConfig: cfg, events: { onInternalMessage: onInternalMessage, - onDocumentReady: onDocumentReady - } }); @@ -97,7 +95,7 @@ function getEditorConfig(urlParams) { return { customization : { - goback: { url: "callback" } + goback: { url: "onlyoffice.com" } }, mode : urlParams["mode"] || 'edit', lang : urlParams["lang"] || 'en', diff --git a/apps/common/main/lib/controller/Desktop.js b/apps/common/main/lib/controller/Desktop.js new file mode 100644 index 0000000000..a395d131ae --- /dev/null +++ b/apps/common/main/lib/controller/Desktop.js @@ -0,0 +1,77 @@ +/* + * + * (c) Copyright Ascensio System Limited 2010-2018 + * + * 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 Lubanas st. 125a-25, Riga, Latvia, + * EU, LV-1021. + * + * 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 + * + */ +/** + * Controller wraps up interaction with desktop app + * + * Created by Maxim.Kadushkin on 2/16/2018. + */ + +define([ + 'core' +], function () { + 'use strict'; + + var Desktop = function () { + var config = {}; + var app = window.AscDesktopEditor; + + // if ( app ) { + // app.execCommand('doc:onload', ''); + // } + + return { + init: function (opts) { + _.extend(config, opts); + + if ( config.isDesktopApp ) { + Common.NotificationCenter.on('app:ready', function (config) { + !!app && app.execCommand('doc:onready', ''); + }); + } + }, + process: function (opts) { + if ( opts == 'goback' ) { + if ( config.isDesktopApp && !!app ) { + app.execCommand('go:folder', + config.isOffline ? 'offline' : config.customization.goback.url); + return true; + } + + return false; + } + } + }; + }; + + Common.Controllers.Desktop = new Desktop(); +}); \ No newline at end of file diff --git a/apps/documenteditor/main/app.js b/apps/documenteditor/main/app.js index 1c13c3c9b7..67777e15ed 100644 --- a/apps/documenteditor/main/app.js +++ b/apps/documenteditor/main/app.js @@ -203,6 +203,7 @@ require([ ,'common/main/lib/controller/ExternalMergeEditor' ,'common/main/lib/controller/ReviewChanges' ,'common/main/lib/controller/Protection' + ,'common/main/lib/controller/Desktop' ], function() { app.start(); }); diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js index 5e0e20d500..8e94441c9e 100644 --- a/apps/documenteditor/main/app/controller/Main.js +++ b/apps/documenteditor/main/app/controller/Main.js @@ -314,6 +314,8 @@ define([ if (this.appOptions.location == 'us' || this.appOptions.location == 'ca') Common.Utils.Metric.setDefaultMetric(Common.Utils.Metric.c_MetricUnits.inch); + + Common.Controllers.Desktop.init(this.appOptions); }, loadDocument: function(data) { @@ -582,11 +584,7 @@ define([ }, goBack: function(blank) { - var me = this; - if ( me.appOptions.customization.goback.url == 'callback' ) { - Common.Gateway.internalMessage( 'goback', - {status: me.appOptions.isOffline ? 'offline' : 'online'} ); - } else { + if ( !Common.Controllers.Desktop.process('goback') ) { var href = this.appOptions.customization.goback.url; if (blank) { window.open(href, "_blank"); diff --git a/apps/documenteditor/main/app_dev.js b/apps/documenteditor/main/app_dev.js index 9450b3f551..2648611abd 100644 --- a/apps/documenteditor/main/app_dev.js +++ b/apps/documenteditor/main/app_dev.js @@ -193,6 +193,7 @@ require([ ,'common/main/lib/controller/ExternalMergeEditor' ,'common/main/lib/controller/ReviewChanges' ,'common/main/lib/controller/Protection' + ,'common/main/lib/controller/Desktop' ], function() { window.compareVersions = true; app.start(); diff --git a/apps/documenteditor/main/index.html.deploy b/apps/documenteditor/main/index.html.deploy index 1feaf1eb70..eaeb02bfa9 100644 --- a/apps/documenteditor/main/index.html.deploy +++ b/apps/documenteditor/main/index.html.deploy @@ -217,6 +217,10 @@ .replace(/>/g, '>'); } + if ( window.AscDesktopEditor ) { + window.AscDesktopEditor.execCommand('doc:onload', ''); + } + var params = getUrlParams(), lang = (params["lang"] || 'en').split(/[\-\_]/)[0], customer = params["customer"] ? ('
' + encodeUrlParam(params["customer"]) + '
') : '', diff --git a/apps/presentationeditor/main/app.js b/apps/presentationeditor/main/app.js index 88c9a9a382..330f222e6f 100644 --- a/apps/presentationeditor/main/app.js +++ b/apps/presentationeditor/main/app.js @@ -190,6 +190,7 @@ require([ 'common/main/lib/controller/ExternalDiagramEditor' ,'common/main/lib/controller/ReviewChanges' ,'common/main/lib/controller/Protection' + ,'common/main/lib/controller/Desktop' ], function() { app.start(); }); diff --git a/apps/presentationeditor/main/app/controller/Main.js b/apps/presentationeditor/main/app/controller/Main.js index 150a04afa1..3872875402 100644 --- a/apps/presentationeditor/main/app/controller/Main.js +++ b/apps/presentationeditor/main/app/controller/Main.js @@ -295,6 +295,8 @@ define([ if (this.appOptions.location == 'us' || this.appOptions.location == 'ca') Common.Utils.Metric.setDefaultMetric(Common.Utils.Metric.c_MetricUnits.inch); + + Common.Controllers.Desktop.init(this.appOptions); }, loadDocument: function(data) { @@ -394,10 +396,7 @@ define([ goBack: function(blank) { var me = this; - if ( me.appOptions.customization.goback.url == 'callback' ) { - Common.Gateway.internalMessage( 'goback', - {status: me.appOptions.isOffline ? 'offline' : 'online'} ); - } else { + if ( !Common.Controllers.Desktop.process('goback') ) { var href = me.appOptions.customization.goback.url; if (blank) { window.open(href, "_blank"); diff --git a/apps/presentationeditor/main/app_dev.js b/apps/presentationeditor/main/app_dev.js index d233029123..f87f4a08d0 100644 --- a/apps/presentationeditor/main/app_dev.js +++ b/apps/presentationeditor/main/app_dev.js @@ -181,6 +181,7 @@ require([ 'common/main/lib/controller/ExternalDiagramEditor' ,'common/main/lib/controller/ReviewChanges' ,'common/main/lib/controller/Protection' + ,'common/main/lib/controller/Desktop' ], function() { window.compareVersions = true; app.start(); diff --git a/apps/presentationeditor/main/index.html.deploy b/apps/presentationeditor/main/index.html.deploy index a07952daaf..cdb86c3cf9 100644 --- a/apps/presentationeditor/main/index.html.deploy +++ b/apps/presentationeditor/main/index.html.deploy @@ -217,6 +217,10 @@ .replace(/>/g, '>'); } + if ( window.AscDesktopEditor ) { + window.AscDesktopEditor.execCommand('doc:onload', ''); + } + var params = getUrlParams(), lang = (params["lang"] || 'en').split(/[\-\_]/)[0], customer = params["customer"] ? ('
' + encodeUrlParam(params["customer"]) + '
') : '', diff --git a/apps/spreadsheeteditor/main/app.js b/apps/spreadsheeteditor/main/app.js index 6a342e504a..13f09bb8fc 100644 --- a/apps/spreadsheeteditor/main/app.js +++ b/apps/spreadsheeteditor/main/app.js @@ -196,6 +196,7 @@ require([ 'common/main/lib/controller/Plugins' ,'common/main/lib/controller/ReviewChanges' ,'common/main/lib/controller/Protection' + ,'common/main/lib/controller/Desktop' ], function() { app.start(); }); diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index 9d5505a6d6..e84b3f6aac 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -335,6 +335,7 @@ define([ Common.Utils.Metric.setDefaultMetric(Common.Utils.Metric.c_MetricUnits.inch); this.isFrameClosed = (this.appOptions.isEditDiagram || this.appOptions.isEditMailMerge); + Common.Controllers.Desktop.init(this.appOptions); }, loadDocument: function(data) { @@ -429,10 +430,7 @@ define([ goBack: function(blank) { var me = this; - if ( me.appOptions.customization.goback.url == 'callback' ) { - Common.Gateway.internalMessage( 'goback', - {status: me.appOptions.isOffline ? 'offline' : 'online'} ); - } else { + if ( !Common.Controllers.Desktop.process('goback') ) { var href = me.appOptions.customization.goback.url; if (blank) { window.open(href, "_blank"); diff --git a/apps/spreadsheeteditor/main/app_dev.js b/apps/spreadsheeteditor/main/app_dev.js index 6971b85b8b..e0e30a0b49 100644 --- a/apps/spreadsheeteditor/main/app_dev.js +++ b/apps/spreadsheeteditor/main/app_dev.js @@ -186,6 +186,7 @@ require([ 'common/main/lib/controller/Plugins' ,'common/main/lib/controller/ReviewChanges' ,'common/main/lib/controller/Protection' + ,'common/main/lib/controller/Desktop' ], function() { window.compareVersions = true; app.start(); diff --git a/apps/spreadsheeteditor/main/index.html.deploy b/apps/spreadsheeteditor/main/index.html.deploy index 2d9f8e90aa..c64dfce31b 100644 --- a/apps/spreadsheeteditor/main/index.html.deploy +++ b/apps/spreadsheeteditor/main/index.html.deploy @@ -216,6 +216,10 @@ .replace(/>/g, '>'); } + if ( window.AscDesktopEditor ) { + window.AscDesktopEditor.execCommand('doc:onload', ''); + } + var params = getUrlParams(), lang = (params["lang"] || 'en').split(/[\-\_]/)[0], customer = params["customer"] ? ('
' + encodeUrlParam(params["customer"]) + '
') : '',