From a7fca1a53be42743ea386f71348fe8c1ba6a8e49 Mon Sep 17 00:00:00 2001 From: Serik Ibragimov Date: Wed, 13 Mar 2024 15:35:06 +0500 Subject: [PATCH 1/9] feat(python): handling auto-conversion error(-9) --- CHANGELOG.md | 1 + .../python/src/utils/serviceConverter.py | 1 + .../python/src/views/actions.py | 7 +++- .../python/static/css/media.css | 11 ++++++ .../python/static/css/stylesheet.css | 37 +++++++++++++++++++ .../python/static/js/jscript.js | 21 +++++++++-- .../python/templates/index.html | 9 +++++ 7 files changed, 82 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c5fcdd5..69546708 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Change Log +- python: handling conversion -9 error - php: handling conversion -9 error - nodejs: tabs menu - nodejs: delete all files diff --git a/web/documentserver-example/python/src/utils/serviceConverter.py b/web/documentserver-example/python/src/utils/serviceConverter.py index 013a7f7e..79a049de 100755 --- a/web/documentserver-example/python/src/utils/serviceConverter.py +++ b/web/documentserver-example/python/src/utils/serviceConverter.py @@ -78,6 +78,7 @@ def processError(error): prefix = 'Error occurred in the ConvertService: ' mapping = { + '-9': f'{prefix}Error conversion output format', '-8': f'{prefix}Error document VKey', '-7': f'{prefix}Error document request', '-6': f'{prefix}Error database', diff --git a/web/documentserver-example/python/src/views/actions.py b/web/documentserver-example/python/src/views/actions.py index 62ef63ce..65875571 100755 --- a/web/documentserver-example/python/src/views/actions.py +++ b/web/documentserver-example/python/src/views/actions.py @@ -75,13 +75,16 @@ def convert(request): lang = request.COOKIES.get('ulang') if request.COOKIES.get('ulang') else 'en' fileUri = docManager.getDownloadUrl(filename, request) fileExt = fileUtils.getFileExt(filename) - newExt = 'ooxml' # convert to .ooxml + # get an auto-conversion extension from the request body or set it to the ooxml extension + conversionExtension = body.get('fileExt') or 'ooxml' if docManager.isCanConvert(fileExt): # check if the file extension is available for converting key = docManager.generateFileKey(filename, request) # generate the file key # get the url of the converted file - convertedData = serviceConverter.getConvertedData(fileUri, fileExt, newExt, key, True, filePass, lang) + convertedData = serviceConverter.getConvertedData( + fileUri, fileExt, conversionExtension, key, True, filePass, lang + ) # if the converter url is not received, the original file name is passed to the response if not convertedData: diff --git a/web/documentserver-example/python/static/css/media.css b/web/documentserver-example/python/static/css/media.css index 80dffcbb..1fcde90d 100644 --- a/web/documentserver-example/python/static/css/media.css +++ b/web/documentserver-example/python/static/css/media.css @@ -503,6 +503,17 @@ justify-content: space-between; align-items: center; } + .buttonsMobile.indent { + margin-bottom: 0; + flex-wrap: nowrap; + } + .button.file-type:hover, + .button.file-type { + height: 28px; + width: 100px; + margin-bottom: 10px !important; + font-size: 9px; + } .button.gray{ margin: 0; } diff --git a/web/documentserver-example/python/static/css/stylesheet.css b/web/documentserver-example/python/static/css/stylesheet.css index d5becaa7..9827e1b6 100644 --- a/web/documentserver-example/python/static/css/stylesheet.css +++ b/web/documentserver-example/python/static/css/stylesheet.css @@ -230,6 +230,33 @@ label .checkbox { color: #FF6F3D; } +.button.file-type { + font-size: 11px; + color: #FFFFFF; + padding: 8px 8px; + margin-right: 10px; +} + +.button.file-type.disable { + cursor: default; +} + +.button.file-type.pale { + opacity: 30%; +} + +.button.file-type.document { + background: #446995; +} + +.button.file-type.spreadsheet { + background: #40865C; +} + +.button.file-type.presentation { + background: #AA5252; +} + .upload-panel { float: left; padding: 24px 0; @@ -742,6 +769,16 @@ html { margin-left: 25px; } +.buttonsMobile.indent{ + padding-left: 35px; + margin-top: 10px; + margin-bottom: 10px; +} + +.invisible { + display: none; +} + .tooltip { background: #FFFFFF; border-radius: 5px; diff --git a/web/documentserver-example/python/static/js/jscript.js b/web/documentserver-example/python/static/js/jscript.js index 4deb1bfb..7196bf81 100644 --- a/web/documentserver-example/python/static/js/jscript.js +++ b/web/documentserver-example/python/static/js/jscript.js @@ -87,7 +87,7 @@ if (typeof jQuery !== "undefined") { }); var timer = null; - var checkConvert = function (filePass) { + var checkConvert = function (filePass, fileType) { filePass = filePass ? filePass : null; if (timer !== null) { clearTimeout(timer); @@ -115,7 +115,7 @@ if (typeof jQuery !== "undefined") { contentType: "text/xml", type: "post", dataType: "json", - data: JSON.stringify({ filename: fileName, filePass: filePass }), + data: JSON.stringify({ filename: fileName, filePass: filePass, fileExt: fileType }), url: UrlConverter, complete: function (data) { var responseText = data.responseText; @@ -131,6 +131,12 @@ if (typeof jQuery !== "undefined") { } return; } else { + if (response.error.includes("Error conversion output format")){ + jq("#select-file-type").removeClass("invisible"); + jq("#step2").removeClass("current"); + jq("#hiddenFileName").attr("placeholder",filePass); + return; + } jq(".current").removeClass("current"); jq(".step:not(.done)").addClass("error"); jq("#mainProgress .error-message").show().find("span").text(response.error); @@ -142,7 +148,7 @@ if (typeof jQuery !== "undefined") { jq("#hiddenFileName").val(response.filename); if (response.step && response.step < 100) { - checkConvert(filePass); + checkConvert(filePass, fileType); } else { jq("#step2").addClass("done").removeClass("current"); loadScripts(); @@ -212,6 +218,15 @@ if (typeof jQuery !== "undefined") { }); }; + jq(document).on("click", ".file-type:not(.disable)", function () { + const currentElement = jq(this); + var fileType = currentElement.attr("data"); + var filePass = jq("#hiddenFileName").attr("placeholder"); + jq('.file-type').addClass(["disable", "pale"]); + currentElement.removeClass("pale"); + checkConvert(filePass, fileType); + }); + jq(document).on("click", "#enterPass", function () { var filePass = jq("#filePass").val(); if (filePass) { diff --git a/web/documentserver-example/python/templates/index.html b/web/documentserver-example/python/templates/index.html index b885dfb2..c6edf545 100644 --- a/web/documentserver-example/python/templates/index.html +++ b/web/documentserver-example/python/templates/index.html @@ -274,6 +274,15 @@
After these steps are completed, you can work with your document.
1. Loading the file. The loading speed depends on file size and additional elements it contains. +
2. Conversion. The file is converted to OOXML so that you can edit it. From 24a3441b1ef38ed006cb1929e6d56ea5116c04bc Mon Sep 17 00:00:00 2001 From: Serik Ibragimov Date: Wed, 13 Mar 2024 15:36:13 +0500 Subject: [PATCH 2/9] feat(ruby): handling auto-conversion error(-9) --- CHANGELOG.md | 1 + .../ruby/app/assets/javascripts/jscript.js | 21 +++++++++-- .../ruby/app/assets/stylesheets/media.css | 11 ++++++ .../app/assets/stylesheets/stylesheet.scss | 37 +++++++++++++++++++ .../ruby/app/controllers/home_controller.rb | 5 ++- .../ruby/app/models/service_converter.rb | 2 + .../ruby/app/views/home/index.html.erb | 9 +++++ 7 files changed, 81 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 69546708..18015c9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Change Log +- ruby: handling conversion -9 error - python: handling conversion -9 error - php: handling conversion -9 error - nodejs: tabs menu diff --git a/web/documentserver-example/ruby/app/assets/javascripts/jscript.js b/web/documentserver-example/ruby/app/assets/javascripts/jscript.js index 5a5e82e0..aba39dc2 100644 --- a/web/documentserver-example/ruby/app/assets/javascripts/jscript.js +++ b/web/documentserver-example/ruby/app/assets/javascripts/jscript.js @@ -98,7 +98,7 @@ if (typeof jQuery != "undefined") { }); var timer = null; - var checkConvert = function (filePass) { + var checkConvert = function (filePass, fileType) { filePass = filePass ? filePass : null; if (timer != null) { clearTimeout(timer); @@ -126,7 +126,7 @@ if (typeof jQuery != "undefined") { contentType: "text/xml", type: "post", dataType: "json", - data: JSON.stringify({ filename: fileName, filePass: filePass }), + data: JSON.stringify({filename: fileName, filePass: filePass, fileExt: fileType}), url: UrlConverter, complete: function (data) { var responseText = data.responseText; @@ -142,6 +142,12 @@ if (typeof jQuery != "undefined") { } return; } else { + if (response.error.includes("Error conversion output format")){ + jq("#select-file-type").removeClass("invisible"); + jq("#step2").removeClass("current"); + jq("#hiddenFileName").attr("placeholder",filePass); + return; + } jq(".current").removeClass("current"); jq(".step:not(.done)").addClass("error"); jq("#mainProgress .error-message").show().find("span").text(response.error); @@ -153,7 +159,7 @@ if (typeof jQuery != "undefined") { jq("#hiddenFileName").val(response.filename); if (response.step && response.step < 100) { - checkConvert(filePass); + checkConvert(filePass, fileType); } else { jq("#step2").addClass("done").removeClass("current"); loadScripts(); @@ -217,6 +223,15 @@ if (typeof jQuery != "undefined") { }); }; + jq(document).on("click", ".file-type:not(.disable)", function () { + const currentElement = jq(this); + var fileType = currentElement.attr("data"); + var filePass = jq("#hiddenFileName").attr("placeholder"); + jq('.file-type').addClass(["disable", "pale"]); + currentElement.removeClass("pale"); + checkConvert(filePass, fileType); + }); + jq(document).on("click", "#enterPass", function () { var filePass = jq("#filePass").val(); if (filePass) { diff --git a/web/documentserver-example/ruby/app/assets/stylesheets/media.css b/web/documentserver-example/ruby/app/assets/stylesheets/media.css index ae28b486..0cc4fde9 100644 --- a/web/documentserver-example/ruby/app/assets/stylesheets/media.css +++ b/web/documentserver-example/ruby/app/assets/stylesheets/media.css @@ -503,6 +503,17 @@ justify-content: space-between; align-items: center; } + .buttonsMobile.indent { + margin-bottom: 0; + flex-wrap: nowrap; + } + .button.file-type:hover, + .button.file-type { + height: 28px; + width: 100px; + margin-bottom: 10px !important; + font-size: 9px; + } .button.gray{ margin: 0; } diff --git a/web/documentserver-example/ruby/app/assets/stylesheets/stylesheet.scss b/web/documentserver-example/ruby/app/assets/stylesheets/stylesheet.scss index 83e55b17..f11fa367 100644 --- a/web/documentserver-example/ruby/app/assets/stylesheets/stylesheet.scss +++ b/web/documentserver-example/ruby/app/assets/stylesheets/stylesheet.scss @@ -231,6 +231,33 @@ label .checkbox { color: #FF6F3D; } +.button.file-type { + font-size: 11px; + color: #FFFFFF; + padding: 8px 8px; + margin-right: 10px; +} + +.button.file-type.disable { + cursor: default; +} + +.button.file-type.pale { + opacity: 30%; +} + +.button.file-type.document { + background: #446995; +} + +.button.file-type.spreadsheet { + background: #40865C; +} + +.button.file-type.presentation { + background: #AA5252; +} + .upload-panel { float: left; padding: 24px 0; @@ -743,6 +770,16 @@ html { margin-left: 25px; } +.buttonsMobile.indent{ + padding-left: 35px; + margin-top: 10px; + margin-bottom: 10px; +} + +.invisible { + display: none; +} + .tooltip { background: #FFFFFF; border-radius: 5px; diff --git a/web/documentserver-example/ruby/app/controllers/home_controller.rb b/web/documentserver-example/ruby/app/controllers/home_controller.rb index a9d11b2b..41d21b5b 100755 --- a/web/documentserver-example/ruby/app/controllers/home_controller.rb +++ b/web/documentserver-example/ruby/app/controllers/home_controller.rb @@ -102,14 +102,15 @@ class HomeController < ApplicationController file_pass = body['filePass'] || nil file_uri = DocumentHelper.get_download_url(file_name) extension = File.extname(file_name).downcase - internal_extension = 'ooxml' + # get an auto-conversion extension from the request body or set it to the ooxml extension + conversion_extension = body['fileExt'] || 'ooxml' if DocumentHelper.convert_exts.include?(extension) # check if the file with such an extension can be converted key = ServiceConverter.generate_revision_id(file_uri) # generate document key percent, new_file_uri, new_file_type = ServiceConverter.get_converted_data( file_uri, extension.delete('.'), - internal_extension.delete('.'), + conversion_extension.delete('.'), key, true, file_pass, diff --git a/web/documentserver-example/ruby/app/models/service_converter.rb b/web/documentserver-example/ruby/app/models/service_converter.rb index bdd49f60..eeb22dc8 100755 --- a/web/documentserver-example/ruby/app/models/service_converter.rb +++ b/web/documentserver-example/ruby/app/models/service_converter.rb @@ -108,6 +108,8 @@ class ServiceConverter # add an error message to the error message template depending on the error code case error_code + when -9 + error_message = 'Error occurred in the ConvertService.ashx: Error conversion output format' when -8 error_message = 'Error occurred in the ConvertService.ashx: Error document VKey' when -7 diff --git a/web/documentserver-example/ruby/app/views/home/index.html.erb b/web/documentserver-example/ruby/app/views/home/index.html.erb index 3f7b3e90..bc6feed4 100755 --- a/web/documentserver-example/ruby/app/views/home/index.html.erb +++ b/web/documentserver-example/ruby/app/views/home/index.html.erb @@ -267,6 +267,15 @@
After these steps are completed, you can work with your document.
1. Loading the file. The loading speed depends on file size and additional elements it contains. +
2. Conversion. The file is converted to OOXML so that you can edit it. From 359cda0f6759b62f3fb4b5e2c830996be76654ba Mon Sep 17 00:00:00 2001 From: Serik Ibragimov Date: Wed, 13 Mar 2024 15:37:13 +0500 Subject: [PATCH 3/9] feat(java): handling auto-conversion error(-9) --- CHANGELOG.md | 1 + .../main/java/controllers/IndexServlet.java | 5 ++- .../src/main/java/utils/ConvertErrorType.java | 3 +- .../java/src/main/webapp/css/media.css | 11 ++++++ .../java/src/main/webapp/css/stylesheet.css | 37 +++++++++++++++++++ .../java/src/main/webapp/index.jsp | 9 +++++ .../java/src/main/webapp/scripts/jscript.js | 21 +++++++++-- 7 files changed, 81 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18015c9e..cb46baff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Change Log +- java: handling conversion -9 error - ruby: handling conversion -9 error - python: handling conversion -9 error - php: handling conversion -9 error 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 f925ea18..a661cd49 100755 --- a/web/documentserver-example/java/src/main/java/controllers/IndexServlet.java +++ b/web/documentserver-example/java/src/main/java/controllers/IndexServlet.java @@ -283,7 +283,8 @@ public class IndexServlet extends HttpServlet { String fileUri = DocumentManager.getDownloadUrl(fileName, true); String fileExt = FileUtility.getFileExtension(fileName); FileType fileType = FileUtility.getFileType(fileName); - String internalFileExt = "ooxml"; + // get an auto-conversion extension from the request body or set it to the ooxml extension + String conversionExtension = body.get("fileExt") != null ? (String) body.get("fileExt") : "ooxml"; // check if the file with such an extension can be converted if (DocumentManager.getConvertExts().contains(fileExt)) { @@ -292,7 +293,7 @@ public class IndexServlet extends HttpServlet { // get the url and file type to the converted file Map newFileData = ServiceConverter - .getConvertedData(fileUri, fileExt, internalFileExt, key, filePass, true, lang); + .getConvertedData(fileUri, fileExt, conversionExtension, key, filePass, true, lang); String newFileUri = newFileData.get("fileUrl"); String newFileType = "." + newFileData.get("fileType"); diff --git a/web/documentserver-example/java/src/main/java/utils/ConvertErrorType.java b/web/documentserver-example/java/src/main/java/utils/ConvertErrorType.java index e24e0465..cc456a9b 100644 --- a/web/documentserver-example/java/src/main/java/utils/ConvertErrorType.java +++ b/web/documentserver-example/java/src/main/java/utils/ConvertErrorType.java @@ -27,7 +27,8 @@ public enum ConvertErrorType { UNEXPECTED_GUID_ERROR(-5, "Error unexpected guid"), DATABASE_ERROR(-6, "Error database"), DOCUMENT_REQUEST_ERROR(-7, "Error document request"), - DOCUMENT_VKEY_ERROR(-8, "Error document VKey"); + DOCUMENT_VKEY_ERROR(-8, "Error document VKey"), + CONVERSION_OUTPUT_FORMAT_ERROR(-9, "Error conversion output format"); private final int code; private final String label; diff --git a/web/documentserver-example/java/src/main/webapp/css/media.css b/web/documentserver-example/java/src/main/webapp/css/media.css index c6c488eb..d0137d60 100644 --- a/web/documentserver-example/java/src/main/webapp/css/media.css +++ b/web/documentserver-example/java/src/main/webapp/css/media.css @@ -488,6 +488,17 @@ justify-content: space-between; align-items: center; } + .buttonsMobile.indent { + margin-bottom: 0; + flex-wrap: nowrap; + } + .button.file-type:hover, + .button.file-type { + height: 28px; + width: 100px; + margin-bottom: 10px !important; + font-size: 9px; + } .button.gray{ margin: 0; } 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 f78023b4..02ee5502 100644 --- a/web/documentserver-example/java/src/main/webapp/css/stylesheet.css +++ b/web/documentserver-example/java/src/main/webapp/css/stylesheet.css @@ -230,6 +230,33 @@ label .checkbox { color: #FF6F3D; } +.button.file-type { + font-size: 11px; + color: #FFFFFF; + padding: 8px 8px; + margin-right: 10px; +} + +.button.file-type.disable { + cursor: default; +} + +.button.file-type.pale { + opacity: 30%; +} + +.button.file-type.document { + background: #446995; +} + +.button.file-type.spreadsheet { + background: #40865C; +} + +.button.file-type.presentation { + background: #AA5252; +} + .upload-panel { float: left; padding: 24px 0; @@ -748,6 +775,16 @@ html { margin-left: 25px; } +.buttonsMobile.indent{ + padding-left: 35px; + margin-top: 10px; + margin-bottom: 10px; +} + +.invisible { + display: none; +} + .tooltip { background: #FFFFFF; border-radius: 5px; diff --git a/web/documentserver-example/java/src/main/webapp/index.jsp b/web/documentserver-example/java/src/main/webapp/index.jsp index 4f4a2c14..8f582383 100755 --- a/web/documentserver-example/java/src/main/webapp/index.jsp +++ b/web/documentserver-example/java/src/main/webapp/index.jsp @@ -299,6 +299,15 @@
After these steps are completed, you can work with your document.
1. Loading the file. The loading speed depends on file size and additional elements it contains. +
2. Conversion. The file is converted to OOXML so that you can edit it. diff --git a/web/documentserver-example/java/src/main/webapp/scripts/jscript.js b/web/documentserver-example/java/src/main/webapp/scripts/jscript.js index 07b129f5..fa73d4c3 100644 --- a/web/documentserver-example/java/src/main/webapp/scripts/jscript.js +++ b/web/documentserver-example/java/src/main/webapp/scripts/jscript.js @@ -87,7 +87,7 @@ if (typeof jQuery !== "undefined") { }); var timer = null; - var checkConvert = function (filePass) { + var checkConvert = function (filePass, fileType) { filePass = filePass ? filePass : null; if (timer !== null) { clearTimeout(timer); @@ -115,7 +115,7 @@ if (typeof jQuery !== "undefined") { contentType: "text/xml", type: "post", dataType: "json", - data: JSON.stringify({filename: fileName, filePass: filePass}), + data: JSON.stringify({filename: fileName, filePass: filePass, fileExt: fileType}), url: UrlConverter, complete: function (data) { var responseText = data.responseText; @@ -131,6 +131,12 @@ if (typeof jQuery !== "undefined") { } return; } else { + if (response.error.includes("Error conversion output format")){ + jq("#select-file-type").removeClass("invisible"); + jq("#step2").removeClass("current"); + jq("#hiddenFileName").attr("placeholder",filePass); + return; + } jq(".current").removeClass("current"); jq(".step:not(.done)").addClass("error"); jq("#mainProgress .error-message").show().find("span").text(response.error); @@ -142,7 +148,7 @@ if (typeof jQuery !== "undefined") { jq("#hiddenFileName").val(response.filename); if (response.step && response.step < 100) { - checkConvert(filePass); + checkConvert(filePass, fileType); } else { jq("#step2").addClass("done").removeClass("current"); loadScripts(); @@ -212,6 +218,15 @@ if (typeof jQuery !== "undefined") { }); }; + jq(document).on("click", ".file-type:not(.disable)", function () { + const currentElement = jq(this); + var fileType = currentElement.attr("data"); + var filePass = jq("#hiddenFileName").attr("placeholder"); + jq('.file-type').addClass(["disable", "pale"]); + currentElement.removeClass("pale"); + checkConvert(filePass, fileType); + }); + jq(document).on("click", "#enterPass", function () { var pass = jq("#filePass").val(); if (pass) { From b1d66e16a542f6d8ce11a3151fec3b5c7345dfde Mon Sep 17 00:00:00 2001 From: Serik Ibragimov Date: Wed, 13 Mar 2024 15:38:24 +0500 Subject: [PATCH 4/9] feat(java-spring): handling auto-conversion error(-9) --- CHANGELOG.md | 1 + .../controllers/FileController.java | 11 +++--- .../models/enums/ConvertErrorType.java | 3 +- .../onlyoffice/integration/dto/Converter.java | 2 + .../src/main/resources/static/css/media.css | 11 ++++++ .../main/resources/static/css/stylesheet.css | 37 +++++++++++++++++++ .../main/resources/static/scripts/jscript.js | 21 +++++++++-- .../src/main/resources/templates/index.html | 9 +++++ 8 files changed, 86 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb46baff..87aa6e8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Change Log +- java-spring: handling conversion -9 error - java: handling conversion -9 error - ruby: handling conversion -9 error - python: handling conversion -9 error diff --git a/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/controllers/FileController.java b/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/controllers/FileController.java index 854ce1d7..b626512c 100755 --- a/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/controllers/FileController.java +++ b/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/controllers/FileController.java @@ -248,15 +248,15 @@ public class FileController { // get document type (word, cell or slide) DocumentType type = fileUtility.getDocumentType(fileName); - // convert to .ooxml - String internalFileExt = "ooxml"; + // get an auto-conversion extension from the request body or set it to the ooxml extension + String conversionExtension = body.getFileExt() != null ? body.getFileExt() : "ooxml"; try { // check if the file with such an extension can be converted if (fileUtility.getConvertExts().contains(fileExt)) { String key = serviceConverter.generateRevisionId(fileUri); // generate document key ConvertedData response = serviceConverter // get the URL to the converted file - .getConvertedData(fileUri, fileExt, internalFileExt, key, filePass, true, lang); + .getConvertedData(fileUri, fileExt, conversionExtension, key, filePass, true, lang); String newFileUri = response.getUri(); String newFileType = "." + response.getFileType(); @@ -291,9 +291,10 @@ public class FileController { return createUserMetadata(uid, fileName); } catch (Exception e) { e.printStackTrace(); + + // if the operation of file converting is unsuccessful, an error occurs + return "{ \"error\": \"" + e.getMessage() + "\"}"; } - // if the operation of file converting is unsuccessful, an error occurs - return "{ \"error\": \"" + "The file can't be converted.\"}"; } @PostMapping("/delete") diff --git a/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/documentserver/models/enums/ConvertErrorType.java b/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/documentserver/models/enums/ConvertErrorType.java index 8a0b14ca..324ad9f4 100644 --- a/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/documentserver/models/enums/ConvertErrorType.java +++ b/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/documentserver/models/enums/ConvertErrorType.java @@ -27,7 +27,8 @@ public enum ConvertErrorType { UNEXPECTED_GUID_ERROR(-5, "Error unexpected guid"), DATABASE_ERROR(-6, "Error database"), DOCUMENT_REQUEST_ERROR(-7, "Error document request"), - DOCUMENT_VKEY_ERROR(-8, "Error document VKey"); + DOCUMENT_VKEY_ERROR(-8, "Error document VKey"), + DOCUMENT_CONVERSION_OUTPUT_ERROR(-9, "Error conversion output format"); private final int code; private final String label; diff --git a/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/dto/Converter.java b/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/dto/Converter.java index 818e82c9..46f331f4 100755 --- a/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/dto/Converter.java +++ b/web/documentserver-example/java-spring/src/main/java/com/onlyoffice/integration/dto/Converter.java @@ -31,6 +31,8 @@ public class Converter { private String fileName; @JsonProperty("filePass") private String filePass; + @JsonProperty("fileExt") + private String fileExt; @JsonProperty("lang") private String lang; } diff --git a/web/documentserver-example/java-spring/src/main/resources/static/css/media.css b/web/documentserver-example/java-spring/src/main/resources/static/css/media.css index 1da67ba8..2b39573a 100644 --- a/web/documentserver-example/java-spring/src/main/resources/static/css/media.css +++ b/web/documentserver-example/java-spring/src/main/resources/static/css/media.css @@ -489,6 +489,17 @@ justify-content: space-between; align-items: center; } + .buttonsMobile.indent { + margin-bottom: 0; + flex-wrap: nowrap; + } + .button.file-type:hover, + .button.file-type { + height: 28px; + width: 100px; + margin-bottom: 10px !important; + font-size: 9px; + } .button.gray{ margin: 0; } diff --git a/web/documentserver-example/java-spring/src/main/resources/static/css/stylesheet.css b/web/documentserver-example/java-spring/src/main/resources/static/css/stylesheet.css index 224146af..2aac4cc2 100755 --- a/web/documentserver-example/java-spring/src/main/resources/static/css/stylesheet.css +++ b/web/documentserver-example/java-spring/src/main/resources/static/css/stylesheet.css @@ -230,6 +230,33 @@ label .checkbox { color: #FF6F3D; } +.button.file-type { + font-size: 11px; + color: #FFFFFF; + padding: 8px 8px; + margin-right: 10px; +} + +.button.file-type.disable { + cursor: default; +} + +.button.file-type.pale { + opacity: 30%; +} + +.button.file-type.document { + background: #446995; +} + +.button.file-type.spreadsheet { + background: #40865C; +} + +.button.file-type.presentation { + background: #AA5252; +} + .upload-panel { float: left; padding: 24px 0; @@ -752,6 +779,16 @@ html { margin-left: 25px; } +.buttonsMobile.indent{ + padding-left: 35px; + margin-top: 10px; + margin-bottom: 10px; +} + +.invisible { + display: none; +} + .tooltip { background: #FFFFFF; border-radius: 5px; diff --git a/web/documentserver-example/java-spring/src/main/resources/static/scripts/jscript.js b/web/documentserver-example/java-spring/src/main/resources/static/scripts/jscript.js index 3f6570bd..e3b2ff90 100755 --- a/web/documentserver-example/java-spring/src/main/resources/static/scripts/jscript.js +++ b/web/documentserver-example/java-spring/src/main/resources/static/scripts/jscript.js @@ -87,7 +87,7 @@ if (typeof jQuery !== "undefined") { }); var timer = null; - var checkConvert = function (filePass) { + var checkConvert = function (filePass, fileType) { filePass = filePass ? filePass : null; if (timer !== null) { clearTimeout(timer); @@ -115,7 +115,7 @@ if (typeof jQuery !== "undefined") { contentType: "application/json", type: "post", dataType: "json", - data: JSON.stringify({filename: fileName, filePass: filePass}), + data: JSON.stringify({filename: fileName, filePass: filePass, fileExt: fileType}), url: UrlConverter, complete: function (data) { var responseText = data.responseText; @@ -131,6 +131,12 @@ if (typeof jQuery !== "undefined") { } return; } else { + if (response.error.includes("Error conversion output format")){ + jq("#select-file-type").removeClass("invisible"); + jq("#step2").removeClass("current"); + jq("#hiddenFileName").attr("placeholder",filePass); + return; + } jq(".current").removeClass("current"); jq(".step:not(.done)").addClass("error"); jq("#mainProgress .error-message").show().find("span").text(response.error); @@ -142,7 +148,7 @@ if (typeof jQuery !== "undefined") { jq("#hiddenFileName").val(response.filename); if (response.step && response.step < 100) { - checkConvert(filePass); + checkConvert(filePass, fileType); } else { jq("#step2").addClass("done").removeClass("current"); loadScripts(); @@ -218,6 +224,15 @@ if (typeof jQuery !== "undefined") { } }; + jq(document).on("click", ".file-type:not(.disable)", function () { + const currentElement = jq(this); + var fileType = currentElement.attr("data"); + var filePass = jq("#hiddenFileName").attr("placeholder"); + jq('.file-type').addClass(["disable", "pale"]); + currentElement.removeClass("pale"); + checkConvert(filePass, fileType); + }); + jq(document).on("click", "#enterPass", function () { var pass = jq("#filePass").val(); if (pass) { diff --git a/web/documentserver-example/java-spring/src/main/resources/templates/index.html b/web/documentserver-example/java-spring/src/main/resources/templates/index.html index 6c9972b8..82d17a03 100755 --- a/web/documentserver-example/java-spring/src/main/resources/templates/index.html +++ b/web/documentserver-example/java-spring/src/main/resources/templates/index.html @@ -275,6 +275,15 @@
After these steps are completed, you can work with your document.
1. Loading the file. The loading speed depends on file size and additional elements it contains. +
2. Conversion. The file is converted to OOXML so that you can edit it. From ca274bc46517d8a446837e47f59418510294f5d6 Mon Sep 17 00:00:00 2001 From: Serik Ibragimov Date: Wed, 13 Mar 2024 15:39:07 +0500 Subject: [PATCH 5/9] feat(csharp): handling auto-conversion error(-9) --- CHANGELOG.md | 1 + .../csharp/App_Themes/media.css | 11 ++++++ .../csharp/App_Themes/stylesheet.css | 37 +++++++++++++++++++ .../csharp/Default.aspx | 9 +++++ .../csharp/Default.aspx.cs | 11 +++++- .../csharp/DocumentConverter.cs | 4 ++ .../csharp/script/jscript.js | 21 +++++++++-- 7 files changed, 89 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 87aa6e8b..ded64ef3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Change Log +- csharp: handling conversion -9 error - java-spring: handling conversion -9 error - java: handling conversion -9 error - ruby: handling conversion -9 error diff --git a/web/documentserver-example/csharp/App_Themes/media.css b/web/documentserver-example/csharp/App_Themes/media.css index 705085cc..d5bde136 100644 --- a/web/documentserver-example/csharp/App_Themes/media.css +++ b/web/documentserver-example/csharp/App_Themes/media.css @@ -502,6 +502,17 @@ justify-content: space-between; align-items: center; } + .buttonsMobile.indent { + margin-bottom: 0; + flex-wrap: nowrap; + } + .button.file-type:hover, + .button.file-type { + height: 28px; + width: 100px; + margin-bottom: 10px !important; + font-size: 9px; + } .button.gray{ margin: 0; } diff --git a/web/documentserver-example/csharp/App_Themes/stylesheet.css b/web/documentserver-example/csharp/App_Themes/stylesheet.css index 69c00e00..f245f2d4 100644 --- a/web/documentserver-example/csharp/App_Themes/stylesheet.css +++ b/web/documentserver-example/csharp/App_Themes/stylesheet.css @@ -230,6 +230,33 @@ label .checkbox { color: #FF6F3D; } +.button.file-type { + font-size: 11px; + color: #FFFFFF; + padding: 8px 8px; + margin-right: 10px; +} + +.button.file-type.disable { + cursor: default; +} + +.button.file-type.pale { + opacity: 30%; +} + +.button.file-type.document { + background: #446995; +} + +.button.file-type.spreadsheet { + background: #40865C; +} + +.button.file-type.presentation { + background: #AA5252; +} + .upload-panel { float: left; padding: 24px 0; @@ -745,6 +772,16 @@ html { margin-left: 25px; } +.buttonsMobile.indent{ + padding-left: 35px; + margin-top: 10px; + margin-bottom: 10px; +} + +.invisible { + display: none; +} + .tooltip { background: #FFFFFF; border-radius: 5px; diff --git a/web/documentserver-example/csharp/Default.aspx b/web/documentserver-example/csharp/Default.aspx index 4bb5b0df..569b77e3 100644 --- a/web/documentserver-example/csharp/Default.aspx +++ b/web/documentserver-example/csharp/Default.aspx @@ -297,6 +297,15 @@
After these steps are completed, you can work with your document.
1. Loading the file. The loading speed depends on file size and additional elements it contains. +
2. Conversion. The file is converted to OOXML so that you can edit it. diff --git a/web/documentserver-example/csharp/Default.aspx.cs b/web/documentserver-example/csharp/Default.aspx.cs index da98636f..24324d3b 100644 --- a/web/documentserver-example/csharp/Default.aspx.cs +++ b/web/documentserver-example/csharp/Default.aspx.cs @@ -437,7 +437,14 @@ namespace OnlineEditorsExample var lang = context.Request.Cookies.GetOrDefault("ulang", null); var extension = (Path.GetExtension(_fileName).ToLower() ?? "").Trim('.'); - var internalExtension = "ooxml"; + string conversionExtension = "ooxml"; // set the default conversion extension as ooxml + object fileExt; + + // change the conversion extension if it was provided in the request body + if (body.TryGetValue("fileExt", out fileExt) && !String.IsNullOrEmpty(fileExt.ToString())) + { + conversionExtension = fileExt.ToString(); + } // check if the file with such an extension can be converted if (ConvertExts.Contains("." + extension)) @@ -454,7 +461,7 @@ namespace OnlineEditorsExample // get the url and file type of the converted file Dictionary newFileData; - var result = ServiceConverter.GetConvertedData(fileUrl.ToString() , extension, internalExtension, key, true, out newFileData, filePass, lang); + var result = ServiceConverter.GetConvertedData(fileUrl.ToString() , extension, conversionExtension, key, true, out newFileData, filePass, lang); if (result != 100) { return "{ \"step\" : \"" + result + "\", \"filename\" : \"" + _fileName + "\"}"; diff --git a/web/documentserver-example/csharp/DocumentConverter.cs b/web/documentserver-example/csharp/DocumentConverter.cs index a59c2495..580f77af 100644 --- a/web/documentserver-example/csharp/DocumentConverter.cs +++ b/web/documentserver-example/csharp/DocumentConverter.cs @@ -231,6 +231,10 @@ namespace ASC.Api.DocumentConverter switch (errorCode) { + case -9: + // public const int c_nErrorConversionOutputFormatError = -9; + errorMessage = String.Format(errorMessageTemplate, "Error conversion output format"); + break; case -8: // public const int c_nErrorFileVKey = -8; errorMessage = String.Format(errorMessageTemplate, "Error document VKey"); diff --git a/web/documentserver-example/csharp/script/jscript.js b/web/documentserver-example/csharp/script/jscript.js index 2491c400..db4f1f1f 100644 --- a/web/documentserver-example/csharp/script/jscript.js +++ b/web/documentserver-example/csharp/script/jscript.js @@ -87,7 +87,7 @@ if (typeof jQuery != "undefined") { }); var timer = null; - var checkConvert = function (filePass) { + var checkConvert = function (filePass, fileType) { filePass = filePass ? filePass : null; if (timer != null) { clearTimeout(timer); @@ -116,7 +116,7 @@ if (typeof jQuery != "undefined") { contentType: "text/xml", type: "post", dataType: "json", - data: JSON.stringify({ filename: fileName, filePass: filePass }), + data: JSON.stringify({ filename: fileName, filePass: filePass, fileExt: fileType }), url: requestAddress, complete: function (data) { var responseText = data.responseText; @@ -132,6 +132,12 @@ if (typeof jQuery != "undefined") { } return; } else { + if (response.error.includes("Error conversion output format")) { + jq("#select-file-type").removeClass("invisible"); + jq("#step2").removeClass("current"); + jq("#hiddenFileName").attr("placeholder", filePass); + return; + } jq(".current").removeClass("current"); jq(".step:not(.done)").addClass("error"); jq("#mainProgress .error-message").show().find("span").text(response.error); @@ -143,7 +149,7 @@ if (typeof jQuery != "undefined") { jq("#hiddenFileName").val(response.filename); if (response.step && response.step < 100) { - checkConvert(filePass); + checkConvert(filePass, fileType); } else { jq("#step2").addClass("done").removeClass("current"); loadScripts(); @@ -213,6 +219,15 @@ if (typeof jQuery != "undefined") { }); }; + jq(document).on("click", ".file-type:not(.disable)", function () { + const currentElement = jq(this); + var fileType = currentElement.attr("data"); + var filePass = jq("#hiddenFileName").attr("placeholder"); + jq('.file-type').addClass(["disable", "pale"]); + currentElement.removeClass("pale"); + checkConvert(filePass, fileType); + }); + jq(document).on("click", "#enterPass", function () { var filePass = jq("#filePass").val(); if (filePass) { From 5258fd0674192fb22648214b27076e102685946c Mon Sep 17 00:00:00 2001 From: Serik Ibragimov Date: Wed, 13 Mar 2024 15:39:42 +0500 Subject: [PATCH 6/9] feat(csharp-mvc): handling auto-conversion error(-9) --- CHANGELOG.md | 1 + .../csharp-mvc/Content/media.css | 11 ++++++ .../csharp-mvc/Content/stylesheet.css | 37 +++++++++++++++++++ .../csharp-mvc/Helpers/DocumentConverter.cs | 4 ++ .../csharp-mvc/Scripts/jscript.js | 21 +++++++++-- .../csharp-mvc/Views/Home/Index.aspx | 9 +++++ .../csharp-mvc/WebEditor.ashx.cs | 10 ++++- 7 files changed, 88 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ded64ef3..29bdf487 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Change Log +- csharp-mvc: handling conversion -9 error - csharp: handling conversion -9 error - java-spring: handling conversion -9 error - java: handling conversion -9 error diff --git a/web/documentserver-example/csharp-mvc/Content/media.css b/web/documentserver-example/csharp-mvc/Content/media.css index 705085cc..d5bde136 100644 --- a/web/documentserver-example/csharp-mvc/Content/media.css +++ b/web/documentserver-example/csharp-mvc/Content/media.css @@ -502,6 +502,17 @@ justify-content: space-between; align-items: center; } + .buttonsMobile.indent { + margin-bottom: 0; + flex-wrap: nowrap; + } + .button.file-type:hover, + .button.file-type { + height: 28px; + width: 100px; + margin-bottom: 10px !important; + font-size: 9px; + } .button.gray{ margin: 0; } diff --git a/web/documentserver-example/csharp-mvc/Content/stylesheet.css b/web/documentserver-example/csharp-mvc/Content/stylesheet.css index 6ca4a771..03c77ecc 100644 --- a/web/documentserver-example/csharp-mvc/Content/stylesheet.css +++ b/web/documentserver-example/csharp-mvc/Content/stylesheet.css @@ -230,6 +230,33 @@ label .checkbox { color: #FF6F3D; } +.button.file-type { + font-size: 11px; + color: #FFFFFF; + padding: 8px 8px; + margin-right: 10px; +} + +.button.file-type.disable { + cursor: default; +} + +.button.file-type.pale { + opacity: 30%; +} + +.button.file-type.document { + background: #446995; +} + +.button.file-type.spreadsheet { + background: #40865C; +} + +.button.file-type.presentation { + background: #AA5252; +} + .upload-panel { float: left; padding: 24px 0; @@ -741,6 +768,16 @@ html { margin-left: 25px; } +.buttonsMobile.indent{ + padding-left: 35px; + margin-top: 10px; + margin-bottom: 10px; +} + +.invisible { + display: none; +} + .tooltip { background: #FFFFFF; border-radius: 5px; diff --git a/web/documentserver-example/csharp-mvc/Helpers/DocumentConverter.cs b/web/documentserver-example/csharp-mvc/Helpers/DocumentConverter.cs index 3f395ec3..0ee44019 100644 --- a/web/documentserver-example/csharp-mvc/Helpers/DocumentConverter.cs +++ b/web/documentserver-example/csharp-mvc/Helpers/DocumentConverter.cs @@ -229,6 +229,10 @@ namespace OnlineEditorsExampleMVC.Helpers switch (errorCode) { + case -9: + // public const int c_nErrorConversionOutputFormatError = -9; + errorMessage = String.Format(errorMessageTemplate, "Error conversion output format"); + break; case -8: // public const int c_nErrorFileVKey = -8; errorMessage = String.Format(errorMessageTemplate, "Error document VKey"); diff --git a/web/documentserver-example/csharp-mvc/Scripts/jscript.js b/web/documentserver-example/csharp-mvc/Scripts/jscript.js index 35d82796..944d0f42 100644 --- a/web/documentserver-example/csharp-mvc/Scripts/jscript.js +++ b/web/documentserver-example/csharp-mvc/Scripts/jscript.js @@ -87,7 +87,7 @@ if (typeof jQuery != "undefined") { }); var timer = null; - var checkConvert = function (filePass) { + var checkConvert = function (filePass, fileType) { filePass = filePass ? filePass : null; if (timer != null) { clearTimeout(timer); @@ -116,7 +116,7 @@ if (typeof jQuery != "undefined") { contentType: "text/xml", type: "post", dataType: "json", - data: JSON.stringify({ filename: fileName, filePass: filePass }), + data: JSON.stringify({ filename: fileName, filePass: filePass, fileExt: fileType }), url: UrlConverter, complete: function (data) { var responseText = data.responseText; @@ -132,6 +132,12 @@ if (typeof jQuery != "undefined") { } return; } else { + if (response.error.includes("Error conversion output format")) { + jq("#select-file-type").removeClass("invisible"); + jq("#step2").removeClass("current"); + jq("#hiddenFileName").attr("placeholder", filePass); + return; + } jq(".current").removeClass("current"); jq(".step:not(.done)").addClass("error"); jq("#mainProgress .error-message").show().find("span").text(response.error); @@ -143,7 +149,7 @@ if (typeof jQuery != "undefined") { jq("#hiddenFileName").val(response.filename); if (response.step && response.step < 100) { - checkConvert(filePass); + checkConvert(filePass, fileType); } else { jq("#step2").addClass("done").removeClass("current"); loadScripts(); @@ -213,6 +219,15 @@ if (typeof jQuery != "undefined") { }); }; + jq(document).on("click", ".file-type:not(.disable)", function () { + const currentElement = jq(this); + var fileType = currentElement.attr("data"); + var filePass = jq("#hiddenFileName").attr("placeholder"); + jq('.file-type').addClass(["disable", "pale"]); + currentElement.removeClass("pale"); + checkConvert(filePass, fileType); + }); + jq(document).on("click", "#enterPass", function () { var filePass = jq("#filePass").val(); if (filePass) { diff --git a/web/documentserver-example/csharp-mvc/Views/Home/Index.aspx b/web/documentserver-example/csharp-mvc/Views/Home/Index.aspx index 080f867f..bc447fab 100644 --- a/web/documentserver-example/csharp-mvc/Views/Home/Index.aspx +++ b/web/documentserver-example/csharp-mvc/Views/Home/Index.aspx @@ -295,6 +295,15 @@
After these steps are completed, you can work with your document.
1. Loading the file. The loading speed depends on file size and additional elements it contains. +
2. Conversion. The file is converted to OOXML so that you can edit it. diff --git a/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs b/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs index 4e69b85c..f8652f81 100644 --- a/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs +++ b/web/documentserver-example/csharp-mvc/WebEditor.ashx.cs @@ -240,7 +240,13 @@ namespace OnlineEditorsExampleMVC var fileUri = DocManagerHelper.GetDownloadUrl(fileName); var extension = (Path.GetExtension(fileName).ToLower() ?? "").Trim('.'); - var internalExtension = "ooxml"; + string conversionExtension = "ooxml"; + object fileExt; + + if (body.TryGetValue("fileExt", out fileExt) && !String.IsNullOrEmpty(fileExt.ToString())) + { + conversionExtension = fileExt.ToString(); + } // check if the file with such an extension can be converted if (DocManagerHelper.ConvertExts.Contains("." + extension)) @@ -258,7 +264,7 @@ namespace OnlineEditorsExampleMVC // get the url and file type of the converted file Dictionary newFileData; - var result = ServiceConverter.GetConvertedData(downloadUri.ToString(), extension, internalExtension, key, true, out newFileData, filePass, lang); + var result = ServiceConverter.GetConvertedData(downloadUri.ToString(), extension, conversionExtension, key, true, out newFileData, filePass, lang); if (result != 100) { context.Response.Write("{ \"step\" : \"" + result + "\", \"filename\" : \"" + fileName + "\"}"); From b2202111acb589b5209c1da73cb61ab4899c187b Mon Sep 17 00:00:00 2001 From: Sergey Linnik Date: Fri, 15 Mar 2024 16:47:29 +0300 Subject: [PATCH 7/9] fix changelog --- CHANGELOG.md | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b808333..e3098b9f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,17 +1,10 @@ # Change Log +- handling conversion -9 error - nodejs: wopi formsubmit icon -- csharp-mvc: handling conversion -9 error -- csharp: handling conversion -9 error -- java-spring: handling conversion -9 error -- java: handling conversion -9 error -- ruby: handling conversion -9 error -- python: handling conversion -9 error -- php: handling conversion -9 error - nodejs: tabs menu - nodejs: delete all files - change insert image -- nodejs: handling conversion -9 error - different goback for users - nodejs: converting function on index page From af778a86369436c1adddf3e54577ca3cff7bddda Mon Sep 17 00:00:00 2001 From: Serik Ibragimov Date: Mon, 18 Mar 2024 15:26:22 +0500 Subject: [PATCH 8/9] fix(ruby): linter offenses --- .../ruby/app/models/file_model.rb | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/web/documentserver-example/ruby/app/models/file_model.rb b/web/documentserver-example/ruby/app/models/file_model.rb index be96b7bc..4ce63e8e 100755 --- a/web/documentserver-example/ruby/app/models/file_model.rb +++ b/web/documentserver-example/ruby/app/models/file_model.rb @@ -304,19 +304,19 @@ class FileModel prev = hist_data[(i - 2).to_s] # get the history data from the previous file version # write key and url information about previous file version with optional direct url data_obj['previous'] = if enable_direct_url? == true - { # write key and url information about previous file version with optional directUrl - fileType: prev['fileType'], - key: prev['key'], - url: prev['url'], - directUrl: prev['directUrl'] - } - else - { - fileType: prev['fileType'], - key: prev['key'], - url: prev['url'] - } - end + { # write key and url information about previous file version with optional directUrl + fileType: prev['fileType'], + key: prev['key'], + url: prev['url'], + directUrl: prev['directUrl'] + } + else + { + fileType: prev['fileType'], + key: prev['key'], + url: prev['url'] + } + end diff_path = [hist_dir, (i - 1).to_s, 'diff.zip'].join(File::SEPARATOR) if File.exist?(diff_path) From d3a548bf3fbf4fb2933e9fad33f24a45841a07b1 Mon Sep 17 00:00:00 2001 From: sshakndr Date: Tue, 19 Mar 2024 17:19:48 +0700 Subject: [PATCH 9/9] fix(ruby): conversion error code to integer --- web/documentserver-example/ruby/app/models/service_converter.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/documentserver-example/ruby/app/models/service_converter.rb b/web/documentserver-example/ruby/app/models/service_converter.rb index 79cce904..09b83fbe 100755 --- a/web/documentserver-example/ruby/app/models/service_converter.rb +++ b/web/documentserver-example/ruby/app/models/service_converter.rb @@ -141,7 +141,7 @@ class ServiceConverter error_element = file_result['error'] unless error_element.nil? # if an error occurs - process_convert_service_responce_error(Integer(error_element, 10)) # get an error message + process_convert_service_responce_error(Integer(error_element)) # get an error message end is_end_convert = file_result['endConvert'] # check if the conversion is completed