Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ONLYOFFICE/onlyoffice-nextcloud.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorSergey Linnik <sergey.linnik@onlyoffice.com>2020-01-16 12:17:43 +0300
committerGitHub <noreply@github.com>2020-01-16 12:17:43 +0300
commit8100ca57f8a43324e4a550c050191c2bc34a785f (patch)
treea7ce49a327b68d836e937baeb27bd030798a065d /js
parent9afe41f8bf1ef8bc60645beed5b4423f4be7ac25 (diff)
parent4f788e907079812f45225cf239908e0489287b43 (diff)
Merge pull request #206 from ONLYOFFICE/feature/direct-editor
Feature/direct editor
Diffstat (limited to 'js')
-rw-r--r--js/directeditor.js76
-rw-r--r--js/editor.js44
2 files changed, 106 insertions, 14 deletions
diff --git a/js/directeditor.js b/js/directeditor.js
new file mode 100644
index 0000000..e29dabd
--- /dev/null
+++ b/js/directeditor.js
@@ -0,0 +1,76 @@
+/**
+ *
+ * (c) Copyright Ascensio System SIA 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
+ *
+ */
+
+(function (OCA) {
+
+ OCA.Onlyoffice = _.extend({}, OCA.Onlyoffice);
+
+ var callMobileMessage = function (messageName, attributes) {
+ var message = messageName
+ if (typeof attributes !== "undefined") {
+ message = {
+ MessageName: messageName,
+ Values: attributes,
+ };
+ }
+ var attributesString = null
+ try {
+ attributesString = JSON.stringify(attributes);
+ } catch (e) {
+ attributesString = null;
+ }
+
+ // Forward to mobile handler
+ if (window.DirectEditingMobileInterface && typeof window.DirectEditingMobileInterface[messageName] === "function") {
+ if (attributesString === null || typeof attributesString === "undefined") {
+ window.DirectEditingMobileInterface[messageName]();
+ } else {
+ window.DirectEditingMobileInterface[messageName](attributesString);
+ }
+ }
+
+ // iOS webkit fallback
+ if (window.webkit
+ && window.webkit.messageHandlers
+ && window.webkit.messageHandlers.DirectEditingMobileInterface) {
+ window.webkit.messageHandlers.DirectEditingMobileInterface.postMessage(message);
+ }
+
+ window.postMessage(message);
+ }
+
+ OCA.Onlyoffice.directEditor = {
+ close: function() {
+ callMobileMessage("close");
+ },
+ loaded: function() {
+ callMobileMessage("loaded");
+ }
+ };
+
+})(OCA);
diff --git a/js/editor.js b/js/editor.js
index b73cd17..ab9682a 100644
--- a/js/editor.js
+++ b/js/editor.js
@@ -41,10 +41,10 @@
};
var fileId = $("#iframeEditor").data("id");
- var filePath = $("#iframeEditor").data("path");
var shareToken = $("#iframeEditor").data("sharetoken");
+ var directToken = $("#iframeEditor").data("directtoken");
OCA.Onlyoffice.inframe = !!$("#iframeEditor").data("inframe");
- if (!fileId && !shareToken) {
+ if (!fileId && !shareToken && !directToken) {
displayError(t(OCA.Onlyoffice.AppName, "FileId is empty"));
return;
}
@@ -60,24 +60,29 @@
});
var params = [];
+ var filePath = $("#iframeEditor").data("path");
if (filePath) {
params.push("filePath=" + encodeURIComponent(filePath));
}
if (shareToken) {
params.push("shareToken=" + encodeURIComponent(shareToken));
}
+ if (directToken) {
+ $("html").addClass("onlyoffice-full-page");
+ params.push("directToken=" + encodeURIComponent(directToken));
+ }
- if (OCA.Onlyoffice.inframe) {
- var dsVersion = DocsAPI.DocEditor.version();
- var versionArray = dsVersion.split(".");
- if (versionArray[0] < 5 || versionArray[1] < 5) {
+ var dsVersion = DocsAPI.DocEditor.version();
+ var versionArray = dsVersion.split(".");
+ if (versionArray[0] < 5 || versionArray[1] < 5) {
+ if (OCA.Onlyoffice.inframe) {
window.parent.postMessage({
method: "editorShowHeaderButton"
});
- params.push("inframe=2");
- } else {
- params.push("inframe=1");
}
+ params.push("inframe=2");
+ } else if (OCA.Onlyoffice.inframe) {
+ params.push("inframe=1");
}
if (OCA.Onlyoffice.Desktop) {
@@ -132,16 +137,22 @@
config.events.onRequestCompareFile = OCA.Onlyoffice.onRequestCompareFile;
}
- if (OCA.Onlyoffice.inframe) {
+ if (OCA.Onlyoffice.directEditor || OCA.Onlyoffice.inframe) {
config.events.onRequestClose = OCA.Onlyoffice.onRequestClose;
- if (config._files_sharing && !shareToken) {
- config.events.onRequestSharingSettings = OCA.Onlyoffice.onRequestSharingSettings;
- }
+ }
+
+ if (OCA.Onlyoffice.inframe && config._files_sharing && !shareToken) {
+ config.events.onRequestSharingSettings = OCA.Onlyoffice.onRequestSharingSettings;
}
OCA.Onlyoffice.docEditor = new DocsAPI.DocEditor("iframeEditor", config);
- if (config.type === "mobile" && $("#app > iframe").css("position") === "fixed") {
+ if (OCA.Onlyoffice.directEditor) {
+ OCA.Onlyoffice.directEditor.loaded();
+ }
+
+ if (!OCA.Onlyoffice.directEditor
+ && config.type === "mobile" && $("#app > iframe").css("position") === "fixed") {
$("#app > iframe").css("height", "calc(100% - 50px)");
}
}
@@ -259,6 +270,11 @@
};
OCA.Onlyoffice.onRequestClose = function () {
+ if (OCA.Onlyoffice.directEditor) {
+ OCA.Onlyoffice.directEditor.close();
+ return;
+ }
+
window.parent.postMessage({
method: "editorRequestClose"
});