From 438728294970bf6d4448ce74ee1cdf6dd8a24ece Mon Sep 17 00:00:00 2001 From: ZEROM22 Date: Tue, 24 Oct 2023 11:06:01 +0300 Subject: [PATCH] java: onRequestOpen for referenceData source file --- .../main/java/controllers/IndexServlet.java | 1 + .../java/src/main/webapp/editor.jsp | 34 +++++++++++++++++-- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/web/documentserver-example/java/src/main/java/controllers/IndexServlet.java b/web/documentserver-example/java/src/main/java/controllers/IndexServlet.java index c10abfde..970db304 100755 --- a/web/documentserver-example/java/src/main/java/controllers/IndexServlet.java +++ b/web/documentserver-example/java/src/main/java/controllers/IndexServlet.java @@ -733,6 +733,7 @@ public class IndexServlet extends HttpServlet { data.put("directUrl", directUrl ? DocumentManager.getDownloadUrl(fileName, false) : null); data.put("referenceData", referenceData); data.put("path", fileName); + data.put("link", DocumentManager.getServerUrl(false) + "/EditorServlet?fileName=" + fileName); if (DocumentManager.tokenEnabled()) { String token = DocumentManager.createToken(data); diff --git a/web/documentserver-example/java/src/main/webapp/editor.jsp b/web/documentserver-example/java/src/main/webapp/editor.jsp index e90821d6..a93dedc5 100644 --- a/web/documentserver-example/java/src/main/webapp/editor.jsp +++ b/web/documentserver-example/java/src/main/webapp/editor.jsp @@ -165,15 +165,41 @@ } }; + 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", "IndexServlet?type=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)); } }; @@ -277,6 +303,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) {