From 4e3f87f692fc6657bb3a82909c53b6051f891aa6 Mon Sep 17 00:00:00 2001 From: ZEROM22 Date: Mon, 23 Oct 2023 19:11:32 +0300 Subject: [PATCH] java-spring: onRequestOpen for referenceData source file --- .../controllers/FileController.java | 1 + .../onlyoffice/integration/dto/Reference.java | 1 + .../src/main/resources/templates/editor.html | 36 +++++++++++++++++-- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/controllers/FileController.java b/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/controllers/FileController.java index 315d8b1c..159b0eea 100755 --- a/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/controllers/FileController.java +++ b/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/controllers/FileController.java @@ -522,6 +522,7 @@ public class FileController { data.put("directUrl", body.getDirectUrl() ? documentManager.getDownloadUrl(fileName, false) : null); data.put("referenceData", referenceData); data.put("path", fileName); + data.put("link", storagePathBuilder.getServerUrl(true) + "/editor?fileName=" + fileName); if (jwtManager.tokenEnabled()) { String token = jwtManager.createToken(data); diff --git a/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/dto/Reference.java b/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/dto/Reference.java index 705d0d87..799ea7d9 100644 --- a/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/dto/Reference.java +++ b/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/dto/Reference.java @@ -28,6 +28,7 @@ import lombok.Setter; @AllArgsConstructor @NoArgsConstructor public class Reference { + private String windowName; private Boolean directUrl; private ReferenceData referenceData; private String path; diff --git a/web/documentserver-example/java-spring/src/main/resources/templates/editor.html b/web/documentserver-example/java-spring/src/main/resources/templates/editor.html index 3694fc32..774be409 100755 --- a/web/documentserver-example/java-spring/src/main/resources/templates/editor.html +++ b/web/documentserver-example/java-spring/src/main/resources/templates/editor.html @@ -166,15 +166,43 @@ } }; + var onRequestOpen = function(event) { // user open external data source + innerAlert("onRequestOpen"); + var windowName = event.data.windowName; + + requestReference(event.data, function (data) { + if (data.error) { + var winEditor = window.open("", windowName); + winEditor.close(); + innerAlert(data.error, true); + return; + } + + var link = data.link; + window.open(link, windowName); + }); + }; + var onRequestReferenceData = function(event) { // user refresh external data source - event.data.directUrl = !!config.document.directUrl; + innerAlert("onRequestReferenceData"); + + requestReference(event.data, function (data) { + docEditor.setReferenceData(data); + }); + }; + + var requestReference = function(data, callback) { + innerAlert(data); + + data.directUrl = !!config.document.directUrl; + let xhr = new XMLHttpRequest(); xhr.open("POST", "reference"); xhr.setRequestHeader("Content-Type", "application/json"); - xhr.send(JSON.stringify(event.data)); + xhr.send(JSON.stringify(data)); xhr.onload = function () { innerAlert(xhr.responseText); - docEditor.setReferenceData(JSON.parse(xhr.responseText)); + callback(JSON.parse(xhr.responseText)); } }; @@ -274,6 +302,8 @@ config.events['onRequestReferenceData'] = onRequestReferenceData; // prevent switch the document from the viewing into the editing mode for anonymous users config.events['onRequestEditRights'] = onRequestEditRights; + // add link to reference data source file + config.events['onRequestOpen'] = onRequestOpen; } if (config.editorConfig.createUrl) {