From fa0aad779da2494f20c5f7b2a7ac9cf675e31c7d Mon Sep 17 00:00:00 2001 From: Sergey Linnik Date: Mon, 19 Feb 2018 13:44:14 +0300 Subject: [PATCH 001/141] nodejs: mailmerge --- web/documentserver-example/nodejs/app.js | 16 +++++++++++- .../nodejs/public/samples/csv.csv | 26 +++++++++++++++++++ .../nodejs/views/editor.ejs | 8 ++++++ 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 web/documentserver-example/nodejs/public/samples/csv.csv diff --git a/web/documentserver-example/nodejs/app.js b/web/documentserver-example/nodejs/app.js index 7265adb1..38b466af 100644 --- a/web/documentserver-example/nodejs/app.js +++ b/web/documentserver-example/nodejs/app.js @@ -321,6 +321,19 @@ app.delete("/file", function (req, res) { res.end(); }); +app.get("/csv", function (req, res) { + var fileName = "csv.csv"; + var csvPath = path.join(__dirname, "public", "samples", fileName); + + res.setHeader("Content-Length", fileSystem.statSync(csvPath).size); + res.setHeader("Content-Type", mime.lookup(csvPath)); + + res.setHeader("Content-Disposition", "attachment; filename*=UTF-8\'\'" + encodeURIComponent(fileName)); + + var filestream = fileSystem.createReadStream(csvPath); + filestream.pipe(res); +}) + app.post("/track", function (req, res) { docManager.init(storageFolder, req, res); @@ -636,7 +649,8 @@ app.get("/editor", function (req, res) { actionData: actionData }, history: history, - historyData: historyData + historyData: historyData, + mailMergeRecipientUrl: docManager.getServerUrl(true) + "/csv" }; if (cfgSignatureEnable) { diff --git a/web/documentserver-example/nodejs/public/samples/csv.csv b/web/documentserver-example/nodejs/public/samples/csv.csv new file mode 100644 index 00000000..20281da7 --- /dev/null +++ b/web/documentserver-example/nodejs/public/samples/csv.csv @@ -0,0 +1,26 @@ +Rank,Country,Gold,Silver,Bronze,Total +1,USA,46,37,38,121 +2,Great Britain,27,23,17,67 +3,China,26,18,26,70 +4,Russia,19,18,19,56 +5,Germany,17,10,15,42 +6,Japan,12,8,21,41 +7,France,10,18,14,42 +8,South Korea,9,3,9,21 +9,Italy,8,12,8,28 +10,Australia,8,11,10,29 +11,Netherlands,8,7,4,19 +12,Hungary,8,3,4,15 +13,Brazil,7,6,6,19 +14,Spain,7,4,6,17 +15,Kenya,6,6,1,13 +16,Jamaica,6,3,2,11 +17,Croatia,5,3,2,10 +18,Cuba,5,2,4,11 +19,New Zealand,4,9,5,18 +20,Canada,4,3,15,22 +21,Uzbekistan,4,2,7,13 +22,Kazakhstan,3,5,9,17 +23,Colombia,3,2,3,8 +24,Switzerland,3,2,2,7 +25,Iran,3,1,4,8 \ No newline at end of file diff --git a/web/documentserver-example/nodejs/views/editor.ejs b/web/documentserver-example/nodejs/views/editor.ejs index a7f9516d..a843e212 100644 --- a/web/documentserver-example/nodejs/views/editor.ejs +++ b/web/documentserver-example/nodejs/views/editor.ejs @@ -118,6 +118,13 @@ docEditor.setActionLink(replaceActionLink(location.href, linkParam)); }; + var onRequestMailMergeRecipients = function (event) { + docEditor.setMailMergeRecipients({ + "fileType": "csv", + "url": "<%- mailMergeRecipientUrl %>" + }); + }; + var connectEditor = function () { docEditor = new DocsAPI.DocEditor("iframeEditor", {<% include config %>, @@ -131,6 +138,7 @@ "onRequestHistoryClose": onRequestHistoryClose, "onOutdatedVersion": onOutdatedVersion, "onMakeActionLink": onMakeActionLink, + "onRequestMailMergeRecipients": onRequestMailMergeRecipients, } }); From bf8e59ddeebee1c099818a80f52bfac1ef7593c6 Mon Sep 17 00:00:00 2001 From: Sergey Linnik Date: Tue, 3 Nov 2020 14:57:42 +0300 Subject: [PATCH 002/141] csharp: new banner --- .../csharp/App_Themes/images/logo.png | Bin 5532 -> 0 bytes .../csharp/App_Themes/images/logo.svg | 15 +++++++++++++++ .../csharp/App_Themes/stylesheet.css | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) delete mode 100644 web/documentserver-example/csharp/App_Themes/images/logo.png create mode 100644 web/documentserver-example/csharp/App_Themes/images/logo.svg diff --git a/web/documentserver-example/csharp/App_Themes/images/logo.png b/web/documentserver-example/csharp/App_Themes/images/logo.png deleted file mode 100644 index a1d4b639cdb20b155496650f452a6578db5dd7a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5532 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 diff --git a/web/documentserver-example/csharp/App_Themes/images/logo.svg b/web/documentserver-example/csharp/App_Themes/images/logo.svg new file mode 100644 index 00000000..eaace216 --- /dev/null +++ b/web/documentserver-example/csharp/App_Themes/images/logo.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/web/documentserver-example/csharp/App_Themes/stylesheet.css b/web/documentserver-example/csharp/App_Themes/stylesheet.css index 00c390d8..17ceb167 100644 --- a/web/documentserver-example/csharp/App_Themes/stylesheet.css +++ b/web/documentserver-example/csharp/App_Themes/stylesheet.css @@ -44,7 +44,7 @@ a, a:hover, a:visited { .top-panel { - background: url("images/logo.png") no-repeat 30px center #3D4A6B; + background: url("images/logo.svg") no-repeat 30px center #3D4A6B; height: 80px; width: 100%; } From 928cc7480a64dac3c56184dd50324dfd6fb2f735 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Fri, 6 Nov 2020 11:10:39 +0300 Subject: [PATCH 003/141] nodejs: new banner --- .../nodejs/public/images/logo.png | Bin 5532 -> 0 bytes .../nodejs/public/images/logo.svg | 15 +++++++++++++++ .../nodejs/views/index.ejs | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) delete mode 100644 web/documentserver-example/nodejs/public/images/logo.png create mode 100644 web/documentserver-example/nodejs/public/images/logo.svg diff --git a/web/documentserver-example/nodejs/public/images/logo.png b/web/documentserver-example/nodejs/public/images/logo.png deleted file mode 100644 index a1d4b639cdb20b155496650f452a6578db5dd7a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5532 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 diff --git a/web/documentserver-example/nodejs/public/images/logo.svg b/web/documentserver-example/nodejs/public/images/logo.svg new file mode 100644 index 00000000..eaace216 --- /dev/null +++ b/web/documentserver-example/nodejs/public/images/logo.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/web/documentserver-example/nodejs/views/index.ejs b/web/documentserver-example/nodejs/views/index.ejs index 6132d362..3393bc46 100644 --- a/web/documentserver-example/nodejs/views/index.ejs +++ b/web/documentserver-example/nodejs/views/index.ejs @@ -33,7 +33,7 @@
- ONLYOFFICE + ONLYOFFICE
From 17f651c47af2094c844b68f91bd5ef4e3797fb6c Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Fri, 6 Nov 2020 11:29:47 +0300 Subject: [PATCH 004/141] java: new banner --- .../java/src/main/webapp/css/img/logo.png | Bin 5532 -> 0 bytes .../java/src/main/webapp/css/img/logo.svg | 15 +++++++++++++++ .../java/src/main/webapp/css/stylesheet.css | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) delete mode 100644 web/documentserver-example/java/src/main/webapp/css/img/logo.png create mode 100644 web/documentserver-example/java/src/main/webapp/css/img/logo.svg diff --git a/web/documentserver-example/java/src/main/webapp/css/img/logo.png b/web/documentserver-example/java/src/main/webapp/css/img/logo.png deleted file mode 100644 index a1d4b639cdb20b155496650f452a6578db5dd7a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5532 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 diff --git a/web/documentserver-example/java/src/main/webapp/css/img/logo.svg b/web/documentserver-example/java/src/main/webapp/css/img/logo.svg new file mode 100644 index 00000000..eaace216 --- /dev/null +++ b/web/documentserver-example/java/src/main/webapp/css/img/logo.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/web/documentserver-example/java/src/main/webapp/css/stylesheet.css b/web/documentserver-example/java/src/main/webapp/css/stylesheet.css index a02a487a..6e3f8771 100644 --- a/web/documentserver-example/java/src/main/webapp/css/stylesheet.css +++ b/web/documentserver-example/java/src/main/webapp/css/stylesheet.css @@ -44,7 +44,7 @@ a, a:hover, a:visited { .top-panel { - background: url("img/logo.png") no-repeat 30px center #3D4A6B; + background: url("img/logo.svg") no-repeat 30px center #3D4A6B; height: 80px; width: 100%; } From 67b93909acacab4af3c9afa1bf1ddd6e2123556e Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Mon, 9 Nov 2020 11:10:34 +0300 Subject: [PATCH 005/141] java: mailmerge --- .../main/java/controllers/EditorServlet.java | 1 + .../main/java/controllers/IndexServlet.java | 54 ++++++++++++++++--- .../java/src/main/resources/csv.csv | 26 +++++++++ .../java/src/main/webapp/editor.jsp | 8 +++ 4 files changed, 83 insertions(+), 6 deletions(-) create mode 100644 web/documentserver-example/java/src/main/resources/csv.csv diff --git a/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java b/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java index 3fb458ce..330a76ae 100644 --- a/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java +++ b/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java @@ -79,6 +79,7 @@ public class EditorServlet extends HttpServlet request.setAttribute("file", file); request.setAttribute("docserviceApiUrl", ConfigManager.GetProperty("files.docservice.url.api")); + request.setAttribute("mailMergeRecipientUrl", DocumentManager.GetServerUrl() + "/IndexServlet?type=csv"); request.getRequestDispatcher("editor.jsp").forward(request, response); } 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 4b18d1c5..cc637f78 100644 --- a/web/documentserver-example/java/src/main/java/controllers/IndexServlet.java +++ b/web/documentserver-example/java/src/main/java/controllers/IndexServlet.java @@ -30,13 +30,13 @@ import helpers.ConfigManager; import helpers.CookieManager; import helpers.DocumentManager; import helpers.ServiceConverter; -import java.io.File; -import java.io.FileOutputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.io.PrintWriter; + +import java.io.*; +import java.net.URISyntaxException; import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.LinkedHashMap; import java.util.Scanner; import javax.servlet.ServletException; @@ -86,6 +86,9 @@ public class IndexServlet extends HttpServlet case "remove": Remove(request, response, writer); break; + case "csv": + CSV(request, response, writer); + break; } } @@ -221,6 +224,45 @@ public class IndexServlet extends HttpServlet } } + + private static void CSV(HttpServletRequest request, HttpServletResponse response, PrintWriter writer) + { + String fileName = "csv.csv"; + URL fileUrl = Thread.currentThread().getContextClassLoader().getResource(fileName); + Path filePath = null; + String fileType = null; + try { + filePath = Paths.get(fileUrl.toURI()); + fileType = Files.probeContentType(filePath); + } catch (URISyntaxException | IOException e) { + e.printStackTrace(); + } + + File file = new File(String.valueOf(filePath)); + + response.setHeader("Content-Length", String.valueOf(file.length())); + response.setHeader("Content-Type", fileType); + response.setHeader("Content-Disposition", "attachment; filename*=UTF-8\'\'" + fileName); + + BufferedInputStream inputStream = null; + try { + FileInputStream fileInputStream = new FileInputStream(file); + inputStream = new BufferedInputStream(fileInputStream); + int readBytes = 0; + while ((readBytes = inputStream.read()) != -1) + writer.write(readBytes); + }catch (Exception e){ + e.printStackTrace(); + }finally { + try { + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + private static void Track(HttpServletRequest request, HttpServletResponse response, PrintWriter writer) { String userAddress = request.getParameter("userAddress"); diff --git a/web/documentserver-example/java/src/main/resources/csv.csv b/web/documentserver-example/java/src/main/resources/csv.csv new file mode 100644 index 00000000..20281da7 --- /dev/null +++ b/web/documentserver-example/java/src/main/resources/csv.csv @@ -0,0 +1,26 @@ +Rank,Country,Gold,Silver,Bronze,Total +1,USA,46,37,38,121 +2,Great Britain,27,23,17,67 +3,China,26,18,26,70 +4,Russia,19,18,19,56 +5,Germany,17,10,15,42 +6,Japan,12,8,21,41 +7,France,10,18,14,42 +8,South Korea,9,3,9,21 +9,Italy,8,12,8,28 +10,Australia,8,11,10,29 +11,Netherlands,8,7,4,19 +12,Hungary,8,3,4,15 +13,Brazil,7,6,6,19 +14,Spain,7,4,6,17 +15,Kenya,6,6,1,13 +16,Jamaica,6,3,2,11 +17,Croatia,5,3,2,10 +18,Cuba,5,2,4,11 +19,New Zealand,4,9,5,18 +20,Canada,4,3,15,22 +21,Uzbekistan,4,2,7,13 +22,Kazakhstan,3,5,9,17 +23,Colombia,3,2,3,8 +24,Switzerland,3,2,2,7 +25,Iran,3,1,4,8 \ No newline at end of file diff --git a/web/documentserver-example/java/src/main/webapp/editor.jsp b/web/documentserver-example/java/src/main/webapp/editor.jsp index 146255db..a45be13f 100644 --- a/web/documentserver-example/java/src/main/webapp/editor.jsp +++ b/web/documentserver-example/java/src/main/webapp/editor.jsp @@ -95,6 +95,13 @@ docEditor.setActionLink(replaceActionLink(location.href, linkParam)); }; + var onRequestMailMergeRecipients = function (event) { + docEditor.setMailMergeRecipients({ + "fileType": "csv", + "url": "${mailMergeRecipientUrl}" + }); + }; + var config = JSON.parse('<%= FileModel.Serialize(Model) %>'); config.width = "100%"; config.height = "100%"; @@ -105,6 +112,7 @@ "onError": onError, "onOutdatedVersion": onOutdatedVersion, "onMakeActionLink": onMakeActionLink, + "onRequestMailMergeRecipients": onRequestMailMergeRecipients, }; <% From ba3b3b4ce62325953ac3a09b8db25b3a6cc8cf08 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Wed, 11 Nov 2020 14:15:54 +0300 Subject: [PATCH 006/141] java: fix cors --- .../java/src/main/webapp/WEB-INF/web.xml | 34 +++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/web/documentserver-example/java/src/main/webapp/WEB-INF/web.xml b/web/documentserver-example/java/src/main/webapp/WEB-INF/web.xml index ee731160..a1469c8b 100644 --- a/web/documentserver-example/java/src/main/webapp/WEB-INF/web.xml +++ b/web/documentserver-example/java/src/main/webapp/WEB-INF/web.xml @@ -1,13 +1,33 @@ + + CorsFilter + org.apache.catalina.filters.CorsFilter + + cors.allowed.origins + * + + + cors.allowed.methods + GET + + + cors.support.credentials + false + + + cors.exposed.headers + Access-Control-Allow-Origin,Access-Control-Allow-Methods + + + + CorsFilter + /* + - - 30 - + 30 - - controllers.GlobalServletContextListener - + controllers.GlobalServletContextListener - \ No newline at end of file + From 0512243be073f4d4eabc74f059c002fbfdf44e5c Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 12 Nov 2020 10:28:38 +0300 Subject: [PATCH 007/141] java: fix-history --- .../main/java/controllers/IndexServlet.java | 2 +- .../src/main/java/entities/FileModel.java | 24 ++++++++----------- .../main/java/helpers/DocumentManager.java | 2 +- .../java/src/main/webapp/editor.jsp | 2 +- 4 files changed, 13 insertions(+), 17 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 ec8c6b2a..db9022e9 100644 --- a/web/documentserver-example/java/src/main/java/controllers/IndexServlet.java +++ b/web/documentserver-example/java/src/main/java/controllers/IndexServlet.java @@ -314,7 +314,7 @@ public class IndexServlet extends HttpServlet try { String histDir = DocumentManager.HistoryDir(storagePath); - String versionDir = DocumentManager.VersionDir(histDir, DocumentManager.GetFileVersion(histDir) + 1); + String versionDir = DocumentManager.VersionDir(histDir, DocumentManager.GetFileVersion(histDir)); File ver = new File(versionDir); File toSave = new File(storagePath); diff --git a/web/documentserver-example/java/src/main/java/entities/FileModel.java b/web/documentserver-example/java/src/main/java/entities/FileModel.java index 53840daf..1003d8d6 100644 --- a/web/documentserver-example/java/src/main/java/entities/FileModel.java +++ b/web/documentserver-example/java/src/main/java/entities/FileModel.java @@ -20,11 +20,7 @@ package entities; import java.io.File; import java.io.FileInputStream; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Scanner; -import java.util.Set; +import java.util.*; import helpers.DocumentManager; import helpers.ServiceConverter; @@ -107,13 +103,13 @@ public class FileModel if (DocumentManager.GetFileVersion(histDir) > 0) { Integer curVer = DocumentManager.GetFileVersion(histDir); - Set hist = new HashSet(); + List hist = new ArrayList<>(); Map histData = new HashMap(); - for (Integer i = 0; i <= curVer; i++) { + for (Integer i = 1; i <= curVer; i++) { Map obj = new HashMap(); Map dataObj = new HashMap(); - String verDir = DocumentManager.VersionDir(histDir, i + 1); + String verDir = DocumentManager.VersionDir(histDir, i); try { String key = null; @@ -123,7 +119,7 @@ public class FileModel obj.put("key", key); obj.put("version", i); - if (i == 0) { + if (i == 1) { String createdInfo = readFileToEnd(new File(histDir + File.separator + "createdInfo.json")); JSONObject json = (JSONObject) parser.parse(createdInfo); @@ -138,8 +134,8 @@ public class FileModel dataObj.put("url", i == curVer ? document.url : DocumentManager.GetPathUri(verDir + File.separator + "prev" + FileUtility.GetFileExtension(document.title))); dataObj.put("version", i); - if (i > 0) { - JSONObject changes = (JSONObject) parser.parse(readFileToEnd(new File(DocumentManager.VersionDir(histDir, i) + File.separator + "changes.json"))); + if (i > 1) { + JSONObject changes = (JSONObject) parser.parse(readFileToEnd(new File(DocumentManager.VersionDir(histDir, i-1) + File.separator + "changes.json"))); JSONObject change = (JSONObject) ((JSONArray) changes.get("changes")).get(0); obj.put("changes", changes.get("changes")); @@ -147,16 +143,16 @@ public class FileModel obj.put("created", change.get("created")); obj.put("user", change.get("user")); - Map prev = (Map) histData.get(Integer.toString(i - 1)); + Map prev = (Map) histData.get(Integer.toString(i - 2)); Map prevInfo = new HashMap(); prevInfo.put("key", prev.get("key")); prevInfo.put("url", prev.get("url")); dataObj.put("previous", prevInfo); - dataObj.put("changesUrl", DocumentManager.GetPathUri(DocumentManager.VersionDir(histDir, i) + File.separator + "diff.zip")); + dataObj.put("changesUrl", DocumentManager.GetPathUri(DocumentManager.VersionDir(histDir, i-1) + File.separator + "diff.zip")); } hist.add(obj); - histData.put(Integer.toString(i), dataObj); + histData.put(Integer.toString(i-1), dataObj); } catch (Exception ex) { } } diff --git a/web/documentserver-example/java/src/main/java/helpers/DocumentManager.java b/web/documentserver-example/java/src/main/java/helpers/DocumentManager.java index 5641ec04..ead6ce15 100644 --- a/web/documentserver-example/java/src/main/java/helpers/DocumentManager.java +++ b/web/documentserver-example/java/src/main/java/helpers/DocumentManager.java @@ -165,7 +165,7 @@ public class DocumentManager } }); - return dirs.length; + return dirs.length+1; } public static int GetFileVersion(String fileName, String userAddress) diff --git a/web/documentserver-example/java/src/main/webapp/editor.jsp b/web/documentserver-example/java/src/main/webapp/editor.jsp index 535d35ed..4e1b2568 100644 --- a/web/documentserver-example/java/src/main/webapp/editor.jsp +++ b/web/documentserver-example/java/src/main/webapp/editor.jsp @@ -111,7 +111,7 @@ config.events['onRequestHistoryData'] = function (event) { var ver = event.data; var histData = <%= historyData %>; - docEditor.setHistoryData(histData[ver]); + docEditor.setHistoryData(histData[ver-1]); }; config.events['onRequestHistoryClose'] = function () { document.location.reload(); From 1dc5e67da6ccaa338e3fb0c5b959bb16a5aac31b Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Fri, 13 Nov 2020 11:48:40 +0300 Subject: [PATCH 008/141] php: fix cors --- web/documentserver-example/php/web.config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/web/documentserver-example/php/web.config b/web/documentserver-example/php/web.config index 98b6a33b..8a04302a 100644 --- a/web/documentserver-example/php/web.config +++ b/web/documentserver-example/php/web.config @@ -7,5 +7,10 @@ + + + + + From ee077978b9a7762c90e5ba7bcdf913bc1572bf3e Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Fri, 13 Nov 2020 14:32:14 +0300 Subject: [PATCH 009/141] php: fix-history --- web/documentserver-example/php/common.php | 2 +- web/documentserver-example/php/doceditor.php | 18 +++++++++--------- .../php/webeditor-ajax.php | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/web/documentserver-example/php/common.php b/web/documentserver-example/php/common.php index 061d3174..e1bd42f9 100644 --- a/web/documentserver-example/php/common.php +++ b/web/documentserver-example/php/common.php @@ -214,7 +214,7 @@ function getFileVersion($histDir) { if (!file_exists($histDir) || !is_dir($histDir)) return 0; $cdir = scandir($histDir); - $ver = 0; + $ver = 1; foreach($cdir as $key => $fileName) { if (!in_array($fileName,array(".", ".."))) { if (is_dir($histDir . DIRECTORY_SEPARATOR . $fileName)) { diff --git a/web/documentserver-example/php/doceditor.php b/web/documentserver-example/php/doceditor.php index fe1ac507..8797eff7 100644 --- a/web/documentserver-example/php/doceditor.php +++ b/web/documentserver-example/php/doceditor.php @@ -150,16 +150,16 @@ $hist = []; $histData = []; - for ($i = 0; $i <= $curVer; $i++) { + for ($i = 1; $i <= $curVer; $i++) { $obj = []; $dataObj = []; - $verDir = getVersionDir($histDir, $i + 1); + $verDir = getVersionDir($histDir, $i); $key = $i == $curVer ? $docKey : file_get_contents($verDir . DIRECTORY_SEPARATOR . "key.txt"); $obj["key"] = $key; $obj["version"] = $i; - if ($i == 0) { + if ($i == 1) { $createdInfo = file_get_contents($histDir . DIRECTORY_SEPARATOR . "createdInfo.json"); $json = json_decode($createdInfo, true); @@ -176,8 +176,8 @@ $dataObj["url"] = $i == $curVer ? $fileuri : getVirtualPath(true) . str_replace("%5C", "/", rawurlencode($prevFileName)); $dataObj["version"] = $i; - if ($i > 0) { - $changes = json_decode(file_get_contents(getVersionDir($histDir, $i) . DIRECTORY_SEPARATOR . "changes.json"), true); + if ($i > 1) { + $changes = json_decode(file_get_contents(getVersionDir($histDir, $i-1) . DIRECTORY_SEPARATOR . "changes.json"), true); $change = $changes["changes"][0]; $obj["changes"] = $changes["changes"]; @@ -185,19 +185,19 @@ $obj["created"] = $change["created"]; $obj["user"] = $change["user"]; - $prev = $histData[$i -1]; + $prev = $histData[$i-2]; $dataObj["previous"] = [ "key" => $prev["key"], "url" => $prev["url"] ]; - $changesUrl = getVersionDir($histDir, $i) . DIRECTORY_SEPARATOR . "diff.zip"; + $changesUrl = getVersionDir($histDir, $i-1) . DIRECTORY_SEPARATOR . "diff.zip"; $changesUrl = substr($changesUrl, strlen(getStoragePath(""))); $dataObj["changesUrl"] = getVirtualPath(true) . str_replace("%5C", "/", rawurlencode($changesUrl)); } array_push($hist, $obj); - $histData[$i] = $dataObj; + $histData[$i-1] = $dataObj; } $out = []; @@ -342,7 +342,7 @@ config.events['onRequestHistoryData'] = function (event) { var ver = event.data; var histData = ; - docEditor.setHistoryData(histData[ver]); + docEditor.setHistoryData(histData[ver-1]); }; config.events['onRequestHistoryClose'] = function () { document.location.reload(); diff --git a/web/documentserver-example/php/webeditor-ajax.php b/web/documentserver-example/php/webeditor-ajax.php index 20052982..b14070b3 100644 --- a/web/documentserver-example/php/webeditor-ajax.php +++ b/web/documentserver-example/php/webeditor-ajax.php @@ -200,7 +200,7 @@ function track() { } else { $storagePath = getStoragePath($fileName, $userAddress); $histDir = getHistoryDir($storagePath); - $verDir = getVersionDir($histDir, getFileVersion($histDir) + 1); + $verDir = getVersionDir($histDir, getFileVersion($histDir)); mkdir($verDir); From 47c0b04de1020f516bba99b82281b074cb1c107c Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Fri, 13 Nov 2020 14:38:45 +0300 Subject: [PATCH 010/141] php: new banner --- .../php/css/images/logo.png | Bin 5532 -> 0 bytes .../php/css/images/logo.svg | 15 +++++++++++++++ web/documentserver-example/php/index.php | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) delete mode 100644 web/documentserver-example/php/css/images/logo.png create mode 100644 web/documentserver-example/php/css/images/logo.svg diff --git a/web/documentserver-example/php/css/images/logo.png b/web/documentserver-example/php/css/images/logo.png deleted file mode 100644 index a1d4b639cdb20b155496650f452a6578db5dd7a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5532 zcmai22{csg|2OuEh*I{kE9+n^W5&J>Mz$y+)68Hpo0*X%3Y9&3WCz4y7#b3WhCcfa@CC)(D=oco~AK_(_9Zn%YsJ!9Nv zTwqRi#vNBIi)0LfRMWFm2cjp{A4$eA8KQ|7F+eyT>4mY!Akl%oGz^r9iDeG!c$Rt= zVGThM@yf`3jB)^;#E@oUg6ap5kSHGv6?hTjg(biwSL+%jfmk$5(ix0UMUad!-dKwu zGR7gu#t{|dgVI4u>gxfa0T2cO9z#U}1MoNk1rh+0{DT+5c-~)Dkp%t$q58li|1|0> z!WL*uBx8VJWpyQ#DhLGB)Kms(fHgHiia<40keZ4rGWdk_=1#bOBHLO-rEs6(&Z&R05DB6_B#(zDs`q(Wu`zk{=oO zhjKJZ1%t!jF$5}wfd&1>GNOb){D%J{Egt_HO`+Oj{^Q#}qA8AnB#eqZhC=isqZmo{ zl-f6o1TiLKkW?bskx0b-9dTQ4B9%z-CX#^04w^uDXDk6t^rxKsFFeKsNyWe<8PV5N zQdL(1fgC~V5DhJex|)KjIz(0VPbh+j#(D<+BUA?hQvV+)BlTz`75V>y(I|)~k&H(& z;*Z_0RuvM#>kn-R1O!f?P>}=_25thAWVoh`#iAjm8YY@*U=uY{EiFwD$P}!tqoJV# z27%So4MB|IPfHoHCPb9qeir_gMgK=u{av=y<5EBd;dl`c^BNOq!KXL)V{<|%z z|H}85Ec)MV0sX723d0zc{p$R$YW;hO(E|IAzk81{`Q5!30;6TgjNXh`o;71)I${Mk zF?0+VT5>y-jd(9K=A{aAy?E!OXQEw_>91}*e{&2mZC#5 z9qlDI5_yZ%%2t*ynjA>_l4aStS2lpp0w|1Va zo*#4ZNhr?CGjPZ^fzwh|-?Lh#%7-i1<(nLFjpmby8D~uGSe^4tqOaMz2+V&8U``JF zq%*uY-gmr)rv#A7yal)bAmVWs))x(6Q7+uJ`6jP0f}lN_fa`&}d?Z1ps{2cd`JOCK z0F(h3d0EhuBx7lmI(|!U5dNV_s;SbzIGyGXmtqDcv+ zKTSSQ2X<-4)*fz|F*WW9dQAkr)=}ij?t>m#RdNmDY=%ee79rXm-t0(d!bFT8PbAdz zG#7j{syptTA1HdiHk-`}5F3h}-`G`*GQ$6ekNx(O@2l_|Y}e4Bb*lA0CKmK_}fpq&aQ z9{5vNj%(h7Iix(F3{`rN$AO-MJu#fVO;it#C;H^N5z$17}%2z@xCKZdZ%vI|UmXn0u`i|_bTPuR&4kJD{Yn-fd8nc4N`-T4$gvN7q&IW24Mu1j5NWj74 zUR=)lszHc^;u+~`gAGwAht@12txH{C2FLVV=xTNAA+8uY^JdqSPNm%>c=c4|XvSwt zjklGxPnbm0O4FP9@E`ke?p+fvrCro-uOIT0u-X)oSkleAf9%EgK{}JfOFab{?b#Py zpQ>(Y6VQ5anpgj*Jc_rGnm8(_ z6XnE-l(M~gbRaOs<5_Ro#5b-+tZEEjA5S&t8Mr~;l{5b0oOg+pfAp~rf^@2@0zh&( zz#-E#=|$Ghjq1ieXfex`ON)^fci|3q$2K(^;M2%REZ>c>3!(MJqD6OA?hH<|)Bv_= z(m(5(c$X*p&Wm6T#%}?=eb;J2)2h5zn=tH=W9vdr5#d%3@6q+4PV_L#SW#-IbV#XoLM)oG_r+FpSS&BwFIpnC-v7aeoXhi z9HS7ZT(Gx9l{(bQg1jogNqK3StZ-!PEixk<%5!Jr5$?9YLah$2EK3?0%d!obw56X` zTH%?&y7lso$ODhzwQ0f1yB;F^cQu(=Q3V}*WT%&W7qA%#3sTa^UAMyY*2m}+Pl2A? zxhCnPOn+FQZ6bRM^?5z@QS9Zs_i7_@+_z=na>}rulNBRBn46^(C)19IQ1ZE^9;8~o z9V+y*TsxIqp3A%~R+3v)S)*TOF+1*LKQSPyACCLf(gFpCCK>4Ev7IOm^A8J>UldEt zSZGssS3W?YkP!j{D6doNRd3{JJ*D95(ixZO7fdg=^bJ3=Y`w34b*9)s2Qf+*x7RyFdMZ2Ibj z-Q#?UtBw@%uc!=cX%q#1Sa|s;1{yObfa$kSvU(6?{J+2!@4jC?0_HJ?eTR_Ct9z0l5KV|n9F zSF`ha`-N_#-Ue2-@1d??%{@7P&5@0Fx167~h}0fd75K=U&DzZz*u*t%^BNmhvkoA~ z;KrNtZ^nM-=Vtb?Epme$=WHalwV!J%V;X(FbBDK{@3r5$UCi+tfuDXT4}m{Qp6~m- zp!!&GG~ae*ucu5SWY>&S_U4xWxZE~De7&HHyJ`ZdWudh&zqL&Xxs<-j^NwAa!;%GL z;5;&HaUH;Y5UTxd^J%B?;cU--jnxm11u2Rwtj{UTy$dCujXs)a-EQ$HcU~u)13wQ; z=UrYKmM&c4xwYjiyo~tPDta|mr_nZ@mRuekQ1nJ7Y+P2{jmxKbD5;aCE&f%;>kuBW zq#FcZZY|BAe1sO>KQII`mCG#KC|EJc9#~+zU-f+xKJ z#MzO~7VU`T?WdO)di(j4pC3At(X}dTc!#~Lsj^oC%tC)@6);-?^{Zq1=B{*^@piG0 z>b|pvf#OlPE|rdSd}QItVKrtM^xFi0r`~(D;jR~J*RZ238azU;+5u+5#_i!}TSZfB z?)s&iJz90Lu(Eu;WL%8m~!i+qzF(ihGv!sNw~UYTGTrRI6gfmreHWPX%hw&PTSF zt9qHwP;2tLI__q*#;v|(F+u&BlVSm$5UaKP+0Mbmdr}3LBYk7on*FdKUmy1_o@%b_ z?|5@^(dNa+jE^#?+ z+;yj`XoO9^vikM6wMWuB9!Pf|xeD+nW4<}(oLHOF;>{f>@U-qs$Xi?lds3r)}aG{56%U$ns+nTKN!R+s^` zLgZ2A@<&F#m>>6t3V1B<-ERek=g_lGu9tQ3b5psN%Vvi#utVse(xaed}_vkzoFics8n zL(i()sMS}#cBz49_kTdrS?P${TiGl>0?I_EfZ`#vOP0^Heq}WVwAiZocvqi0F07vN z!PR_B_}kZkx?FEdvA5m01KQ^@b>DdIok-0n<}5RbHV&VI4F=zx&H9#b8Q1%v69h`B ze17eP&aGJ=*kEb#R1CU%70Lf=In9q9|8_aupyTk%K-CA6#u*wa4~1aZ@4lOm+w#5! zYcSel8p@5H5KOOVk$?s5Rh+5d3_M+(fBgUr%9OfUph&K9d<-EhtbX=8Wj7f*zRNx$ z-cFb8Z$2_KRew8Lyo<7wmbs@IE$lO~=aup(&i&3KYpRT;2%oEe#j;gM)NJd9N=$by z3r`ZHKR6eSpLNAB-5|zXig;Dwd|@METx0~ zyj`JxQgogURPf1?)#n(CS=T5U&<-I=tbB4k4$FNZB6lIGI&SK7;3EB8$3)%bzN;6r zaq%g5`{N*<;?)YgDG zA?mYA*|DVad@{KgN(LKE-%g~jf)aZRX!;ZAxWy!1o7EH8VEyopgz9#M@Kw2tcPdHi ziFmokt$~H)Pq*mztTHDWJ|>}FqnG0FKN&e};lws|Q=dr%UMyv{|Kqn)oPjOdTcvWbUPr$B? z*0J51=})3>nn)v5W5Hc}{AaOOy%p=WQsB>LS17Knj}hVKB)3!dts(4j>#2tu56`of z0yNS;vTblYlz0+mkmE#6Zjpu`G|)5SS2yniUF4=1Cm`I9BzH@@uzs(^ZJTIQGi{ZhE8jY*l2NBI8%HnrPd diff --git a/web/documentserver-example/php/css/images/logo.svg b/web/documentserver-example/php/css/images/logo.svg new file mode 100644 index 00000000..eaace216 --- /dev/null +++ b/web/documentserver-example/php/css/images/logo.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/web/documentserver-example/php/index.php b/web/documentserver-example/php/index.php index 6785938f..91baf573 100644 --- a/web/documentserver-example/php/index.php +++ b/web/documentserver-example/php/index.php @@ -60,7 +60,7 @@
- ONLYOFFICE + ONLYOFFICE
From 9b7d54fdfb671955499a272ddf4a936a64b2b9d5 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Mon, 16 Nov 2020 15:45:28 +0300 Subject: [PATCH 011/141] php: mailmerge --- web/documentserver-example/php/doceditor.php | 8 ++++++ .../php/webeditor-ajax.php | 25 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/web/documentserver-example/php/doceditor.php b/web/documentserver-example/php/doceditor.php index cb6a0558..917732a8 100644 --- a/web/documentserver-example/php/doceditor.php +++ b/web/documentserver-example/php/doceditor.php @@ -318,6 +318,13 @@ docEditor.setActionLink(replaceActionLink(location.href, linkParam)); }; + var onRequestMailMergeRecipients = function (event) { + docEditor.setMailMergeRecipients({ + "fileType": "csv", + "url": "" + }); + }; + var сonnectEditor = function () { Date: Wed, 18 Nov 2020 17:48:19 +0300 Subject: [PATCH 012/141] python: mailmerge --- .../python/samples/csv.csv | 26 +++++++++++++++++++ web/documentserver-example/python/src/urls.py | 3 ++- .../python/src/views/actions.py | 14 ++++++++-- 3 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 web/documentserver-example/python/samples/csv.csv diff --git a/web/documentserver-example/python/samples/csv.csv b/web/documentserver-example/python/samples/csv.csv new file mode 100644 index 00000000..20281da7 --- /dev/null +++ b/web/documentserver-example/python/samples/csv.csv @@ -0,0 +1,26 @@ +Rank,Country,Gold,Silver,Bronze,Total +1,USA,46,37,38,121 +2,Great Britain,27,23,17,67 +3,China,26,18,26,70 +4,Russia,19,18,19,56 +5,Germany,17,10,15,42 +6,Japan,12,8,21,41 +7,France,10,18,14,42 +8,South Korea,9,3,9,21 +9,Italy,8,12,8,28 +10,Australia,8,11,10,29 +11,Netherlands,8,7,4,19 +12,Hungary,8,3,4,15 +13,Brazil,7,6,6,19 +14,Spain,7,4,6,17 +15,Kenya,6,6,1,13 +16,Jamaica,6,3,2,11 +17,Croatia,5,3,2,10 +18,Cuba,5,2,4,11 +19,New Zealand,4,9,5,18 +20,Canada,4,3,15,22 +21,Uzbekistan,4,2,7,13 +22,Kazakhstan,3,5,9,17 +23,Colombia,3,2,3,8 +24,Switzerland,3,2,2,7 +25,Iran,3,1,4,8 \ No newline at end of file diff --git a/web/documentserver-example/python/src/urls.py b/web/documentserver-example/python/src/urls.py index fe00d3e7..da0aa0b6 100644 --- a/web/documentserver-example/python/src/urls.py +++ b/web/documentserver-example/python/src/urls.py @@ -36,7 +36,8 @@ urlpatterns = [ path('create', actions.createNew), path('edit', actions.edit), path('track', actions.track), - path('remove', actions.remove) + path('remove', actions.remove), + path('csv', actions.csv) ] urlpatterns += staticfiles_urlpatterns() \ No newline at end of file diff --git a/web/documentserver-example/python/src/views/actions.py b/web/documentserver-example/python/src/views/actions.py index c043986e..8dfde07e 100644 --- a/web/documentserver-example/python/src/views/actions.py +++ b/web/documentserver-example/python/src/views/actions.py @@ -27,9 +27,11 @@ import config import json import os +import urllib.parse +import magic from datetime import datetime -from django.http import HttpResponse, HttpResponseRedirect +from django.http import HttpResponse, HttpResponseRedirect, FileResponse from django.shortcuts import render from src.utils import docManager, fileUtils, serviceConverter, users, jwtManager, historyManager @@ -261,4 +263,12 @@ def remove(request): docManager.removeFile(filename, request) response.setdefault('success', True) - return HttpResponse(json.dumps(response), content_type='application/json') \ No newline at end of file + return HttpResponse(json.dumps(response), content_type='application/json') + +def csv(request): + filePath = os.path.join('samples', "csv.csv") + response = FileResponse(open(filePath, 'rb'), True) + response['Content-Length'] = os.path.getsize(filePath) + response['Content-Disposition'] = "attachment;filename*=UTF-8\'\'" + urllib.parse.unquote(os.path.basename(filePath)) + response['Content-Type'] = magic.from_file(filePath, mime=True) + return response \ No newline at end of file From 19debed4d17bfab50717c94100908fb2f8a2028f Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Wed, 18 Nov 2020 17:50:41 +0300 Subject: [PATCH 013/141] php: fix 9b7d54fdfb671955499a272ddf4a936a64b2b9d5 --- .../php/app_data/csv.csv | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 web/documentserver-example/php/app_data/csv.csv diff --git a/web/documentserver-example/php/app_data/csv.csv b/web/documentserver-example/php/app_data/csv.csv new file mode 100644 index 00000000..20281da7 --- /dev/null +++ b/web/documentserver-example/php/app_data/csv.csv @@ -0,0 +1,26 @@ +Rank,Country,Gold,Silver,Bronze,Total +1,USA,46,37,38,121 +2,Great Britain,27,23,17,67 +3,China,26,18,26,70 +4,Russia,19,18,19,56 +5,Germany,17,10,15,42 +6,Japan,12,8,21,41 +7,France,10,18,14,42 +8,South Korea,9,3,9,21 +9,Italy,8,12,8,28 +10,Australia,8,11,10,29 +11,Netherlands,8,7,4,19 +12,Hungary,8,3,4,15 +13,Brazil,7,6,6,19 +14,Spain,7,4,6,17 +15,Kenya,6,6,1,13 +16,Jamaica,6,3,2,11 +17,Croatia,5,3,2,10 +18,Cuba,5,2,4,11 +19,New Zealand,4,9,5,18 +20,Canada,4,3,15,22 +21,Uzbekistan,4,2,7,13 +22,Kazakhstan,3,5,9,17 +23,Colombia,3,2,3,8 +24,Switzerland,3,2,2,7 +25,Iran,3,1,4,8 \ No newline at end of file From be5f6e3a6ea197c81662b649576dd9017abb6f82 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Wed, 18 Nov 2020 18:14:59 +0300 Subject: [PATCH 014/141] python: fix 4903c017f459e24e0fc2079e0517a34d81a0062a --- web/documentserver-example/python/src/views/actions.py | 3 ++- web/documentserver-example/python/templates/editor.html | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/web/documentserver-example/python/src/views/actions.py b/web/documentserver-example/python/src/views/actions.py index 8dfde07e..dca3287c 100644 --- a/web/documentserver-example/python/src/views/actions.py +++ b/web/documentserver-example/python/src/views/actions.py @@ -198,7 +198,8 @@ def edit(request): 'history': json.dumps(hist['history']) if 'history' in hist else None, 'historyData': json.dumps(hist['historyData']) if 'historyData' in hist else None, 'fileType': fileType, - 'apiUrl': config.DOC_SERV_API_URL + 'apiUrl': config.DOC_SERV_API_URL, + 'mailMergeRecipientUrl': config.EXAMPLE_DOMAIN + "csv" } return render(request, 'editor.html', context) diff --git a/web/documentserver-example/python/templates/editor.html b/web/documentserver-example/python/templates/editor.html index dcc86a5b..5d407cf5 100644 --- a/web/documentserver-example/python/templates/editor.html +++ b/web/documentserver-example/python/templates/editor.html @@ -99,6 +99,13 @@ docEditor.setActionLink(replaceActionLink(location.href, linkParam)); }; + var onRequestMailMergeRecipients = function (event) { + docEditor.setMailMergeRecipients({ + "fileType": "csv", + "url": "{{ mailMergeRecipientUrl }}" + }); + }; + var connectEditor = function () { config = {{ cfg | safe }} @@ -111,6 +118,7 @@ 'onError': onError, 'onOutdatedVersion': onOutdatedVersion, 'onMakeActionLink': onMakeActionLink, + "onRequestMailMergeRecipients": onRequestMailMergeRecipients, }; {% if history and historyData %} From 974840bbac848a3eaa3e3620e25f438d404afada Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Wed, 18 Nov 2020 18:26:53 +0300 Subject: [PATCH 015/141] python: new banner --- .../python/static/images/logo.png | Bin 5532 -> 0 bytes .../python/static/images/logo.svg | 15 +++++++++++++++ .../python/templates/index.html | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) delete mode 100644 web/documentserver-example/python/static/images/logo.png create mode 100644 web/documentserver-example/python/static/images/logo.svg diff --git a/web/documentserver-example/python/static/images/logo.png b/web/documentserver-example/python/static/images/logo.png deleted file mode 100644 index a1d4b639cdb20b155496650f452a6578db5dd7a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5532 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 diff --git a/web/documentserver-example/python/static/images/logo.svg b/web/documentserver-example/python/static/images/logo.svg new file mode 100644 index 00000000..eaace216 --- /dev/null +++ b/web/documentserver-example/python/static/images/logo.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/web/documentserver-example/python/templates/index.html b/web/documentserver-example/python/templates/index.html index 3e6e5075..0264fec1 100644 --- a/web/documentserver-example/python/templates/index.html +++ b/web/documentserver-example/python/templates/index.html @@ -42,7 +42,7 @@
- ONLYOFFICE + ONLYOFFICE
From e8eb607325bc5da98442133cdfd7f7c59810a6dc Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 19 Nov 2020 12:17:04 +0300 Subject: [PATCH 016/141] python: fix-history --- .../python/src/utils/historyManager.py | 26 +++++++++---------- .../python/templates/editor.html | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/web/documentserver-example/python/src/utils/historyManager.py b/web/documentserver-example/python/src/utils/historyManager.py index 1f9053e1..1d23cd73 100644 --- a/web/documentserver-example/python/src/utils/historyManager.py +++ b/web/documentserver-example/python/src/utils/historyManager.py @@ -43,7 +43,7 @@ def getFileVersion(histDir): if not os.path.exists(histDir): return 0 - cnt = 0 + cnt = 1 for f in os.listdir(histDir): if not os.path.isfile(os.path.join(histDir, f)): @@ -53,7 +53,7 @@ def getFileVersion(histDir): def getNextVersionDir(histDir): v = getFileVersion(histDir) - path = getVersionDir(histDir, v + 1) + path = getVersionDir(histDir, v) if not os.path.exists(path): os.makedirs(path) @@ -84,7 +84,7 @@ def createMeta(storagePath, req): user = users.getUserFromReq(req) obj = { - 'created': datetime.today().strftime('%d.%m.%Y %H:%M:%S'), + 'created': datetime.today().strftime('%Y-%m-%d %H:%M:%S'), 'uid': user['uid'], 'uname': user['uname'] } @@ -128,12 +128,12 @@ def getHistoryObject(storagePath, filename, docKey, docUrl, req): if version > 0: hist = [] histData = {} - - for i in range(version + 1): + + for i in range(1, version + 1): obj = {} dataObj = {} - prevVerDir = getVersionDir(histDir, i) - verDir = getVersionDir(histDir, i + 1) + prevVerDir = getVersionDir(histDir, i - 1) + verDir = getVersionDir(histDir, i) try: key = docKey if i == version else readFile(getKeyPath(verDir)) @@ -143,7 +143,7 @@ def getHistoryObject(storagePath, filename, docKey, docUrl, req): dataObj['key'] = key dataObj['version'] = i - if i == 0: + if i == 1: meta = getMeta(storagePath) if meta: obj['created'] = meta['created'] @@ -152,9 +152,9 @@ def getHistoryObject(storagePath, filename, docKey, docUrl, req): 'name': meta['uname'] } - dataObj['url'] = docUrl if i == version else getPrevUri(filename, i + 1, fileUtils.getFileExt(filename), req) + dataObj['url'] = docUrl if i == version else getPrevUri(filename, i, fileUtils.getFileExt(filename), req) - if i > 0: + if i > 1: changes = json.loads(readFile(getChangesHistoryPath(prevVerDir))) change = changes['changes'][0] @@ -163,16 +163,16 @@ def getHistoryObject(storagePath, filename, docKey, docUrl, req): obj['created'] = change['created'] obj['user'] = change['user'] - prev = histData[str(i - 1)] + prev = histData[str(i - 2)] prevInfo = { 'key': prev['key'], 'url': prev['url'] } dataObj['previous'] = prevInfo - dataObj['changesUrl'] = getZipUri(filename, i, req) + dataObj['changesUrl'] = getZipUri(filename, i - 1, req) hist.append(obj) - histData[str(i)] = dataObj + histData[str(i - 1)] = dataObj except Exception: return {} diff --git a/web/documentserver-example/python/templates/editor.html b/web/documentserver-example/python/templates/editor.html index dcc86a5b..6212ee56 100644 --- a/web/documentserver-example/python/templates/editor.html +++ b/web/documentserver-example/python/templates/editor.html @@ -121,7 +121,7 @@ config.events['onRequestHistoryData'] = function (event) { var ver = event.data; var histData = {{ historyData | safe }}; - docEditor.setHistoryData(histData[ver]); + docEditor.setHistoryData(histData[ver - 1]); }; config.events['onRequestHistoryClose'] = function () { document.location.reload(); From 39fbf43019f99dfced68abd8aa2ee398dc39b114 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 19 Nov 2020 13:59:09 +0300 Subject: [PATCH 017/141] python: add fb2 to ConverExtList --- web/documentserver-example/python/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/documentserver-example/python/config.py b/web/documentserver-example/python/config.py index 13254ec5..2cc0b906 100644 --- a/web/documentserver-example/python/config.py +++ b/web/documentserver-example/python/config.py @@ -10,7 +10,7 @@ DOC_SERV_CONVERT = [ ".fodt", ".ott", ".xlsm", ".xls", ".xltx", ".xltm", ".xlt", ".ods", ".fods", ".ots", ".pptm", ".ppt", ".ppsx", ".ppsm", ".pps", ".potx", ".potm", ".pot", - ".odp", ".fodp", ".otp", ".rtf", ".mht", ".html", ".htm", ".epub" + ".odp", ".fodp", ".otp", ".rtf", ".mht", ".html", ".htm", ".epub", ".fb2" ] DOC_SERV_TIMEOUT = 120000 From e91beb5518ae498c947a22ca2688c3216d414a59 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 19 Nov 2020 16:45:10 +0300 Subject: [PATCH 018/141] php: add fb2 to ConverExtList --- web/documentserver-example/php/config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/documentserver-example/php/config.php b/web/documentserver-example/php/config.php index b1bd5eed..b8c43445 100644 --- a/web/documentserver-example/php/config.php +++ b/web/documentserver-example/php/config.php @@ -6,7 +6,7 @@ $GLOBALS['ALONE'] = FALSE; $GLOBALS['DOC_SERV_VIEWD'] = array(".pdf", ".djvu", ".xps"); $GLOBALS['DOC_SERV_EDITED'] = array(".docx", ".xlsx", ".csv", ".pptx", ".txt"); -$GLOBALS['DOC_SERV_CONVERT'] = array(".docm", ".doc", ".dotx", ".dotm", ".dot", ".odt", ".fodt", ".ott", ".xlsm", ".xls", ".xltx", ".xltm", ".xlt", ".ods", ".fods", ".ots", ".pptm", ".ppt", ".ppsx", ".ppsm", ".pps", ".potx", ".potm", ".pot", ".odp", ".fodp", ".otp", ".rtf", ".mht", ".html", ".htm", ".epub"); +$GLOBALS['DOC_SERV_CONVERT'] = array(".docm", ".doc", ".dotx", ".dotm", ".dot", ".odt", ".fodt", ".ott", ".xlsm", ".xls", ".xltx", ".xltm", ".xlt", ".ods", ".fods", ".ots", ".pptm", ".ppt", ".ppsx", ".ppsm", ".pps", ".potx", ".potm", ".pot", ".odp", ".fodp", ".otp", ".rtf", ".mht", ".html", ".htm", ".epub", ".fb2"); $GLOBALS['DOC_SERV_TIMEOUT'] = "120000"; From 85dd8f8b77539c42331767c3bb398cd4ee76f3e1 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 19 Nov 2020 17:18:13 +0300 Subject: [PATCH 019/141] java: add fb2 to ConverExtList --- .../java/src/main/resources/settings.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/documentserver-example/java/src/main/resources/settings.properties b/web/documentserver-example/java/src/main/resources/settings.properties index 3836517f..b69cb3f0 100644 --- a/web/documentserver-example/java/src/main/resources/settings.properties +++ b/web/documentserver-example/java/src/main/resources/settings.properties @@ -3,7 +3,7 @@ storage-folder=app_data files.docservice.viewed-docs=.pdf|.djvu|.xps files.docservice.edited-docs=.docx|.xlsx|.csv|.pptx|.txt -files.docservice.convert-docs=.docm|.dotx|.dotm|.dot|.doc|.odt|.fodt|.ott|.xlsm|.xltx|.xltm|.xlt|.xls|.ods|.fods|.ots|.pptm|.ppt|.ppsx|.ppsm|.pps|.potx|.potm|.pot|.odp|.fodp|.otp|.rtf|.mht|.html|.htm|.epub +files.docservice.convert-docs=.docm|.dotx|.dotm|.dot|.doc|.odt|.fodt|.ott|.xlsm|.xltx|.xltm|.xlt|.xls|.ods|.fods|.ots|.pptm|.ppt|.ppsx|.ppsm|.pps|.potx|.potm|.pot|.odp|.fodp|.otp|.rtf|.mht|.html|.htm|.epub|.fb2 files.docservice.timeout=120000 files.docservice.url.converter=https://documentserver/ConvertService.ashx From 9f806aa48a7aa65c18c89bd689bfbcd64d9311ad Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 19 Nov 2020 17:48:51 +0300 Subject: [PATCH 020/141] java: fix banner --- .../java/src/main/webapp/css/stylesheet.css | 5 ++++- web/documentserver-example/java/src/main/webapp/index.jsp | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/web/documentserver-example/java/src/main/webapp/css/stylesheet.css b/web/documentserver-example/java/src/main/webapp/css/stylesheet.css index 6e3f8771..a8bdaa9e 100644 --- a/web/documentserver-example/java/src/main/webapp/css/stylesheet.css +++ b/web/documentserver-example/java/src/main/webapp/css/stylesheet.css @@ -44,10 +44,13 @@ a, a:hover, a:visited { .top-panel { - background: url("img/logo.svg") no-repeat 30px center #3D4A6B; + background: #3D4A6B; height: 80px; width: 100%; } +.top-panel img { + margin: 12px 0 0 16px; +} .main-panel { margin: 80px auto; width: 600px; diff --git a/web/documentserver-example/java/src/main/webapp/index.jsp b/web/documentserver-example/java/src/main/webapp/index.jsp index d8f08a5c..4470b82f 100644 --- a/web/documentserver-example/java/src/main/webapp/index.jsp +++ b/web/documentserver-example/java/src/main/webapp/index.jsp @@ -37,7 +37,11 @@ -
+
+ + ONLYOFFICE + +
ONLYOFFICE Document Editors From 791f2b53a9abc6a4510844af24546c3f5fd6d1ab Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Fri, 20 Nov 2020 18:16:26 +0300 Subject: [PATCH 021/141] python: config-refactor --- web/documentserver-example/python/config.py | 16 +++++++--------- .../python/src/utils/docManager.py | 12 +++++++++--- .../python/src/utils/historyManager.py | 5 +++-- .../python/src/utils/serviceConverter.py | 2 +- .../python/src/views/actions.py | 4 ++-- .../python/src/views/index.py | 2 +- 6 files changed, 23 insertions(+), 18 deletions(-) diff --git a/web/documentserver-example/python/config.py b/web/documentserver-example/python/config.py index 13254ec5..85713540 100644 --- a/web/documentserver-example/python/config.py +++ b/web/documentserver-example/python/config.py @@ -15,11 +15,13 @@ DOC_SERV_CONVERT = [ DOC_SERV_TIMEOUT = 120000 -DOC_SERV_CONVERTER_URL = 'https://documentserver/ConvertService.ashx' -DOC_SERV_API_URL = 'https://documentserver/web-apps/apps/api/documents/api.js' -DOC_SERV_PRELOADER_URL = 'https://documentserver/web-apps/apps/api/documents/cache-scripts.html' +DOC_SERV_SITE_URL = 'https://documentserver/' -EXAMPLE_DOMAIN = 'https://exampleserver/' +DOC_SERV_CONVERTER_URL = 'ConvertService.ashx' +DOC_SERV_API_URL = 'web-apps/apps/api/documents/api.js' +DOC_SERV_PRELOADER_URL = 'web-apps/apps/api/documents/cache-scripts.html' + +EXAMPLE_DOMAIN = None DOC_SERV_JWT_SECRET = '' @@ -45,11 +47,7 @@ EXT_DOCUMENT = [ ".pdf", ".djvu", ".fb2", ".epub", ".xps" ] - if os.environ.get("EXAMPLE_DOMAIN"): EXAMPLE_DOMAIN = os.environ.get("EXAMPLE_DOMAIN") if os.environ.get("DOC_SERV"): - base = os.environ.get("DOC_SERV").rstrip('/') - DOC_SERV_CONVERTER_URL = base + '/ConvertService.ashx' - DOC_SERV_API_URL = base + '/web-apps/apps/api/documents/api.js' - DOC_SERV_PRELOADER_URL = base + '/web-apps/apps/api/documents/cache-scripts.html' \ No newline at end of file + DOC_SERV_SITE_URL = os.environ.get("DOC_SERV") \ No newline at end of file diff --git a/web/documentserver-example/python/src/utils/docManager.py b/web/documentserver-example/python/src/utils/docManager.py index cd0958c4..2a4c707d 100644 --- a/web/documentserver-example/python/src/utils/docManager.py +++ b/web/documentserver-example/python/src/utils/docManager.py @@ -102,15 +102,21 @@ def getCorrectName(filename, req): return name +def getServerUrl (forDocumentServer, req): + if (forDocumentServer and config.EXAMPLE_DOMAIN is not None): + return config.EXAMPLE_DOMAIN + else: + return req.headers.get("x-forwarded-proto") or req.scheme + "://" + req.get_host() + def getFileUri(filename, req): - host = config.EXAMPLE_DOMAIN.rstrip('/') + host = getServerUrl(True, req) curAdr = req.META['REMOTE_ADDR'] return f'{host}{settings.STATIC_URL}{curAdr}/{filename}' def getCallbackUrl(filename, req): - host = config.EXAMPLE_DOMAIN + host = getServerUrl(True, req) curAdr = req.META['REMOTE_ADDR'] - return f'{host}track?filename={filename}&userAddress={curAdr}' + return f'{host}/track?filename={filename}&userAddress={curAdr}' def getRootFolder(req): if isinstance(req, str): diff --git a/web/documentserver-example/python/src/utils/historyManager.py b/web/documentserver-example/python/src/utils/historyManager.py index 1f9053e1..c7b9ebba 100644 --- a/web/documentserver-example/python/src/utils/historyManager.py +++ b/web/documentserver-example/python/src/utils/historyManager.py @@ -32,6 +32,7 @@ import config from . import users, fileUtils from datetime import datetime from src import settings +from src.utils import docManager def getHistoryDir(storagePath): return f'{storagePath}-hist' @@ -103,12 +104,12 @@ def readFile(path): return stream.read() def getPrevUri(filename, ver, ext, req): - host = config.EXAMPLE_DOMAIN.rstrip('/') + host = docManager.getServerUrl(True, req) curAdr = req.META['REMOTE_ADDR'] return f'{host}{settings.STATIC_URL}{curAdr}/{filename}-hist/{ver}/prev{ext}' def getZipUri(filename, ver, req): - host = config.EXAMPLE_DOMAIN.rstrip('/') + host = docManager.getServerUrl(True, req) curAdr = req.META['REMOTE_ADDR'] return f'{host}{settings.STATIC_URL}{curAdr}/{filename}-hist/{ver}/diff.zip' diff --git a/web/documentserver-example/python/src/utils/serviceConverter.py b/web/documentserver-example/python/src/utils/serviceConverter.py index b688d6a3..ec2aa6c1 100644 --- a/web/documentserver-example/python/src/utils/serviceConverter.py +++ b/web/documentserver-example/python/src/utils/serviceConverter.py @@ -54,7 +54,7 @@ def getConverterUri(docUri, fromExt, toExt, docKey, isAsync): payload['token'] = jwtManager.encode(payload) headers['Authorization'] = f'Bearer {headerToken}' - response = requests.post(config.DOC_SERV_CONVERTER_URL, json=payload, headers=headers ) + response = requests.post(config.DOC_SERV_SITE_URL + config.DOC_SERV_CONVERTER_URL, json=payload, headers=headers ) json = response.json() return getResponseUri(json) diff --git a/web/documentserver-example/python/src/views/actions.py b/web/documentserver-example/python/src/views/actions.py index c043986e..52a43bcf 100644 --- a/web/documentserver-example/python/src/views/actions.py +++ b/web/documentserver-example/python/src/views/actions.py @@ -180,7 +180,7 @@ def edit(request): 'about': True, 'feedback': True, 'goback': { - 'url': config.EXAMPLE_DOMAIN + 'url': docManager.getServerUrl(False, request) } } } @@ -196,7 +196,7 @@ def edit(request): 'history': json.dumps(hist['history']) if 'history' in hist else None, 'historyData': json.dumps(hist['historyData']) if 'historyData' in hist else None, 'fileType': fileType, - 'apiUrl': config.DOC_SERV_API_URL + 'apiUrl': config.DOC_SERV_SITE_URL + config.DOC_SERV_API_URL } return render(request, 'editor.html', context) diff --git a/web/documentserver-example/python/src/views/index.py b/web/documentserver-example/python/src/views/index.py index f6be3df0..435d223b 100644 --- a/web/documentserver-example/python/src/views/index.py +++ b/web/documentserver-example/python/src/views/index.py @@ -36,7 +36,7 @@ def default(request): context = { 'users': users.USERS, 'languages': docManager.LANGUAGES, - 'preloadurl': config.DOC_SERV_PRELOADER_URL, + 'preloadurl': config.DOC_SERV_SITE_URL + config.DOC_SERV_PRELOADER_URL, 'editExt': json.dumps(config.DOC_SERV_EDITED), 'convExt': json.dumps(config.DOC_SERV_CONVERT), 'files': docManager.getStoredFiles(request) From fd95aca32bd9f77b17adf205fa6b814902eaf1a0 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Mon, 23 Nov 2020 10:42:32 +0300 Subject: [PATCH 022/141] java: config-refactor --- web/documentserver-example/java/README.md | 14 ++++---------- .../src/main/java/controllers/EditorServlet.java | 2 +- .../java/src/main/java/helpers/FileUtility.java | 2 +- .../src/main/java/helpers/ServiceConverter.java | 2 +- .../java/src/main/resources/settings.properties | 9 +++++---- .../java/src/main/webapp/index.jsp | 2 +- 6 files changed, 13 insertions(+), 18 deletions(-) diff --git a/web/documentserver-example/java/README.md b/web/documentserver-example/java/README.md index 8855d004..fe30f5b6 100644 --- a/web/documentserver-example/java/README.md +++ b/web/documentserver-example/java/README.md @@ -14,13 +14,10 @@ Edit the **settings.properties** configuration file. Specify the name of your lo nano src/main/resources/settings.properties ``` -Edit the following lines: +Edit the following line: ``` -files.docservice.url.converter=https://documentserver/ConvertService.ashx -files.docservice.url.tempstorage=https://documentserver/ResourceService.ashx -files.docservice.url.api=https://documentserver/web-apps/apps/api/documents/api.js -files.docservice.url.preloader=https://documentserver/web-apps/apps/api/documents/cache-scripts.html +files.docservice.url.site=https://documentserver/ ``` Install Maven: @@ -44,13 +41,10 @@ Edit the **settings.properties** configuration file. Specify the name of your lo nano src/main/resources/settings.properties ``` -Edit the following lines. You need to change `documentserver` to your documentserver: +Edit the following line. You need to change `documentserver` to your documentserver: ``` -files.docservice.url.converter=https://documentserver/ConvertService.ashx -files.docservice.url.tempstorage=https://documentserver/ResourceService.ashx -files.docservice.url.api=https://documentserver/web-apps/apps/api/documents/api.js -files.docservice.url.preloader=https://documentserver/web-apps/apps/api/documents/cache-scripts.html +files.docservice.url.site=https://documentserver/ ``` Run next command in java example directory: diff --git a/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java b/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java index 49c1d903..1c751e4e 100644 --- a/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java +++ b/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java @@ -70,7 +70,7 @@ public class EditorServlet extends HttpServlet } request.setAttribute("file", file); - request.setAttribute("docserviceApiUrl", ConfigManager.GetProperty("files.docservice.url.api")); + request.setAttribute("docserviceApiUrl", ConfigManager.GetProperty("files.docservice.url.site") + ConfigManager.GetProperty("files.docservice.url.api")); request.getRequestDispatcher("editor.jsp").forward(request, response); } diff --git a/web/documentserver-example/java/src/main/java/helpers/FileUtility.java b/web/documentserver-example/java/src/main/java/helpers/FileUtility.java index 3e41403d..35a6d11b 100644 --- a/web/documentserver-example/java/src/main/java/helpers/FileUtility.java +++ b/web/documentserver-example/java/src/main/java/helpers/FileUtility.java @@ -75,7 +75,7 @@ public class FileUtility if (url == null) return null; //for external file url - String tempstorage = ConfigManager.GetProperty("files.docservice.url.tempstorage"); + String tempstorage = ConfigManager.GetProperty("files.docservice.url.site") + ConfigManager.GetProperty("files.docservice.url.tempstorage"); if (!tempstorage.isEmpty() && url.startsWith(tempstorage)) { Map params = GetUrlParams(url); diff --git a/web/documentserver-example/java/src/main/java/helpers/ServiceConverter.java b/web/documentserver-example/java/src/main/java/helpers/ServiceConverter.java index b4971be9..d1c04791 100644 --- a/web/documentserver-example/java/src/main/java/helpers/ServiceConverter.java +++ b/web/documentserver-example/java/src/main/java/helpers/ServiceConverter.java @@ -40,7 +40,7 @@ import org.json.simple.parser.ParseException; public class ServiceConverter { private static int ConvertTimeout = 120000; - private static final String DocumentConverterUrl = ConfigManager.GetProperty("files.docservice.url.converter"); + private static final String DocumentConverterUrl = ConfigManager.GetProperty("files.docservice.url.site") + ConfigManager.GetProperty("files.docservice.url.converter"); private static final String DocumentJwtHeader = ConfigManager.GetProperty("files.docservice.header"); public static class ConvertBody diff --git a/web/documentserver-example/java/src/main/resources/settings.properties b/web/documentserver-example/java/src/main/resources/settings.properties index 3836517f..09dc8c64 100644 --- a/web/documentserver-example/java/src/main/resources/settings.properties +++ b/web/documentserver-example/java/src/main/resources/settings.properties @@ -6,9 +6,10 @@ files.docservice.edited-docs=.docx|.xlsx|.csv|.pptx|.txt files.docservice.convert-docs=.docm|.dotx|.dotm|.dot|.doc|.odt|.fodt|.ott|.xlsm|.xltx|.xltm|.xlt|.xls|.ods|.fods|.ots|.pptm|.ppt|.ppsx|.ppsm|.pps|.potx|.potm|.pot|.odp|.fodp|.otp|.rtf|.mht|.html|.htm|.epub files.docservice.timeout=120000 -files.docservice.url.converter=https://documentserver/ConvertService.ashx -files.docservice.url.tempstorage=https://documentserver/ResourceService.ashx -files.docservice.url.api=https://documentserver/web-apps/apps/api/documents/api.js -files.docservice.url.preloader=https://documentserver/web-apps/apps/api/documents/cache-scripts.html +files.docservice.url.site=https://documentserver/ +files.docservice.url.converter=ConvertService.ashx +files.docservice.url.tempstorage=ResourceService.ashx +files.docservice.url.api=web-apps/apps/api/documents/api.js +files.docservice.url.preloader=web-apps/apps/api/documents/cache-scripts.html files.docservice.secret= files.docservice.header=Authorization \ No newline at end of file diff --git a/web/documentserver-example/java/src/main/webapp/index.jsp b/web/documentserver-example/java/src/main/webapp/index.jsp index 35dfdd6b..b043f556 100644 --- a/web/documentserver-example/java/src/main/webapp/index.jsp +++ b/web/documentserver-example/java/src/main/webapp/index.jsp @@ -278,7 +278,7 @@
Cancel
- "> + ">
© Ascensio System SIA <%= Calendar.getInstance().get(Calendar.YEAR) %>. All rights reserved. From c0b520e44008257bfd45953f02498478a5ecdd0f Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Mon, 23 Nov 2020 11:00:57 +0300 Subject: [PATCH 023/141] php: config-refactor --- web/documentserver-example/php/config.php | 8 +++++--- web/documentserver-example/php/doceditor.php | 2 +- web/documentserver-example/php/functions.php | 2 +- web/documentserver-example/php/index.php | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/web/documentserver-example/php/config.php b/web/documentserver-example/php/config.php index b1bd5eed..2157933b 100644 --- a/web/documentserver-example/php/config.php +++ b/web/documentserver-example/php/config.php @@ -10,10 +10,12 @@ $GLOBALS['DOC_SERV_CONVERT'] = array(".docm", ".doc", ".dotx", ".dotm", ".dot", $GLOBALS['DOC_SERV_TIMEOUT'] = "120000"; -$GLOBALS['DOC_SERV_CONVERTER_URL'] = "https://documentserver/ConvertService.ashx"; -$GLOBALS['DOC_SERV_API_URL'] = "https://documentserver/web-apps/apps/api/documents/api.js"; -$GLOBALS['DOC_SERV_PRELOADER_URL'] = "https://documentserver/web-apps/apps/api/documents/cache-scripts.html"; +$GLOBALS['DOC_SERV_SITE_URL'] = "https://documentserver/"; + +$GLOBALS['DOC_SERV_CONVERTER_URL'] = "ConvertService.ashx"; +$GLOBALS['DOC_SERV_API_URL'] = "web-apps/apps/api/documents/api.js"; +$GLOBALS['DOC_SERV_PRELOADER_URL'] = "web-apps/apps/api/documents/cache-scripts.html"; $GLOBALS['DOC_SERV_JWT_SECRET'] = ""; diff --git a/web/documentserver-example/php/doceditor.php b/web/documentserver-example/php/doceditor.php index fe1ac507..ef3926ad 100644 --- a/web/documentserver-example/php/doceditor.php +++ b/web/documentserver-example/php/doceditor.php @@ -251,7 +251,7 @@ } - + From ee5fe30010836269020f3c00f0a6891ac2ab360c Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Mon, 23 Nov 2020 15:19:38 +0300 Subject: [PATCH 024/141] python: fix 791f2b53a9abc6a4510844af24546c3f5fd6d1ab --- .../python/src/utils/docManager.py | 8 ++++---- .../python/src/views/actions.py | 11 ++++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/web/documentserver-example/python/src/utils/docManager.py b/web/documentserver-example/python/src/utils/docManager.py index 2a4c707d..240078a9 100644 --- a/web/documentserver-example/python/src/utils/docManager.py +++ b/web/documentserver-example/python/src/utils/docManager.py @@ -108,8 +108,8 @@ def getServerUrl (forDocumentServer, req): else: return req.headers.get("x-forwarded-proto") or req.scheme + "://" + req.get_host() -def getFileUri(filename, req): - host = getServerUrl(True, req) +def getFileUri(filename, forDocumentServer, req): + host = getServerUrl(forDocumentServer, req) curAdr = req.META['REMOTE_ADDR'] return f'{host}{settings.STATIC_URL}{curAdr}/{filename}' @@ -146,7 +146,7 @@ def getStoredFiles(req): for f in files: if os.path.isfile(os.path.join(directory, f)): - fileInfos.append({ 'type': fileUtils.getFileType(f), 'title': f, 'url': getFileUri(f, req) }) + fileInfos.append({ 'type': fileUtils.getFileType(f), 'title': f, 'url': getFileUri(f, True, req) }) return fileInfos @@ -193,7 +193,7 @@ def removeFile(filename, req): def generateFileKey(filename, req): path = getStoragePath(filename, req) - uri = getFileUri(filename, req) + uri = getFileUri(filename, False, req) stat = os.stat(path) h = str(hash(f'{uri}_{stat.st_mtime_ns}')) diff --git a/web/documentserver-example/python/src/views/actions.py b/web/documentserver-example/python/src/views/actions.py index 52a43bcf..dc899686 100644 --- a/web/documentserver-example/python/src/views/actions.py +++ b/web/documentserver-example/python/src/views/actions.py @@ -64,7 +64,7 @@ def convert(request): try: filename = request.GET['filename'] - fileUri = docManager.getFileUri(filename, request) + fileUri = docManager.getFileUri(filename, True,request) fileExt = fileUtils.getFileExt(filename) fileType = fileUtils.getFileType(filename) newExt = docManager.getInternalExtension(fileType) @@ -112,7 +112,8 @@ def edit(request): ext = fileUtils.getFileExt(filename) - fileUri = docManager.getFileUri(filename, request) + fileUri = docManager.getFileUri(filename, True, request) + fileUriUser = docManager.getFileUri(filename, False, request) docKey = docManager.generateFileKey(filename, request) fileType = fileUtils.getFileType(filename) user = users.getUserFromReq(request) @@ -171,9 +172,9 @@ def edit(request): 'name': user['uname'] }, 'embedded': { - 'saveUrl': fileUri, - 'embedUrl': fileUri, - 'shareUrl': fileUri, + 'saveUrl': fileUriUser, + 'embedUrl': fileUriUser, + 'shareUrl': fileUriUser, 'toolbarDocked': 'top' }, 'customization': { From 280d9e3dbaa8c00f2bd92ecade48d2d20a3933fd Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Mon, 23 Nov 2020 15:47:37 +0300 Subject: [PATCH 025/141] nodejs: fix config --- web/documentserver-example/nodejs/app.js | 2 ++ web/documentserver-example/nodejs/views/config.ejs | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/web/documentserver-example/nodejs/app.js b/web/documentserver-example/nodejs/app.js index d1929d64..cf7ebfb7 100644 --- a/web/documentserver-example/nodejs/app.js +++ b/web/documentserver-example/nodejs/app.js @@ -558,6 +558,7 @@ app.get("/editor", function (req, res) { } var key = docManager.getKey(fileName); var url = docManager.getFileUri(fileName); + var urlUser = docManager.getlocalFileUri(fileName, 0, false) var mode = req.query.mode || "edit"; //mode: view/edit/review/comment/fillForms/embedded var type = req.query.type || ""; //type: embedded/mobile/desktop if (type == "") { @@ -626,6 +627,7 @@ app.get("/editor", function (req, res) { name: fileName, ext: fileUtility.getFileExtension(fileName, true), uri: url, + uriUser: urlUser, version: countVersion, created: new Date().toDateString() }, diff --git a/web/documentserver-example/nodejs/views/config.ejs b/web/documentserver-example/nodejs/views/config.ejs index 41de5658..7083c28f 100644 --- a/web/documentserver-example/nodejs/views/config.ejs +++ b/web/documentserver-example/nodejs/views/config.ejs @@ -32,9 +32,9 @@ "name": "<%- editor.name %>" }, "embedded": { - "saveUrl": "<%- file.uri %>", - "embedUrl": "<%- file.uri %>", - "shareUrl": "<%- file.uri %>", + "saveUrl": "<%- file.uriUser %>", + "embedUrl": "<%- file.uriUser %>", + "shareUrl": "<%- file.uriUser %>", "toolbarDocked": "top" }, "customization": { From 773aa62478dd9ef0b8a60175aa65835179de0660 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Mon, 23 Nov 2020 17:22:02 +0300 Subject: [PATCH 026/141] java: add files.docservice.url.example --- .../src/main/java/controllers/IndexServlet.java | 2 +- .../java/src/main/java/entities/FileModel.java | 8 +++++--- .../src/main/java/helpers/DocumentManager.java | 17 ++++++++++------- .../java/src/main/resources/settings.properties | 2 ++ .../java/src/main/webapp/index.jsp | 2 +- 5 files changed, 19 insertions(+), 12 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 ec8c6b2a..f7dc99e9 100644 --- a/web/documentserver-example/java/src/main/java/controllers/IndexServlet.java +++ b/web/documentserver-example/java/src/main/java/controllers/IndexServlet.java @@ -151,7 +151,7 @@ public class IndexServlet extends HttpServlet try { String fileName = request.getParameter("filename"); - String fileUri = DocumentManager.GetFileUri(fileName); + String fileUri = DocumentManager.GetFileUri(fileName, true); String fileExt = FileUtility.GetFileExtension(fileName); FileType fileType = FileUtility.GetFileType(fileName); String internalFileExt = DocumentManager.GetInternalExtension(fileType); diff --git a/web/documentserver-example/java/src/main/java/entities/FileModel.java b/web/documentserver-example/java/src/main/java/entities/FileModel.java index 53840daf..78cceb8c 100644 --- a/web/documentserver-example/java/src/main/java/entities/FileModel.java +++ b/web/documentserver-example/java/src/main/java/entities/FileModel.java @@ -54,7 +54,8 @@ public class FileModel document = new Document(); document.title = fileName; - document.url = DocumentManager.GetFileUri(fileName); + document.url = DocumentManager.GetFileUri(fileName, true); + document.urlUser = DocumentManager.GetFileUri(fileName, false); document.fileType = FileUtility.GetFileExtension(fileName).replace(".", ""); document.key = ServiceConverter.GenerateRevisionId(DocumentManager.CurUserHostAddress(null) + "/" + fileName + "/" + Long.toString(new File(DocumentManager.StoragePath(fileName, null)).lastModified())); @@ -65,7 +66,7 @@ public class FileModel if (uid != null) editorConfig.user.id = uid; if (uname != null) editorConfig.user.name = uname; - editorConfig.customization.goback.url = DocumentManager.GetServerUrl() + "/IndexServlet"; + editorConfig.customization.goback.url = DocumentManager.GetServerUrl(false) + "/IndexServlet"; changeType(mode, type); } @@ -86,7 +87,7 @@ public class FileModel public void InitDesktop() { - editorConfig.InitDesktop(document.url); + editorConfig.InitDesktop(document.urlUser); } public void BuildToken() @@ -191,6 +192,7 @@ public class FileModel { public String title; public String url; + public String urlUser; public String fileType; public String key; public Permissions permissions; diff --git a/web/documentserver-example/java/src/main/java/helpers/DocumentManager.java b/web/documentserver-example/java/src/main/java/helpers/DocumentManager.java index 5641ec04..e26f203d 100644 --- a/web/documentserver-example/java/src/main/java/helpers/DocumentManager.java +++ b/web/documentserver-example/java/src/main/java/helpers/DocumentManager.java @@ -246,11 +246,11 @@ public class DocumentManager return fileName; } - public static String GetFileUri(String fileName) + public static String GetFileUri(String fileName, Boolean forDocumentServer) { try { - String serverPath = GetServerUrl(); + String serverPath = GetServerUrl(forDocumentServer); String storagePath = ConfigManager.GetProperty("storage-folder"); String hostAddress = CurUserHostAddress(null); @@ -266,7 +266,7 @@ public class DocumentManager public static String GetPathUri(String path) { - String serverPath = GetServerUrl(); + String serverPath = GetServerUrl(true); String storagePath = ConfigManager.GetProperty("storage-folder"); String hostAddress = CurUserHostAddress(null); @@ -276,14 +276,17 @@ public class DocumentManager } - public static String GetServerUrl() - { - return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath(); + public static String GetServerUrl(Boolean forDocumentServer) { + if (forDocumentServer && ConfigManager.GetProperty("files.docservice.url.example") != "") { + return ConfigManager.GetProperty("files.docservice.url.example"); + } else { + return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath(); + } } public static String GetCallback(String fileName) { - String serverPath = GetServerUrl(); + String serverPath = GetServerUrl(true); String hostAddress = CurUserHostAddress(null); try { diff --git a/web/documentserver-example/java/src/main/resources/settings.properties b/web/documentserver-example/java/src/main/resources/settings.properties index 09dc8c64..470ffeac 100644 --- a/web/documentserver-example/java/src/main/resources/settings.properties +++ b/web/documentserver-example/java/src/main/resources/settings.properties @@ -11,5 +11,7 @@ files.docservice.url.converter=ConvertService.ashx files.docservice.url.tempstorage=ResourceService.ashx files.docservice.url.api=web-apps/apps/api/documents/api.js files.docservice.url.preloader=web-apps/apps/api/documents/cache-scripts.html +files.docservice.url.example=null + files.docservice.secret= files.docservice.header=Authorization \ No newline at end of file diff --git a/web/documentserver-example/java/src/main/webapp/index.jsp b/web/documentserver-example/java/src/main/webapp/index.jsp index b043f556..c38ce557 100644 --- a/web/documentserver-example/java/src/main/webapp/index.jsp +++ b/web/documentserver-example/java/src/main/webapp/index.jsp @@ -152,7 +152,7 @@ " target="_blank"> <%= files[i].getName() %> - + Download From 5521cd44dd7b0efd4b2ad5682627c93a48f704c4 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Tue, 24 Nov 2020 13:27:54 +0300 Subject: [PATCH 027/141] python: add DOC_SERV_JWT_HEADER --- web/documentserver-example/python/config.py | 2 +- .../python/src/utils/serviceConverter.py | 3 ++- web/documentserver-example/python/src/views/actions.py | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/web/documentserver-example/python/config.py b/web/documentserver-example/python/config.py index 85713540..64e58c85 100644 --- a/web/documentserver-example/python/config.py +++ b/web/documentserver-example/python/config.py @@ -24,7 +24,7 @@ DOC_SERV_PRELOADER_URL = 'web-apps/apps/api/documents/cache-scripts.html' EXAMPLE_DOMAIN = None DOC_SERV_JWT_SECRET = '' - +DOC_SERV_JWT_HEADER = 'Authorization' EXT_SPREADSHEET = [ ".xls", ".xlsx", ".xlsm", diff --git a/web/documentserver-example/python/src/utils/serviceConverter.py b/web/documentserver-example/python/src/utils/serviceConverter.py index ec2aa6c1..1f706bd7 100644 --- a/web/documentserver-example/python/src/utils/serviceConverter.py +++ b/web/documentserver-example/python/src/utils/serviceConverter.py @@ -50,9 +50,10 @@ def getConverterUri(docUri, fromExt, toExt, docKey, isAsync): payload.setdefault('async', True) if jwtManager.isEnabled(): + jwtHeader = 'Authorization' if config.DOC_SERV_JWT_HEADER is None or config.DOC_SERV_JWT_HEADER == '' else config.DOC_SERV_JWT_HEADER headerToken = jwtManager.encode({'payload': payload}) payload['token'] = jwtManager.encode(payload) - headers['Authorization'] = f'Bearer {headerToken}' + headers[jwtHeader] = f'Bearer {headerToken}' response = requests.post(config.DOC_SERV_SITE_URL + config.DOC_SERV_CONVERTER_URL, json=payload, headers=headers ) json = response.json() diff --git a/web/documentserver-example/python/src/views/actions.py b/web/documentserver-example/python/src/views/actions.py index dc899686..4142e229 100644 --- a/web/documentserver-example/python/src/views/actions.py +++ b/web/documentserver-example/python/src/views/actions.py @@ -214,7 +214,8 @@ def track(request): token = body.get('token') if (not token): - token = request.headers.get('Authorization') + jwtHeader = 'Authorization' if config.DOC_SERV_JWT_HEADER is None or config.DOC_SERV_JWT_HEADER == '' else config.DOC_SERV_JWT_HEADER + token = request.headers.get(jwtHeader) if token: token = token[len('Bearer '):] From ea22efdac8cc6803bda4000eb78f45e85e0425c5 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Tue, 24 Nov 2020 22:24:19 +0300 Subject: [PATCH 028/141] java: fix 773aa62478dd9ef0b8a60175aa65835179de0660 --- .../java/src/main/java/helpers/DocumentManager.java | 2 +- .../java/src/main/resources/settings.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/web/documentserver-example/java/src/main/java/helpers/DocumentManager.java b/web/documentserver-example/java/src/main/java/helpers/DocumentManager.java index e26f203d..7c05da7d 100644 --- a/web/documentserver-example/java/src/main/java/helpers/DocumentManager.java +++ b/web/documentserver-example/java/src/main/java/helpers/DocumentManager.java @@ -277,7 +277,7 @@ public class DocumentManager public static String GetServerUrl(Boolean forDocumentServer) { - if (forDocumentServer && ConfigManager.GetProperty("files.docservice.url.example") != "") { + if (forDocumentServer && !ConfigManager.GetProperty("files.docservice.url.example").equals("")) { return ConfigManager.GetProperty("files.docservice.url.example"); } else { return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath(); diff --git a/web/documentserver-example/java/src/main/resources/settings.properties b/web/documentserver-example/java/src/main/resources/settings.properties index 470ffeac..76a8c7c7 100644 --- a/web/documentserver-example/java/src/main/resources/settings.properties +++ b/web/documentserver-example/java/src/main/resources/settings.properties @@ -11,7 +11,7 @@ files.docservice.url.converter=ConvertService.ashx files.docservice.url.tempstorage=ResourceService.ashx files.docservice.url.api=web-apps/apps/api/documents/api.js files.docservice.url.preloader=web-apps/apps/api/documents/cache-scripts.html -files.docservice.url.example=null +files.docservice.url.example= files.docservice.secret= files.docservice.header=Authorization \ No newline at end of file From 6e03e71b5967a167917cc7a8ab8524bc9cb9850b Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Wed, 25 Nov 2020 10:20:29 +0300 Subject: [PATCH 029/141] php: add DOC_SERV_JWT_HEADER --- web/documentserver-example/php/config.php | 1 + web/documentserver-example/php/functions.php | 4 +++- web/documentserver-example/php/webeditor-ajax.php | 6 ++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/web/documentserver-example/php/config.php b/web/documentserver-example/php/config.php index 2157933b..3549f90a 100644 --- a/web/documentserver-example/php/config.php +++ b/web/documentserver-example/php/config.php @@ -18,6 +18,7 @@ $GLOBALS['DOC_SERV_API_URL'] = "web-apps/apps/api/documents/api.js"; $GLOBALS['DOC_SERV_PRELOADER_URL'] = "web-apps/apps/api/documents/cache-scripts.html"; $GLOBALS['DOC_SERV_JWT_SECRET'] = ""; +$GLOBALS['DOC_SERV_JWT_HEADER'] = "Authorization"; $GLOBALS['EXAMPLE_URL'] = ""; diff --git a/web/documentserver-example/php/functions.php b/web/documentserver-example/php/functions.php index 5880a733..7ed7fed4 100644 --- a/web/documentserver-example/php/functions.php +++ b/web/documentserver-example/php/functions.php @@ -145,6 +145,8 @@ function SendRequestToConvertService($document_uri, $from_extension, $to_extensi ]; $headerToken = ""; + $jwtHeader = $GLOBALS['DOC_SERV_JWT_HEADER'] == "" ? "Authorization" : $GLOBALS['DOC_SERV_JWT_HEADER']; + if (isJwtEnabled()) { $headerToken = jwtEncode([ "payload" => $arr ]); $arr["token"] = jwtEncode($arr); @@ -157,7 +159,7 @@ function SendRequestToConvertService($document_uri, $from_extension, $to_extensi 'timeout' => $GLOBALS['DOC_SERV_TIMEOUT'], 'header'=> "Content-type: application/json\r\n" . "Accept: application/json\r\n" . - (empty($headerToken) ? "" : "Authorization: $headerToken\r\n"), + (empty($headerToken) ? "" : $jwtHeader.": Bearer $headerToken\r\n"), 'content' => $data ) ); diff --git a/web/documentserver-example/php/webeditor-ajax.php b/web/documentserver-example/php/webeditor-ajax.php index 20052982..5cecf04e 100644 --- a/web/documentserver-example/php/webeditor-ajax.php +++ b/web/documentserver-example/php/webeditor-ajax.php @@ -144,10 +144,12 @@ function track() { $inHeader = false; $token = ""; + $jwtHeader = $GLOBALS['DOC_SERV_JWT_HEADER'] == "" ? "Authorization" : $GLOBALS['DOC_SERV_JWT_HEADER']; + if (!empty($data["token"])) { $token = jwtDecode($data["token"]); - } elseif (!empty($_SERVER['HTTP_AUTHORIZATION'])) { - $token = jwtDecode(substr($_SERVER['HTTP_AUTHORIZATION'], strlen("Bearer "))); + } elseif (!empty(apache_request_headers()[$jwtHeader])) { + $token = jwtDecode(substr(apache_request_headers()[$jwtHeader], strlen("Bearer "))); $inHeader = true; } else { sendlog("jwt token wasn't found in body or headers", "webedior-ajax.log"); From 720c61c7b7aaf6bf16fd8f05ebc43796563a820c Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Wed, 25 Nov 2020 18:40:30 +0300 Subject: [PATCH 030/141] java: jwt for historyData --- .../java/src/main/java/entities/FileModel.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/web/documentserver-example/java/src/main/java/entities/FileModel.java b/web/documentserver-example/java/src/main/java/entities/FileModel.java index 53840daf..ec400259 100644 --- a/web/documentserver-example/java/src/main/java/entities/FileModel.java +++ b/web/documentserver-example/java/src/main/java/entities/FileModel.java @@ -155,6 +155,11 @@ public class FileModel dataObj.put("changesUrl", DocumentManager.GetPathUri(DocumentManager.VersionDir(histDir, i) + File.separator + "diff.zip")); } + if (DocumentManager.TokenEnabled()) + { + dataObj.put("token", DocumentManager.CreateToken(dataObj)); + } + hist.add(obj); histData.put(Integer.toString(i), dataObj); From ca5ba06506e9945514bc7dc37b163fdba4d60765 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Wed, 25 Nov 2020 18:47:12 +0300 Subject: [PATCH 031/141] php: jwt for historyData --- web/documentserver-example/php/doceditor.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/web/documentserver-example/php/doceditor.php b/web/documentserver-example/php/doceditor.php index fe1ac507..9d54270b 100644 --- a/web/documentserver-example/php/doceditor.php +++ b/web/documentserver-example/php/doceditor.php @@ -196,6 +196,10 @@ $dataObj["changesUrl"] = getVirtualPath(true) . str_replace("%5C", "/", rawurlencode($changesUrl)); } + if (isJwtEnabled()) { + $dataObj["token"] = jwtEncode($dataObj); + } + array_push($hist, $obj); $histData[$i] = $dataObj; } From d5a8cdc760daced1f8496f6fa3be11bbc071f7ed Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Wed, 25 Nov 2020 18:54:46 +0300 Subject: [PATCH 032/141] python: jwt for historyData --- web/documentserver-example/python/src/utils/historyManager.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/web/documentserver-example/python/src/utils/historyManager.py b/web/documentserver-example/python/src/utils/historyManager.py index 1f9053e1..d22d640d 100644 --- a/web/documentserver-example/python/src/utils/historyManager.py +++ b/web/documentserver-example/python/src/utils/historyManager.py @@ -32,6 +32,7 @@ import config from . import users, fileUtils from datetime import datetime from src import settings +from src.utils import jwtManager def getHistoryDir(storagePath): return f'{storagePath}-hist' @@ -171,6 +172,9 @@ def getHistoryObject(storagePath, filename, docKey, docUrl, req): dataObj['previous'] = prevInfo dataObj['changesUrl'] = getZipUri(filename, i, req) + if jwtManager.isEnabled(): + dataObj['token'] = jwtManager.encode(dataObj) + hist.append(obj) histData[str(i)] = dataObj except Exception: From 6f6e80cf68096f04d0a00c1bb068f11b1a6b6b54 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 26 Nov 2020 00:14:12 +0300 Subject: [PATCH 033/141] python: jwt for mailmerge --- web/documentserver-example/python/src/views/actions.py | 8 +++++++- web/documentserver-example/python/templates/editor.html | 7 +++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/web/documentserver-example/python/src/views/actions.py b/web/documentserver-example/python/src/views/actions.py index dca3287c..13ea1bb9 100644 --- a/web/documentserver-example/python/src/views/actions.py +++ b/web/documentserver-example/python/src/views/actions.py @@ -188,8 +188,14 @@ def edit(request): } } + dataMailMergeRecipients = { + 'fileType': 'csv', + 'url': config.EXAMPLE_DOMAIN + 'csv' + } + if jwtManager.isEnabled(): edConfig['token'] = jwtManager.encode(edConfig) + dataMailMergeRecipients['token'] = jwtManager.encode(dataMailMergeRecipients) hist = historyManager.getHistoryObject(storagePath, filename, docKey, fileUri, request) @@ -199,7 +205,7 @@ def edit(request): 'historyData': json.dumps(hist['historyData']) if 'historyData' in hist else None, 'fileType': fileType, 'apiUrl': config.DOC_SERV_API_URL, - 'mailMergeRecipientUrl': config.EXAMPLE_DOMAIN + "csv" + 'dataMailMergeRecipients': json.dumps(dataMailMergeRecipients) } return render(request, 'editor.html', context) diff --git a/web/documentserver-example/python/templates/editor.html b/web/documentserver-example/python/templates/editor.html index 5d407cf5..b18f0500 100644 --- a/web/documentserver-example/python/templates/editor.html +++ b/web/documentserver-example/python/templates/editor.html @@ -100,10 +100,9 @@ }; var onRequestMailMergeRecipients = function (event) { - docEditor.setMailMergeRecipients({ - "fileType": "csv", - "url": "{{ mailMergeRecipientUrl }}" - }); + docEditor.setMailMergeRecipients( + {{ dataMailMergeRecipients | safe }} + ); }; var connectEditor = function () { From 74505f5c4461bf2a47a4bf82bd30fdacb14c533d Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 26 Nov 2020 00:31:42 +0300 Subject: [PATCH 034/141] nodejs: jwt for mailmerge --- web/documentserver-example/nodejs/app.js | 6 +++++- web/documentserver-example/nodejs/views/editor.ejs | 5 +---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/web/documentserver-example/nodejs/app.js b/web/documentserver-example/nodejs/app.js index 38b466af..e2a0ee20 100644 --- a/web/documentserver-example/nodejs/app.js +++ b/web/documentserver-example/nodejs/app.js @@ -650,7 +650,10 @@ app.get("/editor", function (req, res) { }, history: history, historyData: historyData, - mailMergeRecipientUrl: docManager.getServerUrl(true) + "/csv" + dataMailMergeRecipients: { + fileType: "csv", + url: docManager.getServerUrl(true) + "/csv" + } }; if (cfgSignatureEnable) { @@ -659,6 +662,7 @@ app.get("/editor", function (req, res) { console.log(err); } else { argss.editor.token = jwt.sign(JSON.parse("{"+html+"}"), cfgSignatureSecret, {expiresIn: cfgSignatureSecretExpiresIn}); + argss.dataMailMergeRecipients.token = jwt.sign(argss.dataMailMergeRecipients, cfgSignatureSecret, {expiresIn: cfgSignatureSecretExpiresIn}); } res.render("editor", argss); }); diff --git a/web/documentserver-example/nodejs/views/editor.ejs b/web/documentserver-example/nodejs/views/editor.ejs index a843e212..52320734 100644 --- a/web/documentserver-example/nodejs/views/editor.ejs +++ b/web/documentserver-example/nodejs/views/editor.ejs @@ -119,10 +119,7 @@ }; var onRequestMailMergeRecipients = function (event) { - docEditor.setMailMergeRecipients({ - "fileType": "csv", - "url": "<%- mailMergeRecipientUrl %>" - }); + docEditor.setMailMergeRecipients(<%- JSON.stringify(dataMailMergeRecipients) %>); }; var connectEditor = function () { From 2017c45c19549e98ec30a0d2e7a798c13a6af1d5 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 26 Nov 2020 01:07:23 +0300 Subject: [PATCH 035/141] java: jwt for mailmerge --- .../src/main/java/controllers/EditorServlet.java | 12 +++++++++++- .../java/src/main/webapp/editor.jsp | 5 +---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java b/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java index 330a76ae..b40adcbf 100644 --- a/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java +++ b/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java @@ -26,11 +26,14 @@ package controllers; +import com.google.gson.Gson; import helpers.ConfigManager; import helpers.CookieManager; import helpers.DocumentManager; import java.io.IOException; import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Map; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; @@ -72,14 +75,21 @@ public class EditorServlet extends HttpServlet FileModel file = new FileModel(fileName, cm.getCookie("ulang"), cm.getCookie("uid"), cm.getCookie("uname"), request.getParameter("actionLink")); file.changeType(request.getParameter("mode"), request.getParameter("type")); + Map dataMailMergeRecipients = new HashMap<>(); + dataMailMergeRecipients.put("fileType", "csv"); + dataMailMergeRecipients.put("url", DocumentManager.GetServerUrl() + "/IndexServlet?type=csv"); + if (DocumentManager.TokenEnabled()) { file.BuildToken(); + dataMailMergeRecipients.put("token", DocumentManager.CreateToken(dataMailMergeRecipients)); } + Gson gson = new Gson(); + request.setAttribute("file", file); request.setAttribute("docserviceApiUrl", ConfigManager.GetProperty("files.docservice.url.api")); - request.setAttribute("mailMergeRecipientUrl", DocumentManager.GetServerUrl() + "/IndexServlet?type=csv"); + request.setAttribute("dataMailMergeRecipients", gson.toJson(dataMailMergeRecipients)); request.getRequestDispatcher("editor.jsp").forward(request, response); } diff --git a/web/documentserver-example/java/src/main/webapp/editor.jsp b/web/documentserver-example/java/src/main/webapp/editor.jsp index a45be13f..3a08de70 100644 --- a/web/documentserver-example/java/src/main/webapp/editor.jsp +++ b/web/documentserver-example/java/src/main/webapp/editor.jsp @@ -96,10 +96,7 @@ }; var onRequestMailMergeRecipients = function (event) { - docEditor.setMailMergeRecipients({ - "fileType": "csv", - "url": "${mailMergeRecipientUrl}" - }); + docEditor.setMailMergeRecipients(${dataMailMergeRecipients}); }; var config = JSON.parse('<%= FileModel.Serialize(Model) %>'); From 48fa83b8501f5ef170bbe3892ad8f4217414004e Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 26 Nov 2020 01:16:33 +0300 Subject: [PATCH 036/141] php: jwt for mailmerge --- web/documentserver-example/php/doceditor.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/web/documentserver-example/php/doceditor.php b/web/documentserver-example/php/doceditor.php index 917732a8..6f712a22 100644 --- a/web/documentserver-example/php/doceditor.php +++ b/web/documentserver-example/php/doceditor.php @@ -124,8 +124,14 @@ ] ]; + $dataMailMergeRecipients = [ + "fileType" =>"csv", + "url" => serverPath() . DIRECTORY_SEPARATOR . "webeditor-ajax.php?type=csv" + ]; + if (isJwtEnabled()) { $config["token"] = jwtEncode($config); + $dataMailMergeRecipients["token"] = jwtEncode($dataMailMergeRecipients); } function tryGetDefaultByType($createExt) { @@ -319,10 +325,7 @@ }; var onRequestMailMergeRecipients = function (event) { - docEditor.setMailMergeRecipients({ - "fileType": "csv", - "url": "" - }); + docEditor.setMailMergeRecipients(); }; var сonnectEditor = function () { From 17cad4a0dc0561753dc15894b6f6ca8db1bbde93 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 26 Nov 2020 14:54:09 +0300 Subject: [PATCH 037/141] java: insert-image --- .../java/src/main/java/controllers/EditorServlet.java | 9 +++++++++ .../java/src/main/webapp/editor.jsp | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java b/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java index 49c1d903..546b1337 100644 --- a/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java +++ b/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java @@ -18,11 +18,14 @@ package controllers; +import com.google.gson.Gson; import helpers.ConfigManager; import helpers.CookieManager; import helpers.DocumentManager; import java.io.IOException; import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Map; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; @@ -64,13 +67,19 @@ public class EditorServlet extends HttpServlet FileModel file = new FileModel(fileName, cm.getCookie("ulang"), cm.getCookie("uid"), cm.getCookie("uname"), request.getParameter("actionLink")); file.changeType(request.getParameter("mode"), request.getParameter("type")); + Map dataInsertImage = new HashMap<>(); + dataInsertImage.put("fileType", "png"); + dataInsertImage.put("url", DocumentManager.GetServerUrl() + "/css/img/logo.png"); + if (DocumentManager.TokenEnabled()) { file.BuildToken(); } + Gson gson = new Gson(); request.setAttribute("file", file); request.setAttribute("docserviceApiUrl", ConfigManager.GetProperty("files.docservice.url.api")); + request.setAttribute("dataInsertImage", gson.toJson(dataInsertImage).substring(1, gson.toJson(dataInsertImage).length()-1)); request.getRequestDispatcher("editor.jsp").forward(request, response); } diff --git a/web/documentserver-example/java/src/main/webapp/editor.jsp b/web/documentserver-example/java/src/main/webapp/editor.jsp index 535d35ed..5bf65118 100644 --- a/web/documentserver-example/java/src/main/webapp/editor.jsp +++ b/web/documentserver-example/java/src/main/webapp/editor.jsp @@ -86,6 +86,13 @@ docEditor.setActionLink(replaceActionLink(location.href, linkParam)); }; + var onRequestInsertImage = function(event) { + docEditor.insertImage({ + "c": event.data.c, + ${dataInsertImage} + }) + }; + var config = JSON.parse('<%= FileModel.Serialize(Model) %>'); config.width = "100%"; config.height = "100%"; @@ -96,6 +103,7 @@ "onError": onError, "onOutdatedVersion": onOutdatedVersion, "onMakeActionLink": onMakeActionLink, + "onRequestInsertImage": onRequestInsertImage, }; <% From 31337cc9c99aa2d20ccc1dfa9fae1c9d05717fbc Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 26 Nov 2020 15:33:16 +0300 Subject: [PATCH 038/141] python: insert-image --- web/documentserver-example/python/src/views/actions.py | 6 ++++++ web/documentserver-example/python/templates/editor.html | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/web/documentserver-example/python/src/views/actions.py b/web/documentserver-example/python/src/views/actions.py index c043986e..9d4c1409 100644 --- a/web/documentserver-example/python/src/views/actions.py +++ b/web/documentserver-example/python/src/views/actions.py @@ -186,6 +186,11 @@ def edit(request): } } + dataInsertImage = { + 'fileType': 'png', + 'url': config.EXAMPLE_DOMAIN + 'static/images/logo.png' + } + if jwtManager.isEnabled(): edConfig['token'] = jwtManager.encode(edConfig) @@ -196,6 +201,7 @@ def edit(request): 'history': json.dumps(hist['history']) if 'history' in hist else None, 'historyData': json.dumps(hist['historyData']) if 'historyData' in hist else None, 'fileType': fileType, + 'dataInsertImage': json.dumps(dataInsertImage)[1 : len(json.dumps(dataInsertImage)) - 1], 'apiUrl': config.DOC_SERV_API_URL } return render(request, 'editor.html', context) diff --git a/web/documentserver-example/python/templates/editor.html b/web/documentserver-example/python/templates/editor.html index dcc86a5b..bb73ca5e 100644 --- a/web/documentserver-example/python/templates/editor.html +++ b/web/documentserver-example/python/templates/editor.html @@ -99,6 +99,13 @@ docEditor.setActionLink(replaceActionLink(location.href, linkParam)); }; + var onRequestInsertImage = function(event) { + docEditor.insertImage({ + "c": event.data.c, + {{ dataInsertImage | safe }} + }) + }; + var connectEditor = function () { config = {{ cfg | safe }} @@ -111,6 +118,7 @@ 'onError': onError, 'onOutdatedVersion': onOutdatedVersion, 'onMakeActionLink': onMakeActionLink, + 'onRequestInsertImage': onRequestInsertImage, }; {% if history and historyData %} From 2368354c6d837a16c052ac59eb1c227f1d6abbc4 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 26 Nov 2020 16:10:09 +0300 Subject: [PATCH 039/141] php: insert-image --- web/documentserver-example/php/doceditor.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/web/documentserver-example/php/doceditor.php b/web/documentserver-example/php/doceditor.php index fe1ac507..3139867a 100644 --- a/web/documentserver-example/php/doceditor.php +++ b/web/documentserver-example/php/doceditor.php @@ -114,6 +114,11 @@ ] ]; + $dataInsertImage = [ + "fileType" => "png", + "url" => serverPath() . "/css/images/logo.png" + ]; + if (isJwtEnabled()) { $config["token"] = jwtEncode($config); } @@ -308,6 +313,13 @@ docEditor.setActionLink(replaceActionLink(location.href, linkParam)); }; + var onRequestInsertImage = function(event) { + docEditor.insertImage({ + "c": event.data.c, + + }) + }; + var сonnectEditor = function () { Date: Thu, 26 Nov 2020 17:12:53 +0300 Subject: [PATCH 040/141] nodejs: insert-image --- web/documentserver-example/nodejs/app.js | 6 +++++- web/documentserver-example/nodejs/views/editor.ejs | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/web/documentserver-example/nodejs/app.js b/web/documentserver-example/nodejs/app.js index d1929d64..a2d123e2 100644 --- a/web/documentserver-example/nodejs/app.js +++ b/web/documentserver-example/nodejs/app.js @@ -653,7 +653,11 @@ app.get("/editor", function (req, res) { actionData: actionData }, history: history, - historyData: historyData + historyData: historyData, + dataInsertImage: { + fileType: "png", + url: docManager.getServerUrl(true) + "/images/logo.png" + } }; if (cfgSignatureEnable) { diff --git a/web/documentserver-example/nodejs/views/editor.ejs b/web/documentserver-example/nodejs/views/editor.ejs index aee237a9..e054b9c2 100644 --- a/web/documentserver-example/nodejs/views/editor.ejs +++ b/web/documentserver-example/nodejs/views/editor.ejs @@ -109,6 +109,13 @@ docEditor.setActionLink(replaceActionLink(location.href, linkParam)); }; + var onRequestInsertImage = function(event) { + docEditor.insertImage({ + "c": event.data.c, + <%- JSON.stringify(dataInsertImage).substring(1, JSON.stringify(dataInsertImage).length - 1)%> + }) + }; + var connectEditor = function () { docEditor = new DocsAPI.DocEditor("iframeEditor", {<%- include("config") %>, @@ -122,6 +129,7 @@ "onRequestHistoryClose": onRequestHistoryClose, "onOutdatedVersion": onOutdatedVersion, "onMakeActionLink": onMakeActionLink, + "onRequestInsertImage": onRequestInsertImage, } }); From 0ad9907eb66acf531987aafcc1472b503efc01e5 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 26 Nov 2020 17:18:04 +0300 Subject: [PATCH 041/141] nodejs: jwt for insert-image --- web/documentserver-example/nodejs/app.js | 1 + 1 file changed, 1 insertion(+) diff --git a/web/documentserver-example/nodejs/app.js b/web/documentserver-example/nodejs/app.js index a2d123e2..eb22ffa6 100644 --- a/web/documentserver-example/nodejs/app.js +++ b/web/documentserver-example/nodejs/app.js @@ -666,6 +666,7 @@ app.get("/editor", function (req, res) { console.log(err); } else { argss.editor.token = jwt.sign(JSON.parse("{"+html+"}"), cfgSignatureSecret, {expiresIn: cfgSignatureSecretExpiresIn}); + argss.dataInsertImage.token = jwt.sign(argss.dataInsertImage, cfgSignatureSecret, {expiresIn: cfgSignatureSecretExpiresIn}); } res.render("editor", argss); }); From 62060d25384d65432483b37170ae32b72993b89c Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 26 Nov 2020 17:20:57 +0300 Subject: [PATCH 042/141] php: jwt for insert-image --- web/documentserver-example/php/doceditor.php | 1 + 1 file changed, 1 insertion(+) diff --git a/web/documentserver-example/php/doceditor.php b/web/documentserver-example/php/doceditor.php index 3139867a..ad4faae5 100644 --- a/web/documentserver-example/php/doceditor.php +++ b/web/documentserver-example/php/doceditor.php @@ -121,6 +121,7 @@ if (isJwtEnabled()) { $config["token"] = jwtEncode($config); + $dataInsertImage["token"] = jwtEncode($dataInsertImage); } function tryGetDefaultByType($createExt) { From eb8cf75bc0a7b970d91d4f2c125c997fdeef4bb2 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 26 Nov 2020 17:23:21 +0300 Subject: [PATCH 043/141] java: jwt for insert-image --- .../java/src/main/java/controllers/EditorServlet.java | 1 + 1 file changed, 1 insertion(+) diff --git a/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java b/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java index 546b1337..53ae6fb2 100644 --- a/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java +++ b/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java @@ -74,6 +74,7 @@ public class EditorServlet extends HttpServlet if (DocumentManager.TokenEnabled()) { file.BuildToken(); + dataInsertImage.put("token", DocumentManager.CreateToken(dataInsertImage)); } Gson gson = new Gson(); From 9876e745e547c97d58446347cd9701788311c3a4 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 26 Nov 2020 17:27:01 +0300 Subject: [PATCH 044/141] python: jwt for insert-image --- web/documentserver-example/python/src/views/actions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/web/documentserver-example/python/src/views/actions.py b/web/documentserver-example/python/src/views/actions.py index 9d4c1409..e950e091 100644 --- a/web/documentserver-example/python/src/views/actions.py +++ b/web/documentserver-example/python/src/views/actions.py @@ -193,6 +193,7 @@ def edit(request): if jwtManager.isEnabled(): edConfig['token'] = jwtManager.encode(edConfig) + dataInsertImage['token'] = jwtManager.encode(dataInsertImage) hist = historyManager.getHistoryObject(storagePath, filename, docKey, fileUri, request) From aca8e94f2a07a34f9349b1ca1a7115214d8f0950 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 26 Nov 2020 18:13:01 +0300 Subject: [PATCH 045/141] nodejs: compare-file --- web/documentserver-example/nodejs/app.js | 6 +++++- web/documentserver-example/nodejs/views/editor.ejs | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/web/documentserver-example/nodejs/app.js b/web/documentserver-example/nodejs/app.js index d1929d64..ca1fe9bb 100644 --- a/web/documentserver-example/nodejs/app.js +++ b/web/documentserver-example/nodejs/app.js @@ -653,7 +653,11 @@ app.get("/editor", function (req, res) { actionData: actionData }, history: history, - historyData: historyData + historyData: historyData, + dataCompareFile: { + fileType: "docx", + url: docManager.getServerUrl(true) + "/samples/sample.docx" + } }; if (cfgSignatureEnable) { diff --git a/web/documentserver-example/nodejs/views/editor.ejs b/web/documentserver-example/nodejs/views/editor.ejs index aee237a9..6d717746 100644 --- a/web/documentserver-example/nodejs/views/editor.ejs +++ b/web/documentserver-example/nodejs/views/editor.ejs @@ -109,6 +109,10 @@ docEditor.setActionLink(replaceActionLink(location.href, linkParam)); }; + var onRequestCompareFile = function() { + docEditor.setRevisedFile(<%- JSON.stringify(dataCompareFile) %>); + }; + var connectEditor = function () { docEditor = new DocsAPI.DocEditor("iframeEditor", {<%- include("config") %>, @@ -122,6 +126,7 @@ "onRequestHistoryClose": onRequestHistoryClose, "onOutdatedVersion": onOutdatedVersion, "onMakeActionLink": onMakeActionLink, + "onRequestCompareFile": onRequestCompareFile, } }); From 0f2695fba07521c752452e12143dca9986c5a336 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 26 Nov 2020 18:16:44 +0300 Subject: [PATCH 046/141] nodejs: jwt for compare-file --- web/documentserver-example/nodejs/app.js | 1 + 1 file changed, 1 insertion(+) diff --git a/web/documentserver-example/nodejs/app.js b/web/documentserver-example/nodejs/app.js index ca1fe9bb..95a95ded 100644 --- a/web/documentserver-example/nodejs/app.js +++ b/web/documentserver-example/nodejs/app.js @@ -666,6 +666,7 @@ app.get("/editor", function (req, res) { console.log(err); } else { argss.editor.token = jwt.sign(JSON.parse("{"+html+"}"), cfgSignatureSecret, {expiresIn: cfgSignatureSecretExpiresIn}); + argss.dataCompareFile.token = jwt.sign(argss.dataCompareFile, cfgSignatureSecret, {expiresIn: cfgSignatureSecretExpiresIn}); } res.render("editor", argss); }); From c75f9166c57f5449f6f1559c476cf5a68d5a5442 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 26 Nov 2020 18:30:27 +0300 Subject: [PATCH 047/141] python: compare-file --- web/documentserver-example/python/src/settings.py | 2 +- web/documentserver-example/python/src/views/actions.py | 6 ++++++ web/documentserver-example/python/templates/editor.html | 5 +++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/web/documentserver-example/python/src/settings.py b/web/documentserver-example/python/src/settings.py index 72dc048e..d9ce3716 100644 --- a/web/documentserver-example/python/src/settings.py +++ b/web/documentserver-example/python/src/settings.py @@ -96,4 +96,4 @@ USE_TZ = True STATIC_ROOT = '' STATIC_URL = '/static/' -STATICFILES_DIRS = ( os.path.join('static'), os.path.join(config.STORAGE_PATH) ) \ No newline at end of file +STATICFILES_DIRS = ( os.path.join('static'), os.path.join(config.STORAGE_PATH), os.path.join('samples')) \ No newline at end of file diff --git a/web/documentserver-example/python/src/views/actions.py b/web/documentserver-example/python/src/views/actions.py index c043986e..e6d9c33d 100644 --- a/web/documentserver-example/python/src/views/actions.py +++ b/web/documentserver-example/python/src/views/actions.py @@ -186,6 +186,11 @@ def edit(request): } } + dataCompareFile = { + 'fileType': 'docx', + 'url': config.EXAMPLE_DOMAIN + 'static/sample.docx' + } + if jwtManager.isEnabled(): edConfig['token'] = jwtManager.encode(edConfig) @@ -196,6 +201,7 @@ def edit(request): 'history': json.dumps(hist['history']) if 'history' in hist else None, 'historyData': json.dumps(hist['historyData']) if 'historyData' in hist else None, 'fileType': fileType, + 'dataCompareFile': dataCompareFile, 'apiUrl': config.DOC_SERV_API_URL } return render(request, 'editor.html', context) diff --git a/web/documentserver-example/python/templates/editor.html b/web/documentserver-example/python/templates/editor.html index dcc86a5b..986f2c2e 100644 --- a/web/documentserver-example/python/templates/editor.html +++ b/web/documentserver-example/python/templates/editor.html @@ -99,6 +99,10 @@ docEditor.setActionLink(replaceActionLink(location.href, linkParam)); }; + var onRequestCompareFile = function() { + docEditor.setRevisedFile({{ dataCompareFile | safe }}); + }; + var connectEditor = function () { config = {{ cfg | safe }} @@ -111,6 +115,7 @@ 'onError': onError, 'onOutdatedVersion': onOutdatedVersion, 'onMakeActionLink': onMakeActionLink, + 'onRequestCompareFile': onRequestCompareFile, }; {% if history and historyData %} From b21d179f4b6686401b68ea3280c7699929acaf75 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 26 Nov 2020 18:32:06 +0300 Subject: [PATCH 048/141] python: jwt for compare-file --- web/documentserver-example/python/src/views/actions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/web/documentserver-example/python/src/views/actions.py b/web/documentserver-example/python/src/views/actions.py index e6d9c33d..eddcccce 100644 --- a/web/documentserver-example/python/src/views/actions.py +++ b/web/documentserver-example/python/src/views/actions.py @@ -193,6 +193,7 @@ def edit(request): if jwtManager.isEnabled(): edConfig['token'] = jwtManager.encode(edConfig) + dataCompareFile['token'] = jwtManager.encode(dataCompareFile) hist = historyManager.getHistoryObject(storagePath, filename, docKey, fileUri, request) From 7b017c15f8fee6a1febf2661ba7171d530f1872d Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Fri, 27 Nov 2020 10:57:50 +0300 Subject: [PATCH 049/141] php: compare-file --- web/documentserver-example/php/doceditor.php | 11 ++++++++ .../php/webeditor-ajax.php | 26 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/web/documentserver-example/php/doceditor.php b/web/documentserver-example/php/doceditor.php index fe1ac507..77ba4221 100644 --- a/web/documentserver-example/php/doceditor.php +++ b/web/documentserver-example/php/doceditor.php @@ -114,6 +114,11 @@ ] ]; + $dataCompareFile = [ + "fileType" => "docx", + "url" => serverPath() . "/webeditor-ajax.php?type=download&name=demo.docx" + ]; + if (isJwtEnabled()) { $config["token"] = jwtEncode($config); } @@ -308,6 +313,11 @@ docEditor.setActionLink(replaceActionLink(location.href, linkParam)); }; + var onRequestCompareFile = function() { + docEditor.setRevisedFile(); + }; + + var сonnectEditor = function () { \ No newline at end of file From 6250902a55d68c62db8093f4fc58233eb7414ad0 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Fri, 27 Nov 2020 11:00:16 +0300 Subject: [PATCH 050/141] php: jwt for compare-file --- web/documentserver-example/php/doceditor.php | 1 + 1 file changed, 1 insertion(+) diff --git a/web/documentserver-example/php/doceditor.php b/web/documentserver-example/php/doceditor.php index 77ba4221..81751a18 100644 --- a/web/documentserver-example/php/doceditor.php +++ b/web/documentserver-example/php/doceditor.php @@ -121,6 +121,7 @@ if (isJwtEnabled()) { $config["token"] = jwtEncode($config); + $dataCompareFile["token"] = jwtEncode($dataCompareFile); } function tryGetDefaultByType($createExt) { From 38cc631e2e9b03b6d2d19d92c3ab3d49af895864 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Fri, 27 Nov 2020 11:31:13 +0300 Subject: [PATCH 051/141] java: compare-file --- .../main/java/controllers/EditorServlet.java | 9 ++++ .../main/java/controllers/IndexServlet.java | 52 ++++++++++++++++--- .../java/src/main/webapp/editor.jsp | 5 ++ 3 files changed, 60 insertions(+), 6 deletions(-) diff --git a/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java b/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java index 49c1d903..659ed9e6 100644 --- a/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java +++ b/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java @@ -18,11 +18,14 @@ package controllers; +import com.google.gson.Gson; import helpers.ConfigManager; import helpers.CookieManager; import helpers.DocumentManager; import java.io.IOException; import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Map; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; @@ -64,13 +67,19 @@ public class EditorServlet extends HttpServlet FileModel file = new FileModel(fileName, cm.getCookie("ulang"), cm.getCookie("uid"), cm.getCookie("uname"), request.getParameter("actionLink")); file.changeType(request.getParameter("mode"), request.getParameter("type")); + Map dataCompareFile = new HashMap<>(); + dataCompareFile.put("fileType", "docx"); + dataCompareFile.put("url", DocumentManager.GetServerUrl() + "/IndexServlet?type=download&name=sample.docx"); + if (DocumentManager.TokenEnabled()) { file.BuildToken(); } + Gson gson = new Gson(); request.setAttribute("file", file); request.setAttribute("docserviceApiUrl", ConfigManager.GetProperty("files.docservice.url.api")); + request.setAttribute("dataCompareFile", gson.toJson(dataCompareFile)); request.getRequestDispatcher("editor.jsp").forward(request, response); } 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 ec8c6b2a..ce753183 100644 --- a/web/documentserver-example/java/src/main/java/controllers/IndexServlet.java +++ b/web/documentserver-example/java/src/main/java/controllers/IndexServlet.java @@ -22,13 +22,13 @@ import helpers.ConfigManager; import helpers.CookieManager; import helpers.DocumentManager; import helpers.ServiceConverter; -import java.io.File; -import java.io.FileOutputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.io.PrintWriter; + +import java.io.*; +import java.net.URISyntaxException; import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.LinkedHashMap; import java.util.Scanner; import javax.servlet.ServletException; @@ -78,6 +78,9 @@ public class IndexServlet extends HttpServlet case "remove": Remove(request, response, writer); break; + case "download": + Download(request, response, writer); + break; } } @@ -369,6 +372,43 @@ public class IndexServlet extends HttpServlet } } + private static void Download(HttpServletRequest request, HttpServletResponse response, PrintWriter writer) + { + String fileName = request.getParameter("name"); + URL fileUrl = Thread.currentThread().getContextClassLoader().getResource(fileName); + Path filePath = null; + String fileType = null; + try { + filePath = Paths.get(fileUrl.toURI()); + fileType = Files.probeContentType(filePath); + } catch (URISyntaxException | IOException e) { + e.printStackTrace(); + } + + File file = new File(String.valueOf(filePath)); + + response.setHeader("Content-Length", String.valueOf(file.length())); + response.setHeader("Content-Type", fileType); + response.setHeader("Content-Disposition", "attachment; filename*=UTF-8\'\'" + fileName); + + BufferedInputStream inputStream = null; + try { + FileInputStream fileInputStream = new FileInputStream(file); + inputStream = new BufferedInputStream(fileInputStream); + int readBytes = 0; + while ((readBytes = inputStream.read()) != -1) + writer.write(readBytes); + }catch (Exception e){ + e.printStackTrace(); + }finally { + try { + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + private static void delete(File f) throws Exception { if (f.isDirectory()) { for (File c : f.listFiles()) diff --git a/web/documentserver-example/java/src/main/webapp/editor.jsp b/web/documentserver-example/java/src/main/webapp/editor.jsp index 535d35ed..0b0cf6fc 100644 --- a/web/documentserver-example/java/src/main/webapp/editor.jsp +++ b/web/documentserver-example/java/src/main/webapp/editor.jsp @@ -86,6 +86,10 @@ docEditor.setActionLink(replaceActionLink(location.href, linkParam)); }; + var onRequestCompareFile = function() { + docEditor.setRevisedFile(${dataCompareFile}); + }; + var config = JSON.parse('<%= FileModel.Serialize(Model) %>'); config.width = "100%"; config.height = "100%"; @@ -96,6 +100,7 @@ "onError": onError, "onOutdatedVersion": onOutdatedVersion, "onMakeActionLink": onMakeActionLink, + "onRequestCompareFile": onRequestCompareFile, }; <% From e08e6f5f271f1eb2602db1741e0ae8bb16447d62 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Fri, 27 Nov 2020 11:34:10 +0300 Subject: [PATCH 052/141] java: jwt for compare-file --- .../java/src/main/java/controllers/EditorServlet.java | 1 + 1 file changed, 1 insertion(+) diff --git a/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java b/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java index 659ed9e6..c34d0658 100644 --- a/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java +++ b/web/documentserver-example/java/src/main/java/controllers/EditorServlet.java @@ -74,6 +74,7 @@ public class EditorServlet extends HttpServlet if (DocumentManager.TokenEnabled()) { file.BuildToken(); + dataCompareFile.put("token", DocumentManager.CreateToken(dataCompareFile)); } Gson gson = new Gson(); From bbff0206c19365849b34e6e01081edff06a929d0 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Fri, 27 Nov 2020 13:09:10 +0300 Subject: [PATCH 053/141] php: fix filename (7b017c15f8fee6a1febf2661ba7171d530f1872d) --- web/documentserver-example/php/webeditor-ajax.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/documentserver-example/php/webeditor-ajax.php b/web/documentserver-example/php/webeditor-ajax.php index 1c054c07..fd79a78e 100644 --- a/web/documentserver-example/php/webeditor-ajax.php +++ b/web/documentserver-example/php/webeditor-ajax.php @@ -317,7 +317,7 @@ function delTree($dir) { } function download(){ - $fileName = $_GET["name"]; + $fileName = basename($_GET["name"]); $file = dirname(__FILE__) . DIRECTORY_SEPARATOR . "app_data" . DIRECTORY_SEPARATOR . $fileName; if (file_exists($file)) { if (ob_get_level()) { From aa16df8de72e9f2f3b75424f1597dc8a2cb08ad1 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Fri, 27 Nov 2020 15:25:47 +0300 Subject: [PATCH 054/141] java: fix filename (38cc631e2e9b03b6d2d19d92c3ab3d49af895864) --- .../java/src/main/java/controllers/IndexServlet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 ce753183..d71a535e 100644 --- a/web/documentserver-example/java/src/main/java/controllers/IndexServlet.java +++ b/web/documentserver-example/java/src/main/java/controllers/IndexServlet.java @@ -389,7 +389,7 @@ public class IndexServlet extends HttpServlet response.setHeader("Content-Length", String.valueOf(file.length())); response.setHeader("Content-Type", fileType); - response.setHeader("Content-Disposition", "attachment; filename*=UTF-8\'\'" + fileName); + response.setHeader("Content-Disposition", "attachment; filename*=UTF-8\'\'" + file.getName()); BufferedInputStream inputStream = null; try { From 7c10a0fe821a0ef745afe26aa2512a8e6ce068d0 Mon Sep 17 00:00:00 2001 From: Gurov Max Date: Fri, 27 Nov 2020 16:22:57 +0300 Subject: [PATCH 055/141] csharp-mvc: banner --- .../csharp-mvc/Content/images/logo.png | Bin 5532 -> 0 bytes .../csharp-mvc/Content/images/logo.svg | 15 +++++++++++++++ .../csharp-mvc/Content/stylesheet.css | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) delete mode 100644 web/documentserver-example/csharp-mvc/Content/images/logo.png create mode 100644 web/documentserver-example/csharp-mvc/Content/images/logo.svg diff --git a/web/documentserver-example/csharp-mvc/Content/images/logo.png b/web/documentserver-example/csharp-mvc/Content/images/logo.png deleted file mode 100644 index a1d4b639cdb20b155496650f452a6578db5dd7a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5532 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 diff --git a/web/documentserver-example/csharp-mvc/Content/images/logo.svg b/web/documentserver-example/csharp-mvc/Content/images/logo.svg new file mode 100644 index 00000000..fafbb3a7 --- /dev/null +++ b/web/documentserver-example/csharp-mvc/Content/images/logo.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/documentserver-example/csharp-mvc/Content/stylesheet.css b/web/documentserver-example/csharp-mvc/Content/stylesheet.css index 73798b57..ab2ba6c0 100644 --- a/web/documentserver-example/csharp-mvc/Content/stylesheet.css +++ b/web/documentserver-example/csharp-mvc/Content/stylesheet.css @@ -44,7 +44,7 @@ a, a:hover, a:visited { .top-panel { - background: url("images/logo.png") no-repeat 30px center #3D4A6B; + background: url("images/logo.svg") no-repeat 30px center #3D4A6B; height: 80px; width: 100%; } From 1feb56e397bd0d715fefe4b73c32b70fd343d6d4 Mon Sep 17 00:00:00 2001 From: Gurov Max Date: Fri, 27 Nov 2020 17:14:34 +0300 Subject: [PATCH 056/141] csharp-mvc: added .fb2 to ConverExtList --- web/documentserver-example/csharp-mvc/web.appsettings.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/documentserver-example/csharp-mvc/web.appsettings.config b/web/documentserver-example/csharp-mvc/web.appsettings.config index 966deef0..8f203b8b 100644 --- a/web/documentserver-example/csharp-mvc/web.appsettings.config +++ b/web/documentserver-example/csharp-mvc/web.appsettings.config @@ -11,7 +11,7 @@ - + From 02db6fa76a05b8f14176fa11f7509b0f2f671669 Mon Sep 17 00:00:00 2001 From: Gurov Max Date: Fri, 27 Nov 2020 17:16:06 +0300 Subject: [PATCH 057/141] csharp: added .fb2 to ConverExtList --- web/documentserver-example/csharp/settings.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/documentserver-example/csharp/settings.config b/web/documentserver-example/csharp/settings.config index 2f667a6e..7a8b27a1 100644 --- a/web/documentserver-example/csharp/settings.config +++ b/web/documentserver-example/csharp/settings.config @@ -7,7 +7,7 @@ - + From 301775aafd5e961c6b039daf3be4ee922eb8d7de Mon Sep 17 00:00:00 2001 From: Gurov Max Date: Wed, 2 Dec 2020 19:01:55 +0300 Subject: [PATCH 058/141] csharp: mail-merge --- .../csharp/App_Data/csv.csv | 26 +++++++++++++++++++ .../csharp/DocEditor.aspx | 5 ++++ .../csharp/DocEditor.aspx.cs | 12 +++++++++ .../csharp/WebEditor.ashx.cs | 26 ++++++++++++++++++- 4 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 web/documentserver-example/csharp/App_Data/csv.csv diff --git a/web/documentserver-example/csharp/App_Data/csv.csv b/web/documentserver-example/csharp/App_Data/csv.csv new file mode 100644 index 00000000..20281da7 --- /dev/null +++ b/web/documentserver-example/csharp/App_Data/csv.csv @@ -0,0 +1,26 @@ +Rank,Country,Gold,Silver,Bronze,Total +1,USA,46,37,38,121 +2,Great Britain,27,23,17,67 +3,China,26,18,26,70 +4,Russia,19,18,19,56 +5,Germany,17,10,15,42 +6,Japan,12,8,21,41 +7,France,10,18,14,42 +8,South Korea,9,3,9,21 +9,Italy,8,12,8,28 +10,Australia,8,11,10,29 +11,Netherlands,8,7,4,19 +12,Hungary,8,3,4,15 +13,Brazil,7,6,6,19 +14,Spain,7,4,6,17 +15,Kenya,6,6,1,13 +16,Jamaica,6,3,2,11 +17,Croatia,5,3,2,10 +18,Cuba,5,2,4,11 +19,New Zealand,4,9,5,18 +20,Canada,4,3,15,22 +21,Uzbekistan,4,2,7,13 +22,Kazakhstan,3,5,9,17 +23,Colombia,3,2,3,8 +24,Switzerland,3,2,2,7 +25,Iran,3,1,4,8 \ No newline at end of file diff --git a/web/documentserver-example/csharp/DocEditor.aspx b/web/documentserver-example/csharp/DocEditor.aspx index eaa8cfcd..5aa9e80a 100644 --- a/web/documentserver-example/csharp/DocEditor.aspx +++ b/web/documentserver-example/csharp/DocEditor.aspx @@ -107,6 +107,10 @@ } return link; } + var onRequestMailMergeRecipients = function (event) { + + docEditor.setMailMergeRecipients(JSON.stringify(<%= dataMailMergeRecipients%>)); + }; var onMakeActionLink = function (event) { var actionData = event.data; @@ -126,6 +130,7 @@ 'onError': onError, 'onOutdatedVersion': onOutdatedVersion, 'onMakeActionLink': onMakeActionLink, + "onRequestMailMergeRecipients": onRequestMailMergeRecipients, }; <% if (!string.IsNullOrEmpty(History) && !string.IsNullOrEmpty(HistoryData)) diff --git a/web/documentserver-example/csharp/DocEditor.aspx.cs b/web/documentserver-example/csharp/DocEditor.aspx.cs index 6691e305..5bdb44bb 100644 --- a/web/documentserver-example/csharp/DocEditor.aspx.cs +++ b/web/documentserver-example/csharp/DocEditor.aspx.cs @@ -55,6 +55,7 @@ namespace OnlineEditorsExample protected string DocConfig { get; private set; } protected string History { get; private set; } protected string HistoryData { get; private set; } + protected string dataMailMergeRecipients { get; private set; } public static string CallbackUrl { @@ -185,9 +186,20 @@ namespace OnlineEditorsExample try { + var mailMergeConfig = new Dictionary + { + { "fileType", "csv" }, + { "url", _Default.Host + "~webeditor.ashx?type=csv"} + }; + if (JwtManager.Enabled) + { + var mailmergeToken = JwtManager.Encode(mailMergeConfig); + mailMergeConfig.Add("token", mailmergeToken); + } Dictionary hist; Dictionary histData; GetHistory(out hist, out histData); + dataMailMergeRecipients = jss.Serialize(mailMergeConfig); if (hist != null && histData != null) { History = jss.Serialize(hist); diff --git a/web/documentserver-example/csharp/WebEditor.ashx.cs b/web/documentserver-example/csharp/WebEditor.ashx.cs index 9dfeac03..8b0f67d8 100644 --- a/web/documentserver-example/csharp/WebEditor.ashx.cs +++ b/web/documentserver-example/csharp/WebEditor.ashx.cs @@ -48,6 +48,9 @@ namespace OnlineEditorsExample case "remove": Remove(context); break; + case "csv": + GetCsv(context); + break; } } @@ -237,7 +240,28 @@ namespace OnlineEditorsExample } } } - + private static void GetCsv(HttpContext context) + { + var filename = "csv.csv"; + var csvPath = Path.Combine(Path.Combine(Directory.GetCurrentDirectory(), "App_Data"), filename); + var fileinf = new FileInfo(filename); + context.Response.AddHeader("Content-Length", BytesToString(fileinf.Length)); + context.Response.AddHeader("Content-Type", MimeMapping.GetMimeMapping(csvPath)); + var tmp = HttpUtility.UrlEncode(filename); + tmp = tmp.Replace("+", "%20"); + context.Response.AddHeader("Content-Disposition", "attachment; filename*=UTF-8\'\'" + tmp); + context.Response.TransmitFile(filename); + } + public static String BytesToString(long byteCount) + { + string[] suf = { "Byt", "KB", "MB", "GB", "TB", "PB", "EB" }; // + if (byteCount == 0) + return "0" + suf[0]; + long bytes = Math.Abs(byteCount); + int place = System.Convert.ToInt32(Math.Floor(Math.Log(bytes, 1024))); + double num = Math.Round(bytes / Math.Pow(1024, place), 1); + return (Math.Sign(byteCount) * num).ToString() + suf[place]; + } public bool IsReusable { get { return false; } From ab68d95f5d650f67089b50b06c406b8fa9a944fe Mon Sep 17 00:00:00 2001 From: Gurov Max Date: Wed, 2 Dec 2020 19:22:20 +0300 Subject: [PATCH 059/141] csharp-mvc: mail-merge --- .../csharp-mvc/App_Data/csv.csv | 26 +++++++++++++++++++ .../csharp-mvc/Models/FileModel.cs | 16 ++++++++++++ .../csharp-mvc/Views/Home/Editor.aspx | 7 +++++ .../csharp-mvc/Web.config | 4 +++ .../csharp-mvc/WebEditor.ashx.cs | 26 ++++++++++++++++++- 5 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 web/documentserver-example/csharp-mvc/App_Data/csv.csv diff --git a/web/documentserver-example/csharp-mvc/App_Data/csv.csv b/web/documentserver-example/csharp-mvc/App_Data/csv.csv new file mode 100644 index 00000000..20281da7 --- /dev/null +++ b/web/documentserver-example/csharp-mvc/App_Data/csv.csv @@ -0,0 +1,26 @@ +Rank,Country,Gold,Silver,Bronze,Total +1,USA,46,37,38,121 +2,Great Britain,27,23,17,67 +3,China,26,18,26,70 +4,Russia,19,18,19,56 +5,Germany,17,10,15,42 +6,Japan,12,8,21,41 +7,France,10,18,14,42 +8,South Korea,9,3,9,21 +9,Italy,8,12,8,28 +10,Australia,8,11,10,29 +11,Netherlands,8,7,4,19 +12,Hungary,8,3,4,15 +13,Brazil,7,6,6,19 +14,Spain,7,4,6,17 +15,Kenya,6,6,1,13 +16,Jamaica,6,3,2,11 +17,Croatia,5,3,2,10 +18,Cuba,5,2,4,11 +19,New Zealand,4,9,5,18 +20,Canada,4,3,15,22 +21,Uzbekistan,4,2,7,13 +22,Kazakhstan,3,5,9,17 +23,Colombia,3,2,3,8 +24,Switzerland,3,2,2,7 +25,Iran,3,1,4,8 \ No newline at end of file diff --git a/web/documentserver-example/csharp-mvc/Models/FileModel.cs b/web/documentserver-example/csharp-mvc/Models/FileModel.cs index b35b57a5..fd15c770 100644 --- a/web/documentserver-example/csharp-mvc/Models/FileModel.cs +++ b/web/documentserver-example/csharp-mvc/Models/FileModel.cs @@ -148,6 +148,22 @@ namespace OnlineEditorsExampleMVC.Models return jss.Serialize(config); } + public void GetMailMergeConfig(out string dataMailMergeRecipients, UrlHelper url) + { + dataMailMergeRecipients = null; + var jss = new JavaScriptSerializer(); + var mailMergeConfig = new Dictionary + { + { "fileType", "csv" }, + { "url", url.Content("~/webeditor.ashx?type=csv")} + }; + if (JwtManager.Enabled) + { + var mailmergeToken = JwtManager.Encode(mailMergeConfig); + mailMergeConfig.Add("token", mailmergeToken); + } + dataMailMergeRecipients = jss.Serialize(mailMergeConfig); + } public void GetHistory(out string history, out string historyData) { var jss = new JavaScriptSerializer(); diff --git a/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx b/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx index affd2e0b..e3a3184c 100644 --- a/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx +++ b/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx @@ -74,6 +74,12 @@ location.reload(true); }; + var onRequestMailMergeRecipients = function (event) { + <% string dataMailMergeRecipients; %> + <% Model.GetMailMergeConfig(out dataMailMergeRecipients,Url); %> + docEditor.setMailMergeRecipients(JSON.stringify(<%= dataMailMergeRecipients%>)); + }; + var replaceActionLink = function(href, linkParam) { var link; var actionIndex = href.indexOf("&actionLink="); @@ -108,6 +114,7 @@ 'onError': onError, 'onOutdatedVersion': onOutdatedVersion, "onMakeActionLink": onMakeActionLink, + "onRequestMailMergeRecipients": onRequestMailMergeRecipients, }; <% string hist, histData; %> diff --git a/web/documentserver-example/csharp-mvc/Web.config b/web/documentserver-example/csharp-mvc/Web.config index 62647d3b..0b7a6bc4 100644 --- a/web/documentserver-example/csharp-mvc/Web.config +++ b/web/documentserver-example/csharp-mvc/Web.config @@ -47,6 +47,10 @@ + + + + diff --git a/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs b/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs index 9d83e5b5..4659b826 100644 --- a/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs +++ b/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs @@ -22,7 +22,6 @@ using System.IO; using System.Linq; using System.Net; using System.Web; -using System.Web.Configuration; using System.Web.Script.Serialization; using System.Web.Services; using OnlineEditorsExampleMVC.Helpers; @@ -50,6 +49,9 @@ namespace OnlineEditorsExampleMVC case "remove": Remove(context); break; + case "csv": + GetCsv(context); + break; } } @@ -295,6 +297,28 @@ namespace OnlineEditorsExampleMVC } } } + private static void GetCsv(HttpContext context) + { + var filename = "csv.csv"; + var csvPath = Path.Combine(Path.Combine(Directory.GetCurrentDirectory(), "App_Data"), filename); + var fileinf = new FileInfo(filename); + context.Response.AddHeader("Content-Length", BytesToString(fileinf.Length)); + context.Response.AddHeader("Content-Type", MimeMapping.GetMimeMapping(csvPath)); + var tmp = HttpUtility.UrlEncode(filename); + tmp = tmp.Replace("+", "%20"); + context.Response.AddHeader("Content-Disposition", "attachment; filename*=UTF-8\'\'" + tmp); + context.Response.TransmitFile(filename); + } + public static String BytesToString(long byteCount) + { + string[] suf = { "Byt", "KB", "MB", "GB", "TB", "PB", "EB" }; // + if (byteCount == 0) + return "0" + suf[0]; + long bytes = Math.Abs(byteCount); + int place = System.Convert.ToInt32(Math.Floor(Math.Log(bytes, 1024))); + double num = Math.Round(bytes / Math.Pow(1024, place), 1); + return (Math.Sign(byteCount) * num).ToString() + suf[place]; + } public bool IsReusable { From d5a6c1e605e1a2584490e60c8b3b6d23e9c15d1d Mon Sep 17 00:00:00 2001 From: Gurov Max Date: Fri, 4 Dec 2020 12:33:22 +0300 Subject: [PATCH 060/141] csharp: fix mail-merge --- .../csharp/App_Data/csv.csv | 2 +- .../csharp/DocEditor.aspx | 3 +-- .../csharp/DocEditor.aspx.cs | 8 +++++++- .../csharp/OnlineEditorsExample.csproj | 1 + .../csharp/WebEditor.ashx.cs | 20 +++++-------------- 5 files changed, 15 insertions(+), 19 deletions(-) diff --git a/web/documentserver-example/csharp/App_Data/csv.csv b/web/documentserver-example/csharp/App_Data/csv.csv index 20281da7..dbea8a0f 100644 --- a/web/documentserver-example/csharp/App_Data/csv.csv +++ b/web/documentserver-example/csharp/App_Data/csv.csv @@ -1,4 +1,4 @@ -Rank,Country,Gold,Silver,Bronze,Total +Rank,Country,Gold,Silver,Bronze,Total 1,USA,46,37,38,121 2,Great Britain,27,23,17,67 3,China,26,18,26,70 diff --git a/web/documentserver-example/csharp/DocEditor.aspx b/web/documentserver-example/csharp/DocEditor.aspx index 5aa9e80a..668df3a1 100644 --- a/web/documentserver-example/csharp/DocEditor.aspx +++ b/web/documentserver-example/csharp/DocEditor.aspx @@ -108,8 +108,7 @@ return link; } var onRequestMailMergeRecipients = function (event) { - - docEditor.setMailMergeRecipients(JSON.stringify(<%= dataMailMergeRecipients%>)); + docEditor.setMailMergeRecipients(<%= dataMailMergeRecipients%>); }; var onMakeActionLink = function (event) { diff --git a/web/documentserver-example/csharp/DocEditor.aspx.cs b/web/documentserver-example/csharp/DocEditor.aspx.cs index 5bdb44bb..efc058e6 100644 --- a/web/documentserver-example/csharp/DocEditor.aspx.cs +++ b/web/documentserver-example/csharp/DocEditor.aspx.cs @@ -186,10 +186,16 @@ namespace OnlineEditorsExample try { + var mailmergeUrl = _Default.Host; + mailmergeUrl.Path = + HttpRuntime.AppDomainAppVirtualPath + + (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/") + + "webeditor.ashx"; + mailmergeUrl.Query = "type=csv"; var mailMergeConfig = new Dictionary { { "fileType", "csv" }, - { "url", _Default.Host + "~webeditor.ashx?type=csv"} + { "url", mailmergeUrl.ToString()} }; if (JwtManager.Enabled) { diff --git a/web/documentserver-example/csharp/OnlineEditorsExample.csproj b/web/documentserver-example/csharp/OnlineEditorsExample.csproj index b7b3cf82..4baffa19 100644 --- a/web/documentserver-example/csharp/OnlineEditorsExample.csproj +++ b/web/documentserver-example/csharp/OnlineEditorsExample.csproj @@ -152,6 +152,7 @@ + diff --git a/web/documentserver-example/csharp/WebEditor.ashx.cs b/web/documentserver-example/csharp/WebEditor.ashx.cs index 8b0f67d8..bf0f26e0 100644 --- a/web/documentserver-example/csharp/WebEditor.ashx.cs +++ b/web/documentserver-example/csharp/WebEditor.ashx.cs @@ -243,24 +243,14 @@ namespace OnlineEditorsExample private static void GetCsv(HttpContext context) { var filename = "csv.csv"; - var csvPath = Path.Combine(Path.Combine(Directory.GetCurrentDirectory(), "App_Data"), filename); - var fileinf = new FileInfo(filename); - context.Response.AddHeader("Content-Length", BytesToString(fileinf.Length)); + var csvPath = HttpRuntime.AppDomainAppPath + "app_data/" + filename; + FileInfo fileinf = new FileInfo(csvPath); + context.Response.AddHeader("Content-Length", "" + fileinf.Length); context.Response.AddHeader("Content-Type", MimeMapping.GetMimeMapping(csvPath)); - var tmp = HttpUtility.UrlEncode(filename); + var tmp = HttpUtility.UrlEncode(csvPath); tmp = tmp.Replace("+", "%20"); context.Response.AddHeader("Content-Disposition", "attachment; filename*=UTF-8\'\'" + tmp); - context.Response.TransmitFile(filename); - } - public static String BytesToString(long byteCount) - { - string[] suf = { "Byt", "KB", "MB", "GB", "TB", "PB", "EB" }; // - if (byteCount == 0) - return "0" + suf[0]; - long bytes = Math.Abs(byteCount); - int place = System.Convert.ToInt32(Math.Floor(Math.Log(bytes, 1024))); - double num = Math.Round(bytes / Math.Pow(1024, place), 1); - return (Math.Sign(byteCount) * num).ToString() + suf[place]; + context.Response.TransmitFile(csvPath); } public bool IsReusable { From a0100883953c9fe19b56d30d898ed35477c1ec94 Mon Sep 17 00:00:00 2001 From: Gurov Max Date: Fri, 4 Dec 2020 12:35:06 +0300 Subject: [PATCH 061/141] csharp-mvc: fix mail-merge --- .../csharp-mvc/App_Data/csv.csv | 2 +- .../csharp-mvc/Models/FileModel.cs | 13 +++++++++--- .../csharp-mvc/Views/Home/Editor.aspx | 4 ++-- .../csharp-mvc/WebEditor.ashx.cs | 21 +++++-------------- 4 files changed, 18 insertions(+), 22 deletions(-) diff --git a/web/documentserver-example/csharp-mvc/App_Data/csv.csv b/web/documentserver-example/csharp-mvc/App_Data/csv.csv index 20281da7..dbea8a0f 100644 --- a/web/documentserver-example/csharp-mvc/App_Data/csv.csv +++ b/web/documentserver-example/csharp-mvc/App_Data/csv.csv @@ -1,4 +1,4 @@ -Rank,Country,Gold,Silver,Bronze,Total +Rank,Country,Gold,Silver,Bronze,Total 1,USA,46,37,38,121 2,Great Britain,27,23,17,67 3,China,26,18,26,70 diff --git a/web/documentserver-example/csharp-mvc/Models/FileModel.cs b/web/documentserver-example/csharp-mvc/Models/FileModel.cs index fd15c770..f30bc4cc 100644 --- a/web/documentserver-example/csharp-mvc/Models/FileModel.cs +++ b/web/documentserver-example/csharp-mvc/Models/FileModel.cs @@ -148,14 +148,21 @@ namespace OnlineEditorsExampleMVC.Models return jss.Serialize(config); } - public void GetMailMergeConfig(out string dataMailMergeRecipients, UrlHelper url) + public void GetMailMergeConfig(out string dataMailMergeRecipients) { - dataMailMergeRecipients = null; var jss = new JavaScriptSerializer(); + var mailMergeUrl = new UriBuilder(HttpContext.Current.Request.Url) + { + Path = + HttpRuntime.AppDomainAppVirtualPath + + (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/") + + "webeditor.ashx", + Query = "type=csv" + }; var mailMergeConfig = new Dictionary { { "fileType", "csv" }, - { "url", url.Content("~/webeditor.ashx?type=csv")} + { "url", mailMergeUrl.ToString()} }; if (JwtManager.Enabled) { diff --git a/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx b/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx index e3a3184c..494cd4fa 100644 --- a/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx +++ b/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx @@ -76,8 +76,8 @@ var onRequestMailMergeRecipients = function (event) { <% string dataMailMergeRecipients; %> - <% Model.GetMailMergeConfig(out dataMailMergeRecipients,Url); %> - docEditor.setMailMergeRecipients(JSON.stringify(<%= dataMailMergeRecipients%>)); + <% Model.GetMailMergeConfig(out dataMailMergeRecipients); %> + docEditor.setMailMergeRecipients(<%= dataMailMergeRecipients%>); }; var replaceActionLink = function(href, linkParam) { diff --git a/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs b/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs index 4659b826..16ab3ad0 100644 --- a/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs +++ b/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs @@ -300,26 +300,15 @@ namespace OnlineEditorsExampleMVC private static void GetCsv(HttpContext context) { var filename = "csv.csv"; - var csvPath = Path.Combine(Path.Combine(Directory.GetCurrentDirectory(), "App_Data"), filename); - var fileinf = new FileInfo(filename); - context.Response.AddHeader("Content-Length", BytesToString(fileinf.Length)); + var csvPath = HttpRuntime.AppDomainAppPath + "app_data/" + filename; + var fileinf = new FileInfo(csvPath); + context.Response.AddHeader("Content-Length", fileinf.Length.ToString()); context.Response.AddHeader("Content-Type", MimeMapping.GetMimeMapping(csvPath)); - var tmp = HttpUtility.UrlEncode(filename); + var tmp = HttpUtility.UrlEncode(csvPath); tmp = tmp.Replace("+", "%20"); context.Response.AddHeader("Content-Disposition", "attachment; filename*=UTF-8\'\'" + tmp); - context.Response.TransmitFile(filename); + context.Response.TransmitFile(csvPath); } - public static String BytesToString(long byteCount) - { - string[] suf = { "Byt", "KB", "MB", "GB", "TB", "PB", "EB" }; // - if (byteCount == 0) - return "0" + suf[0]; - long bytes = Math.Abs(byteCount); - int place = System.Convert.ToInt32(Math.Floor(Math.Log(bytes, 1024))); - double num = Math.Round(bytes / Math.Pow(1024, place), 1); - return (Math.Sign(byteCount) * num).ToString() + suf[place]; - } - public bool IsReusable { get { return false; } From 7ced0591bda7f7071f686034cec4ae9c1bd211a3 Mon Sep 17 00:00:00 2001 From: Gurov Max Date: Fri, 4 Dec 2020 18:19:54 +0300 Subject: [PATCH 062/141] csharp-mvc: insert-image --- .../csharp-mvc/Models/FileModel.cs | 26 ++++++++++++++++++- .../csharp-mvc/Views/Home/Editor.aspx | 9 +++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/web/documentserver-example/csharp-mvc/Models/FileModel.cs b/web/documentserver-example/csharp-mvc/Models/FileModel.cs index b35b57a5..e037e48c 100644 --- a/web/documentserver-example/csharp-mvc/Models/FileModel.cs +++ b/web/documentserver-example/csharp-mvc/Models/FileModel.cs @@ -147,7 +147,31 @@ namespace OnlineEditorsExampleMVC.Models return jss.Serialize(config); } - + public void GetLogoConfig(out string logoUrl) + { + var jss = new JavaScriptSerializer(); + var mailMergeUrl = new UriBuilder(HttpContext.Current.Request.Url) + { + Path = + HttpRuntime.AppDomainAppVirtualPath + + (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/") + + "Content\\images\\logo.png" + }; + var logoConfig = new Dictionary + { + { "fileType", "png"}, + { "url", mailMergeUrl.ToString()} + }; + if (JwtManager.Enabled) + { + var token = JwtManager.Encode(logoConfig); + logoConfig.Add("token", token); + } + var tmp = jss.Serialize(logoConfig); + tmp = tmp.Replace("{", ""); + tmp = tmp.Replace("}", ""); + logoUrl = tmp; + } public void GetHistory(out string history, out string historyData) { var jss = new JavaScriptSerializer(); diff --git a/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx b/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx index affd2e0b..e144c0c1 100644 --- a/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx +++ b/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx @@ -74,6 +74,14 @@ location.reload(true); }; + var onRequestInsertImage = function (event) { + <% string logoUrl;%> + <% Model.GetLogoConfig(out logoUrl); %> + docEditor.insertImage({ + "c": event.data.c, + <%= logoUrl%> + }) + }; var replaceActionLink = function(href, linkParam) { var link; var actionIndex = href.indexOf("&actionLink="); @@ -108,6 +116,7 @@ 'onError': onError, 'onOutdatedVersion': onOutdatedVersion, "onMakeActionLink": onMakeActionLink, + "onRequestInsertImage": onRequestInsertImage, }; <% string hist, histData; %> From 18a4dc20eb2edacf7a87e6caa6c251934cc9925c Mon Sep 17 00:00:00 2001 From: Gurov Max Date: Fri, 4 Dec 2020 19:03:02 +0300 Subject: [PATCH 063/141] csharp: insert-image --- .../csharp/DocEditor.aspx | 8 +++++++ .../csharp/DocEditor.aspx.cs | 21 ++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/web/documentserver-example/csharp/DocEditor.aspx b/web/documentserver-example/csharp/DocEditor.aspx index eaa8cfcd..77f86ea7 100644 --- a/web/documentserver-example/csharp/DocEditor.aspx +++ b/web/documentserver-example/csharp/DocEditor.aspx @@ -108,6 +108,13 @@ return link; } + var onRequestInsertImage = function (event) { + docEditor.insertImage({ + "c": event.data.c, + <%= InsertImageConfig%> + }) + }; + var onMakeActionLink = function (event) { var actionData = event.data; var linkParam = JSON.stringify(actionData); @@ -126,6 +133,7 @@ 'onError': onError, 'onOutdatedVersion': onOutdatedVersion, 'onMakeActionLink': onMakeActionLink, + 'onRequestInsertImage': onRequestInsertImage, }; <% if (!string.IsNullOrEmpty(History) && !string.IsNullOrEmpty(HistoryData)) diff --git a/web/documentserver-example/csharp/DocEditor.aspx.cs b/web/documentserver-example/csharp/DocEditor.aspx.cs index 6691e305..4b3301db 100644 --- a/web/documentserver-example/csharp/DocEditor.aspx.cs +++ b/web/documentserver-example/csharp/DocEditor.aspx.cs @@ -55,7 +55,7 @@ namespace OnlineEditorsExample protected string DocConfig { get; private set; } protected string History { get; private set; } protected string HistoryData { get; private set; } - + protected string InsertImageConfig { get; private set; } public static string CallbackUrl { get @@ -185,8 +185,27 @@ namespace OnlineEditorsExample try { + var InsertImageUrl = _Default.Host; + InsertImageUrl.Path = + HttpRuntime.AppDomainAppVirtualPath + + (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/") + + "App_Themes\\images\\logo.png"; + var logoConfig = new Dictionary + { + { "fileType", "png"}, + { "url", InsertImageUrl.ToString()} + }; + if (JwtManager.Enabled) + { + var insImageToken = JwtManager.Encode(logoConfig); + logoConfig.Add("token", insImageToken); + } Dictionary hist; Dictionary histData; + var tmp = jss.Serialize(logoConfig); + tmp = tmp.Replace("{", ""); + tmp = tmp.Replace("}", ""); + InsertImageConfig = tmp; GetHistory(out hist, out histData); if (hist != null && histData != null) { From 4193089de4268ee4b15ebcc47977b9148d30ec60 Mon Sep 17 00:00:00 2001 From: Gurov Max Date: Sat, 5 Dec 2020 12:07:56 +0300 Subject: [PATCH 064/141] csharp-mvc: compare-file --- .../csharp-mvc/Models/FileModel.cs | 26 +++++++++++++++++++ .../csharp-mvc/Views/Home/Editor.aspx | 7 +++++ .../csharp-mvc/WebEditor.ashx.cs | 16 +++++++++++- 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/web/documentserver-example/csharp-mvc/Models/FileModel.cs b/web/documentserver-example/csharp-mvc/Models/FileModel.cs index b35b57a5..13cb1a8f 100644 --- a/web/documentserver-example/csharp-mvc/Models/FileModel.cs +++ b/web/documentserver-example/csharp-mvc/Models/FileModel.cs @@ -54,6 +54,32 @@ namespace OnlineEditorsExampleMVC.Models get { return DocManagerHelper.GetCallback(FileName); } } + public void GetCompareFileData(out string compareConfig) + { + var jss = new JavaScriptSerializer(); + var compareFileUrl = new UriBuilder(HttpContext.Current.Request.Url) + { + Path = + HttpRuntime.AppDomainAppVirtualPath + + (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/") + + "webeditor.ashx", + Query = + "type=download" + + "&fileName=" + HttpUtility.UrlEncode("sample.docx") + }; + var dataCompareFile = new Dictionary + { + { "fileType", "docx" }, + { "url", compareFileUrl.ToString() } + }; + if (JwtManager.Enabled) + { + var compareFileToken = JwtManager.Encode(dataCompareFile); + dataCompareFile.Add("token", compareFileToken); + } + compareConfig = jss.Serialize(dataCompareFile); + } + public string GetDocConfig(HttpRequest request, UrlHelper url) { var jss = new JavaScriptSerializer(); diff --git a/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx b/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx index affd2e0b..6d85485a 100644 --- a/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx +++ b/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx @@ -74,6 +74,12 @@ location.reload(true); }; + var onRequestCompareFile = function () { + <% string compareFileData; %> + <% Model.GetCompareFileData(out compareFileData); %> + docEditor.setRevisedFile(<%=compareFileData%>); + }; + var replaceActionLink = function(href, linkParam) { var link; var actionIndex = href.indexOf("&actionLink="); @@ -108,6 +114,7 @@ 'onError': onError, 'onOutdatedVersion': onOutdatedVersion, "onMakeActionLink": onMakeActionLink, + "onRequestCompareFile": onRequestCompareFile, }; <% string hist, histData; %> diff --git a/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs b/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs index 9d83e5b5..869d0281 100644 --- a/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs +++ b/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs @@ -50,6 +50,9 @@ namespace OnlineEditorsExampleMVC case "remove": Remove(context); break; + case "download": + Download(context); + break; } } @@ -295,7 +298,18 @@ namespace OnlineEditorsExampleMVC } } } - + private static void Download(HttpContext context) + { + var filename = context.Request["filename"]; + var csvPath = HttpRuntime.AppDomainAppPath + "app_data/" + filename; + var fileinf = new FileInfo(csvPath); + context.Response.AddHeader("Content-Length", fileinf.Length.ToString()); + context.Response.AddHeader("Content-Type", MimeMapping.GetMimeMapping(csvPath)); + var tmp = HttpUtility.UrlEncode(csvPath); + tmp = tmp.Replace("+", "%20"); + context.Response.AddHeader("Content-Disposition", "attachment; filename*=UTF-8\'\'" + tmp); + context.Response.TransmitFile(csvPath); + } public bool IsReusable { get { return false; } From aa5f1e3df4e69cfe26de131106514ff3c44e7c9e Mon Sep 17 00:00:00 2001 From: Gurov Max Date: Sat, 5 Dec 2020 12:22:35 +0300 Subject: [PATCH 065/141] csharp: compare-file --- .../csharp/DocEditor.aspx | 5 +++++ .../csharp/DocEditor.aspx.cs | 19 ++++++++++++++++++- .../csharp/WebEditor.ashx.cs | 16 +++++++++++++++- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/web/documentserver-example/csharp/DocEditor.aspx b/web/documentserver-example/csharp/DocEditor.aspx index eaa8cfcd..924836a3 100644 --- a/web/documentserver-example/csharp/DocEditor.aspx +++ b/web/documentserver-example/csharp/DocEditor.aspx @@ -108,6 +108,10 @@ return link; } + var onRequestCompareFile = function () { + docEditor.setRevisedFile(<%= compareFileData%>); + }; + var onMakeActionLink = function (event) { var actionData = event.data; var linkParam = JSON.stringify(actionData); @@ -126,6 +130,7 @@ 'onError': onError, 'onOutdatedVersion': onOutdatedVersion, 'onMakeActionLink': onMakeActionLink, + 'onRequestCompareFile': onRequestCompareFile, }; <% if (!string.IsNullOrEmpty(History) && !string.IsNullOrEmpty(HistoryData)) diff --git a/web/documentserver-example/csharp/DocEditor.aspx.cs b/web/documentserver-example/csharp/DocEditor.aspx.cs index 6691e305..ab9cada8 100644 --- a/web/documentserver-example/csharp/DocEditor.aspx.cs +++ b/web/documentserver-example/csharp/DocEditor.aspx.cs @@ -55,7 +55,7 @@ namespace OnlineEditorsExample protected string DocConfig { get; private set; } protected string History { get; private set; } protected string HistoryData { get; private set; } - + protected string compareFileData { get; private set; } public static string CallbackUrl { get @@ -185,6 +185,23 @@ namespace OnlineEditorsExample try { + var compareFileUrl = _Default.Host; + compareFileUrl.Path = + HttpRuntime.AppDomainAppVirtualPath + + (HttpRuntime.AppDomainAppVirtualPath.EndsWith("/") ? "" : "/") + + "webeditor.ashx"; + compareFileUrl.Query = "type=download" + "&fileName=" + HttpUtility.UrlEncode("demo.docx"); + var dataCompareFile = new Dictionary + { + { "fileType", "docx" }, + { "url", compareFileUrl.ToString() } + }; + if (JwtManager.Enabled) + { + var compareFileToken = JwtManager.Encode(dataCompareFile); + dataCompareFile.Add("token", compareFileToken); + } + compareFileData = jss.Serialize(dataCompareFile); Dictionary hist; Dictionary histData; GetHistory(out hist, out histData); diff --git a/web/documentserver-example/csharp/WebEditor.ashx.cs b/web/documentserver-example/csharp/WebEditor.ashx.cs index 9dfeac03..ebfb2f79 100644 --- a/web/documentserver-example/csharp/WebEditor.ashx.cs +++ b/web/documentserver-example/csharp/WebEditor.ashx.cs @@ -48,6 +48,9 @@ namespace OnlineEditorsExample case "remove": Remove(context); break; + case "download": + Download(context); + break; } } @@ -237,7 +240,18 @@ namespace OnlineEditorsExample } } } - + private static void Download(HttpContext context) + { + var filename = context.Request["filename"]; + var csvPath = HttpRuntime.AppDomainAppPath + "app_data/" + filename; + FileInfo fileinf = new FileInfo(csvPath); + context.Response.AddHeader("Content-Length", "" + fileinf.Length); + context.Response.AddHeader("Content-Type", MimeMapping.GetMimeMapping(csvPath)); + var tmp = HttpUtility.UrlEncode(csvPath); + tmp = tmp.Replace("+", "%20"); + context.Response.AddHeader("Content-Disposition", "attachment; filename*=UTF-8\'\'" + tmp); + context.Response.TransmitFile(csvPath); + } public bool IsReusable { get { return false; } From 7e2d83f04e64b9d33c28024f9fcaf3215066c7a5 Mon Sep 17 00:00:00 2001 From: Gurov Max Date: Sun, 6 Dec 2020 13:28:13 +0300 Subject: [PATCH 066/141] csharp-mvc: jwt for HistoryData --- web/documentserver-example/csharp-mvc/Models/FileModel.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/web/documentserver-example/csharp-mvc/Models/FileModel.cs b/web/documentserver-example/csharp-mvc/Models/FileModel.cs index b35b57a5..bfae83ce 100644 --- a/web/documentserver-example/csharp-mvc/Models/FileModel.cs +++ b/web/documentserver-example/csharp-mvc/Models/FileModel.cs @@ -208,7 +208,11 @@ namespace OnlineEditorsExampleMVC.Models }); dataObj.Add("changesUrl", DocManagerHelper.GetPathUri(Path.Combine(DocManagerHelper.VersionDir(histDir, i), "diff.zip").Substring(HttpRuntime.AppDomainAppPath.Length))); } - + if(JwtManager.Enabled) + { + var token = JwtManager.Encode(dataObj); + dataObj.Add("token", token); + } hist.Add(obj); histData.Add(i.ToString(), dataObj); } From 4dd44535996d6dce8a36b9d842ad0d5d496bdb53 Mon Sep 17 00:00:00 2001 From: Gurov Max Date: Sun, 6 Dec 2020 13:30:30 +0300 Subject: [PATCH 067/141] csharp: jwt for HistoryData --- web/documentserver-example/csharp/DocEditor.aspx.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/web/documentserver-example/csharp/DocEditor.aspx.cs b/web/documentserver-example/csharp/DocEditor.aspx.cs index 6691e305..db038ecf 100644 --- a/web/documentserver-example/csharp/DocEditor.aspx.cs +++ b/web/documentserver-example/csharp/DocEditor.aspx.cs @@ -256,7 +256,11 @@ namespace OnlineEditorsExample }); dataObj.Add("changesUrl", MakePublicUrl(Path.Combine(_Default.VersionDir(histDir, i), "diff.zip"))); } - + if (JwtManager.Enabled) + { + var token = JwtManager.Encode(dataObj); + dataObj.Add("token", token); + } hist.Add(obj); histData.Add(i.ToString(), dataObj); } From a7f7b3ebf7e0d1fc87b0cb327ec04c86a4d9df2b Mon Sep 17 00:00:00 2001 From: Sergey Konovalov Date: Wed, 9 Dec 2020 15:19:43 +0300 Subject: [PATCH 068/141] [bug] Fix "Error: "issuer" must be a string" on conversion --- .../nodejs/helpers/documentService.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/documentserver-example/nodejs/helpers/documentService.js b/web/documentserver-example/nodejs/helpers/documentService.js index 0387f3ca..0b7e3ce5 100644 --- a/web/documentserver-example/nodejs/helpers/documentService.js +++ b/web/documentserver-example/nodejs/helpers/documentService.js @@ -203,11 +203,11 @@ documentService.checkJwtHeader = function (req) { return decoded; } -documentService.fillJwtByUrl = function (uri, opt_dataObject, opt_iss, opt_payloadhash) { +documentService.fillJwtByUrl = function (uri, opt_dataObject) { var parseObject = urlModule.parse(uri, true); - var payload = {query: parseObject.query, payload: opt_dataObject, payloadhash: opt_payloadhash}; + var payload = {query: parseObject.query, payload: opt_dataObject}; - var options = {algorithm: cfgSignatureSecretAlgorithmRequest, expiresIn: cfgSignatureSecretExpiresIn, issuer: opt_iss}; + var options = {algorithm: cfgSignatureSecretAlgorithmRequest, expiresIn: cfgSignatureSecretExpiresIn}; return jwt.sign(payload, cfgSignatureSecret, options); } From c597e914a9f448537cb5ba44251e3ceb7c58986c Mon Sep 17 00:00:00 2001 From: Sergey Linnik Date: Tue, 15 Dec 2020 17:33:00 +0300 Subject: [PATCH 069/141] nodejs: favorite --- web/documentserver-example/nodejs/app.js | 3 ++- web/documentserver-example/nodejs/views/config.ejs | 3 ++- web/documentserver-example/nodejs/views/editor.ejs | 6 ++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/web/documentserver-example/nodejs/app.js b/web/documentserver-example/nodejs/app.js index d1929d64..3dd40232 100644 --- a/web/documentserver-example/nodejs/app.js +++ b/web/documentserver-example/nodejs/app.js @@ -627,7 +627,8 @@ app.get("/editor", function (req, res) { ext: fileUtility.getFileExtension(fileName, true), uri: url, version: countVersion, - created: new Date().toDateString() + created: new Date().toDateString(), + favorite: req.query.userid ? req.query.userid === "uid-2" : "null" }, editor: { type: type, diff --git a/web/documentserver-example/nodejs/views/config.ejs b/web/documentserver-example/nodejs/views/config.ejs index 41de5658..ec5925a3 100644 --- a/web/documentserver-example/nodejs/views/config.ejs +++ b/web/documentserver-example/nodejs/views/config.ejs @@ -10,7 +10,8 @@ "key": "<%- editor.key %>", "info": { "author": "Me", - "created": "<%- file.created %>" + "created": "<%- file.created %>", + "favorite": <%- file.favorite %> }, "permissions": { "comment": <%- editor.comment %>, diff --git a/web/documentserver-example/nodejs/views/editor.ejs b/web/documentserver-example/nodejs/views/editor.ejs index aee237a9..13130d08 100644 --- a/web/documentserver-example/nodejs/views/editor.ejs +++ b/web/documentserver-example/nodejs/views/editor.ejs @@ -53,6 +53,11 @@ document.title = title + (event.data ? "*" : ""); }; + var onMetaChange = function (event) { + var title = document.title.replace(/^\☆/g, ""); + document.title = (event.data.favorite ? "☆" : "") + title; + }; + var onRequestEditRights = function () { location.href = location.href.replace(RegExp("mode=view\&?", "i"), ""); }; @@ -122,6 +127,7 @@ "onRequestHistoryClose": onRequestHistoryClose, "onOutdatedVersion": onOutdatedVersion, "onMakeActionLink": onMakeActionLink, + "onMetaChange": onMetaChange } }); From 1de2571c1b477c401730affd7fc32bae507ae7f9 Mon Sep 17 00:00:00 2001 From: Sergey Konovalov Date: Tue, 15 Dec 2020 17:46:19 +0300 Subject: [PATCH 070/141] [bug] Fix invalid request to relative url after changing urllib version to 2.36.1 --- .../nodejs/helpers/documentService.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/web/documentserver-example/nodejs/helpers/documentService.js b/web/documentserver-example/nodejs/helpers/documentService.js index 0b7e3ce5..67c0750d 100644 --- a/web/documentserver-example/nodejs/helpers/documentService.js +++ b/web/documentserver-example/nodejs/helpers/documentService.js @@ -75,7 +75,8 @@ documentService.getConvertedUri = function (documentUri, fromExtension, toExtens params.token = documentService.getToken(params); } - urllib.request(uri, + //parse url to allow request by relative url after https://github.com/node-modules/urllib/pull/321/commits/514de1924bf17a38a6c2db2a22a6bc3494c0a959 + urllib.request(urlModule.parse(uri), { method: "POST", headers: headers, @@ -180,7 +181,8 @@ documentService.commandRequest = function (method, documentRevisionId, callback) params.token = documentService.getToken(params); } - urllib.request(uri, + //parse url to allow request by relative url after https://github.com/node-modules/urllib/pull/321/commits/514de1924bf17a38a6c2db2a22a6bc3494c0a959 + urllib.request(urlModule.parse(uri), { method: "POST", headers: headers, From 25906383e2c61fa37bd20a110b2ef455c5ae6b4c Mon Sep 17 00:00:00 2001 From: Sergey Linnik Date: Wed, 16 Dec 2020 09:57:29 +0300 Subject: [PATCH 071/141] nodejs: setFavorite --- web/documentserver-example/nodejs/views/editor.ejs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/web/documentserver-example/nodejs/views/editor.ejs b/web/documentserver-example/nodejs/views/editor.ejs index 13130d08..a51ec892 100644 --- a/web/documentserver-example/nodejs/views/editor.ejs +++ b/web/documentserver-example/nodejs/views/editor.ejs @@ -54,8 +54,10 @@ }; var onMetaChange = function (event) { + var favorite = !!event.data.favorite; var title = document.title.replace(/^\☆/g, ""); - document.title = (event.data.favorite ? "☆" : "") + title; + document.title = (favorite ? "☆" : "") + title; + docEditor.setFavorite(favorite); }; var onRequestEditRights = function () { From 0b03093c53f26204a00488d2d54f0bbc2db03de0 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 24 Dec 2020 22:49:22 +0300 Subject: [PATCH 072/141] java: setFavorite --- .../java/src/main/java/entities/FileModel.java | 8 ++++++++ .../java/src/main/webapp/editor.jsp | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/web/documentserver-example/java/src/main/java/entities/FileModel.java b/web/documentserver-example/java/src/main/java/entities/FileModel.java index 53840daf..00aed9ca 100644 --- a/web/documentserver-example/java/src/main/java/entities/FileModel.java +++ b/web/documentserver-example/java/src/main/java/entities/FileModel.java @@ -57,6 +57,8 @@ public class FileModel document.url = DocumentManager.GetFileUri(fileName); document.fileType = FileUtility.GetFileExtension(fileName).replace(".", ""); document.key = ServiceConverter.GenerateRevisionId(DocumentManager.CurUserHostAddress(null) + "/" + fileName + "/" + Long.toString(new File(DocumentManager.StoragePath(fileName, null)).lastModified())); + document.info = new Info(); + document.info.favorite = uid != null && !uid.isEmpty() ? uid.equals("uid-2") : null; editorConfig = new EditorConfig(actionData); editorConfig.callbackUrl = DocumentManager.GetCallback(fileName); @@ -193,6 +195,7 @@ public class FileModel public String url; public String fileType; public String key; + public Info info; public Permissions permissions; } @@ -218,6 +221,11 @@ public class FileModel } } + public class Info + { + Boolean favorite; + } + public class EditorConfig { public HashMap actionLink = null; diff --git a/web/documentserver-example/java/src/main/webapp/editor.jsp b/web/documentserver-example/java/src/main/webapp/editor.jsp index 535d35ed..dd80347a 100644 --- a/web/documentserver-example/java/src/main/webapp/editor.jsp +++ b/web/documentserver-example/java/src/main/webapp/editor.jsp @@ -86,6 +86,13 @@ docEditor.setActionLink(replaceActionLink(location.href, linkParam)); }; + var onMetaChange = function (event) { + var favorite = !!event.data.favorite; + var title = document.title.replace(/^\☆/g, ""); + document.title = (favorite ? "☆" : "") + title; + docEditor.setFavorite(favorite); + }; + var config = JSON.parse('<%= FileModel.Serialize(Model) %>'); config.width = "100%"; config.height = "100%"; @@ -96,6 +103,7 @@ "onError": onError, "onOutdatedVersion": onOutdatedVersion, "onMakeActionLink": onMakeActionLink, + "onMetaChange": onMetaChange, }; <% From b197f4c258ebf7ff9e25e653399b942925b1fdff Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 24 Dec 2020 22:50:28 +0300 Subject: [PATCH 073/141] php: setFavorite --- web/documentserver-example/php/doceditor.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/web/documentserver-example/php/doceditor.php b/web/documentserver-example/php/doceditor.php index fe1ac507..0211f59a 100644 --- a/web/documentserver-example/php/doceditor.php +++ b/web/documentserver-example/php/doceditor.php @@ -77,7 +77,8 @@ "key" => $docKey, "info" => [ "author" => "Me", - "created" => date('d.m.y') + "created" => date('d.m.y'), + "favorite" => isset($_GET["user"]) ? $_GET["user"] == 1 : null ], "permissions" => [ "comment" => $editorsMode != "view" && $editorsMode != "fillForms" && $editorsMode != "embedded" && $editorsMode != "blockcontent", @@ -308,6 +309,13 @@ docEditor.setActionLink(replaceActionLink(location.href, linkParam)); }; + var onMetaChange = function (event) { + var favorite = !!event.data.favorite; + var title = document.title.replace(/^\☆/g, ""); + document.title = (favorite ? "☆" : "") + title; + docEditor.setFavorite(favorite); + }; + var сonnectEditor = function () { Date: Thu, 24 Dec 2020 22:51:35 +0300 Subject: [PATCH 074/141] python: setFavorite --- web/documentserver-example/python/src/views/actions.py | 2 +- web/documentserver-example/python/templates/editor.html | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/web/documentserver-example/python/src/views/actions.py b/web/documentserver-example/python/src/views/actions.py index c043986e..63713429 100644 --- a/web/documentserver-example/python/src/views/actions.py +++ b/web/documentserver-example/python/src/views/actions.py @@ -141,7 +141,7 @@ def edit(request): 'author': 'Me', 'created': datetime.today().strftime('%d.%m.%Y %H:%M:%S') } - + infObj['favorite'] = request.COOKIES.get('uid') == 'uid-2' if request.COOKIES.get('uid') else None edConfig = { 'type': edType, 'documentType': fileType, diff --git a/web/documentserver-example/python/templates/editor.html b/web/documentserver-example/python/templates/editor.html index dcc86a5b..7d22d4a3 100644 --- a/web/documentserver-example/python/templates/editor.html +++ b/web/documentserver-example/python/templates/editor.html @@ -99,6 +99,13 @@ docEditor.setActionLink(replaceActionLink(location.href, linkParam)); }; + var onMetaChange = function (event) { + var favorite = !!event.data.favorite; + var title = document.title.replace(/^\☆/g, ""); + document.title = (favorite ? "☆" : "") + title; + docEditor.setFavorite(favorite); + }; + var connectEditor = function () { config = {{ cfg | safe }} @@ -111,6 +118,7 @@ 'onError': onError, 'onOutdatedVersion': onOutdatedVersion, 'onMakeActionLink': onMakeActionLink, + 'onMetaChange': onMetaChange, }; {% if history and historyData %} From 1b2cec44acda52a8350e5531608d137d3e3588fc Mon Sep 17 00:00:00 2001 From: Sergey Linnik Date: Fri, 25 Dec 2020 10:03:42 +0300 Subject: [PATCH 075/141] nodejs: mime v2 lookup renamed to getType (0a2056b1b132831903d245722f403d2885f4d913) --- web/documentserver-example/nodejs/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/documentserver-example/nodejs/app.js b/web/documentserver-example/nodejs/app.js index 93bb8877..637078fe 100644 --- a/web/documentserver-example/nodejs/app.js +++ b/web/documentserver-example/nodejs/app.js @@ -343,7 +343,7 @@ app.get("/csv", function (req, res) { var csvPath = path.join(__dirname, "public", "samples", fileName); res.setHeader("Content-Length", fileSystem.statSync(csvPath).size); - res.setHeader("Content-Type", mime.lookup(csvPath)); + res.setHeader("Content-Type", mime.getType(csvPath)); res.setHeader("Content-Disposition", "attachment; filename*=UTF-8\'\'" + encodeURIComponent(fileName)); From c96659ed9cdb1013a658f3442dad16c1e9706752 Mon Sep 17 00:00:00 2001 From: Sergey Linnik Date: Fri, 25 Dec 2020 10:02:29 +0300 Subject: [PATCH 076/141] nodejs: mime v2 lookup renamed to getType (0a2056b1b132831903d245722f403d2885f4d913) --- web/documentserver-example/nodejs/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/documentserver-example/nodejs/app.js b/web/documentserver-example/nodejs/app.js index d1929d64..67a0d8ef 100644 --- a/web/documentserver-example/nodejs/app.js +++ b/web/documentserver-example/nodejs/app.js @@ -123,7 +123,7 @@ app.get("/download", function(req, res) { } res.setHeader("Content-Length", fileSystem.statSync(path).size); - res.setHeader("Content-Type", mime.lookup(path)); + res.setHeader("Content-Type", mime.getType(path)); res.setHeader("Content-Disposition", "attachment; filename*=UTF-8\'\'" + encodeURIComponent(fileName)); From ea455421f75f7d1ec5383d47f12e558f3d9d6755 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Wed, 20 Jan 2021 12:10:22 +0300 Subject: [PATCH 077/141] csharp-mvc: fix cors --- web/documentserver-example/csharp-mvc/Web.config | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/web/documentserver-example/csharp-mvc/Web.config b/web/documentserver-example/csharp-mvc/Web.config index 62647d3b..62c6394d 100644 --- a/web/documentserver-example/csharp-mvc/Web.config +++ b/web/documentserver-example/csharp-mvc/Web.config @@ -26,6 +26,11 @@ + + + + + From aa7132e467edefc4ed7987d0a0ceece6574da827 Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Wed, 20 Jan 2021 22:31:01 +0300 Subject: [PATCH 078/141] csharp-mvc: fix-history --- .../csharp-mvc/Helpers/DocManagerHelper.cs | 4 ++-- .../csharp-mvc/Models/FileModel.cs | 16 ++++++++-------- .../csharp-mvc/Views/Home/Editor.aspx | 2 +- .../csharp-mvc/WebEditor.ashx.cs | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/web/documentserver-example/csharp-mvc/Helpers/DocManagerHelper.cs b/web/documentserver-example/csharp-mvc/Helpers/DocManagerHelper.cs index 3c385000..56252775 100644 --- a/web/documentserver-example/csharp-mvc/Helpers/DocManagerHelper.cs +++ b/web/documentserver-example/csharp-mvc/Helpers/DocManagerHelper.cs @@ -93,7 +93,7 @@ namespace OnlineEditorsExampleMVC.Helpers public static int GetFileVersion(string historyPath) { if (!Directory.Exists(historyPath)) return 0; - return Directory.EnumerateDirectories(historyPath).Count(); + return Directory.EnumerateDirectories(historyPath).Count() + 1; } public static int GetFileVersion(string fileName, string userAddress) @@ -141,7 +141,7 @@ namespace OnlineEditorsExampleMVC.Helpers var histDir = HistoryDir(StoragePath(fileName, null)); Directory.CreateDirectory(histDir); File.WriteAllText(Path.Combine(histDir, "createdInfo.json"), new JavaScriptSerializer().Serialize(new Dictionary { - { "created", DateTime.Now.ToString() }, + { "created", DateTime.Now.ToString("yyyy'-'MM'-'dd HH':'mm':'ss") }, { "id", string.IsNullOrEmpty(uid) ? "uid-1" : uid }, { "name", string.IsNullOrEmpty(uname) ? "John Smith" : uname } })); diff --git a/web/documentserver-example/csharp-mvc/Models/FileModel.cs b/web/documentserver-example/csharp-mvc/Models/FileModel.cs index b35b57a5..797714c6 100644 --- a/web/documentserver-example/csharp-mvc/Models/FileModel.cs +++ b/web/documentserver-example/csharp-mvc/Models/FileModel.cs @@ -162,18 +162,18 @@ namespace OnlineEditorsExampleMVC.Models var hist = new List>(); var histData = new Dictionary(); - for (var i = 0; i <= currentVersion; i++) + for (var i = 1; i <= currentVersion; i++) { var obj = new Dictionary(); var dataObj = new Dictionary(); - var verDir = DocManagerHelper.VersionDir(histDir, i + 1); + var verDir = DocManagerHelper.VersionDir(histDir, i); var key = i == currentVersion ? Key : File.ReadAllText(Path.Combine(verDir, "key.txt")); obj.Add("key", key); obj.Add("version", i); - if (i == 0) + if (i == 1) { var infoPath = Path.Combine(histDir, "createdInfo.json"); @@ -191,9 +191,9 @@ namespace OnlineEditorsExampleMVC.Models dataObj.Add("key", key); dataObj.Add("url", i == currentVersion ? FileUri : DocManagerHelper.GetPathUri(Directory.GetFiles(verDir, "prev.*")[0].Substring(HttpRuntime.AppDomainAppPath.Length))); dataObj.Add("version", i); - if (i > 0) + if (i > 1) { - var changes = jss.Deserialize>(File.ReadAllText(Path.Combine(DocManagerHelper.VersionDir(histDir, i), "changes.json"))); + var changes = jss.Deserialize>(File.ReadAllText(Path.Combine(DocManagerHelper.VersionDir(histDir, i - 1), "changes.json"))); var change = ((Dictionary)((ArrayList)changes["changes"])[0]); obj.Add("changes", changes["changes"]); @@ -201,16 +201,16 @@ namespace OnlineEditorsExampleMVC.Models obj.Add("created", change["created"]); obj.Add("user", change["user"]); - var prev = (Dictionary)histData[(i - 1).ToString()]; + var prev = (Dictionary)histData[(i - 2).ToString()]; dataObj.Add("previous", new Dictionary() { { "key", prev["key"] }, { "url", prev["url"] }, }); - dataObj.Add("changesUrl", DocManagerHelper.GetPathUri(Path.Combine(DocManagerHelper.VersionDir(histDir, i), "diff.zip").Substring(HttpRuntime.AppDomainAppPath.Length))); + dataObj.Add("changesUrl", DocManagerHelper.GetPathUri(Path.Combine(DocManagerHelper.VersionDir(histDir, i - 1), "diff.zip").Substring(HttpRuntime.AppDomainAppPath.Length))); } hist.Add(obj); - histData.Add(i.ToString(), dataObj); + histData.Add((i - 1).ToString(), dataObj); } history = jss.Serialize(new Dictionary() diff --git a/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx b/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx index affd2e0b..ed794fb8 100644 --- a/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx +++ b/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx @@ -120,7 +120,7 @@ config.events['onRequestHistoryData'] = function (event) { var ver = event.data; var histData = <%= histData %>; - docEditor.setHistoryData(histData[ver]); + docEditor.setHistoryData(histData[ver - 1]); }; config.events['onRequestHistoryClose '] = function () { document.location.reload(); diff --git a/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs b/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs index 9d83e5b5..bfe57a2a 100644 --- a/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs +++ b/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs @@ -216,7 +216,7 @@ namespace OnlineEditorsExampleMVC { var storagePath = DocManagerHelper.StoragePath(fileName, userAddress); var histDir = DocManagerHelper.HistoryDir(storagePath); - var versionDir = DocManagerHelper.VersionDir(histDir, DocManagerHelper.GetFileVersion(histDir) + 1); + var versionDir = DocManagerHelper.VersionDir(histDir, DocManagerHelper.GetFileVersion(histDir)); if (!Directory.Exists(versionDir)) Directory.CreateDirectory(versionDir); From 3f13590f55907f4ab6dcc56dc3197ec3abaeb1fb Mon Sep 17 00:00:00 2001 From: Alexandr Fedorov Date: Thu, 21 Jan 2021 14:48:25 +0300 Subject: [PATCH 079/141] csharp-mvc: config-refactor --- .../csharp-mvc/Helpers/DocumentConverter.cs | 2 +- .../csharp-mvc/Views/Home/Editor.aspx | 2 +- .../csharp-mvc/Views/Home/Index.aspx | 2 +- .../csharp-mvc/web.appsettings.config | 8 +++++--- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/web/documentserver-example/csharp-mvc/Helpers/DocumentConverter.cs b/web/documentserver-example/csharp-mvc/Helpers/DocumentConverter.cs index 49ffeb57..bbfecd0e 100644 --- a/web/documentserver-example/csharp-mvc/Helpers/DocumentConverter.cs +++ b/web/documentserver-example/csharp-mvc/Helpers/DocumentConverter.cs @@ -38,7 +38,7 @@ namespace OnlineEditorsExampleMVC.Helpers /// static ServiceConverter() { - DocumentConverterUrl = WebConfigurationManager.AppSettings["files.docservice.url.converter"] ?? ""; + DocumentConverterUrl = (WebConfigurationManager.AppSettings["files.docservice.url.site"] ?? "") + (WebConfigurationManager.AppSettings["files.docservice.url.converter"] ?? ""); Int32.TryParse(WebConfigurationManager.AppSettings["files.docservice.timeout"], out ConvertTimeout); ConvertTimeout = ConvertTimeout > 0 ? ConvertTimeout : 120000; diff --git a/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx b/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx index affd2e0b..a276706d 100644 --- a/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx +++ b/web/documentserver-example/csharp-mvc/Views/Home/Editor.aspx @@ -41,7 +41,7 @@
- <%: Scripts.Render(new []{ WebConfigurationManager.AppSettings["files.docservice.url.api"] }) %> + <%: Scripts.Render(new []{ WebConfigurationManager.AppSettings["files.docservice.url.site"] + WebConfigurationManager.AppSettings["files.docservice.url.api"] }) %> +