From b68b5436058405a5a7fda8ad1262ea7b74c8f781 Mon Sep 17 00:00:00 2001 From: sshakndr Date: Fri, 13 Dec 2024 16:00:18 +0700 Subject: [PATCH] feat(php): refresh file config --- CHANGELOG.md | 1 + web/documentserver-example/php/index.php | 5 +++ web/documentserver-example/php/src/ajax.php | 45 +++++++++++++++++++ .../php/src/helpers/ExampleUsers.php | 3 +- .../php/src/views/DocEditorView.php | 1 + .../php/templates/docEditor.tpl | 12 +++++ 6 files changed, 66 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 33cea4d0d..52e7b4895 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Change Log +- php: refresh config - ruby: refresh config - python: refresh config - java-spring: refresh config diff --git a/web/documentserver-example/php/index.php b/web/documentserver-example/php/index.php index 6617adfed..6fc54ab08 100755 --- a/web/documentserver-example/php/index.php +++ b/web/documentserver-example/php/index.php @@ -171,6 +171,11 @@ function routers() echo json_encode($response); return; } + if (str_starts_with($path, '/config')) { + $response = config(); + echo json_encode($response); + return; + } http_response_code(HTTPStatus::NotFound->value); } diff --git a/web/documentserver-example/php/src/ajax.php b/web/documentserver-example/php/src/ajax.php index 83516bacf..d8db3e5df 100644 --- a/web/documentserver-example/php/src/ajax.php +++ b/web/documentserver-example/php/src/ajax.php @@ -707,3 +707,48 @@ function formats() ]; } } + +function config() +{ + try { + $fileName = $_GET["fileName"]; + $directUrl = $_GET["directUrl"] == "true"; + $permissions = $_GET["permissions"]; + + if (!file_exists(getStoragePath($fileName))) { + throw new Exception("File not found ".$fileName); + } + + $config = [ + "document" => [ + "title" => $fileName, + "key" => getDocEditorKey($fileName), + "url" => getDownloadUrl($fileName), + "directUrl" => $directUrl ? getDownloadUrl($fileName, false) : null, + "permissions" => json_decode($permissions), + "referenceData" => [ + "fileKey" => json_encode([ + "fileName" => $fileName, + "userAddress" => getCurUserHostAddress() + ]), + "instanceId" => serverPath(), + ] + ], + "editorConfig" => [ + "mode" => "edit", + "callbackUrl" => getCallbackUrl($fileName) + ] + ]; + + $jwtManager = new JwtManager(); + if ($jwtManager->isJwtEnabled()) { + $config["token"] = $jwtManager->jwtEncode($config); + } + + return $config; + } catch (Exception $error) { + return [ + 'error' => $error->getMessage() + ]; + } +} diff --git a/web/documentserver-example/php/src/helpers/ExampleUsers.php b/web/documentserver-example/php/src/helpers/ExampleUsers.php index 59aac9d3a..55b5fda02 100644 --- a/web/documentserver-example/php/src/helpers/ExampleUsers.php +++ b/web/documentserver-example/php/src/helpers/ExampleUsers.php @@ -78,7 +78,8 @@ public function __construct() "Can't rename files from the editor", "Can't view chat", "View file without collaboration", - "Can’t submit forms" + "Can’t submit forms", + "Can’t refresh outdated file" ]; $this->users = [ new Users( diff --git a/web/documentserver-example/php/src/views/DocEditorView.php b/web/documentserver-example/php/src/views/DocEditorView.php index 519fd0874..bfdff87c0 100644 --- a/web/documentserver-example/php/src/views/DocEditorView.php +++ b/web/documentserver-example/php/src/views/DocEditorView.php @@ -254,6 +254,7 @@ public function __construct($request, $tempName = "docEditor") if ($user->id != "uid-0") { $historyLayout .= "// add mentions for not anonymous users + config.events['onRequestRefreshFile'] = onRequestRefreshFile; config.events['onRequestUsers'] = onRequestUsers; config.events['onRequestSaveAs'] = onRequestSaveAs; // the user is mentioned in a comment diff --git a/web/documentserver-example/php/templates/docEditor.tpl b/web/documentserver-example/php/templates/docEditor.tpl index b997c1cff..0d753adf9 100644 --- a/web/documentserver-example/php/templates/docEditor.tpl +++ b/web/documentserver-example/php/templates/docEditor.tpl @@ -116,6 +116,18 @@ }); }; + var onRequestRefreshFile = function(event) { + let xhr = new XMLHttpRequest(); + xhr.open("GET", "config?fileName=" + encodeURIComponent(config.document.title) + + "&directUrl=" + !!config.document.directUrl + + "&permissions=" + encodeURIComponent(JSON.stringify(config.document.permissions))); + xhr.send(); + xhr.onload = function () { + innerAlert(xhr.responseText); + docEditor.refreshFile(JSON.parse(xhr.responseText)); + }; + }; + var onRequestReferenceData = function(event) { // user refresh external data source innerAlert("onRequestReferenceData");