From 7f517eca0bf87b7b9b666e36aeb8cc219f3d80be Mon Sep 17 00:00:00 2001 From: Chris Birk Date: Thu, 17 Dec 2015 21:54:04 -0600 Subject: [PATCH] check for soffice before removing export paths --- src/node/handler/PadMessageHandler.js | 2 ++ src/node/utils/Settings.js | 35 +++++++++++++++++++++++++++ src/static/js/pad_impexp.js | 26 +++++++++++--------- 3 files changed, 51 insertions(+), 12 deletions(-) diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js index bf8737fcf..f48be604b 100644 --- a/src/node/handler/PadMessageHandler.js +++ b/src/node/handler/PadMessageHandler.js @@ -1234,6 +1234,8 @@ function handleClientReady(client, message) "serverTimestamp": new Date().getTime(), "userId": author, "abiwordAvailable": settings.abiwordAvailable(), + "sofficeAvailable": settings.sofficeAvailable(), + "exportAvailable": settings.exportAvailable(), "plugins": { "plugins": plugins.plugins, "parts": plugins.parts, diff --git a/src/node/utils/Settings.js b/src/node/utils/Settings.js index 325a997a1..b765670a6 100644 --- a/src/node/utils/Settings.js +++ b/src/node/utils/Settings.js @@ -222,6 +222,27 @@ exports.abiwordAvailable = function() } }; +exports.sofficeAvailable = function () { + if(exports.soffice != null) { + return os.type().indexOf("Windows") != -1 ? "withoutPDF": "yes"; + } else { + return "no"; + } +}; + +exports.exportAvailable = function () { + var abiword = exports.abiwordAvailable(); + var soffice = exports.sofficeAvailable(); + + if(abiword == "no" && soffice == "no") { + return "no"; + } else if ((abiword == "withoutPDF" && soffice == "no") || (abiword == "no" && soffice == "withoutPDF")) { + return "withoutPDF"; + } else { + return "yes"; + } +}; + // Provide git version if available exports.getGitCommit = function() { var version = ""; @@ -375,6 +396,20 @@ exports.reloadSettings = function reloadSettings() { } } + if(exports.soffice) { + fs.exists(exports.soffice, function (exists) { + if(!exists) { + var sofficeError = "SOffice does not exist at this path, check your settings file"; + + if(!exports.suppressErrorsInPadText) { + exports.defaultPadText = exports.defaultPadText + "\nError: " + sofficeError + suppressDisableMsg; + } + console.error(sofficeError); + exports.soffice = null; + } + }); + } + if (!exports.sessionKey) { try { exports.sessionKey = fs.readFileSync("./SESSIONKEY.txt","utf8"); diff --git a/src/static/js/pad_impexp.js b/src/static/js/pad_impexp.js index 1648f34cd..17886e8eb 100644 --- a/src/static/js/pad_impexp.js +++ b/src/static/js/pad_impexp.js @@ -1,5 +1,5 @@ /** - * This code is mostly from the old Etherpad. Please help us to comment this code. + * This code is mostly from the old Etherpad. Please help us to comment this code. * This helps other people to understand this code better and helps them to improve it. * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED */ @@ -46,7 +46,7 @@ var padimpexp = (function() $('#importmessagefail').fadeOut("fast"); var ret = window.confirm(html10n.get("pad.impexp.confirmimport")); if (ret) - { + { currentImportTimer = window.setTimeout(function() { if (!currentImportTimer) @@ -61,7 +61,7 @@ var padimpexp = (function() { disabled: true }).val(html10n.get("pad.impexp.importing")); - + window.setTimeout(function() { $('#importfileinput').attr( @@ -104,7 +104,7 @@ var padimpexp = (function() function importErrorMessage(status) { var msg=""; - + if(status === "convertFailed"){ msg = html10n.get("pad.impexp.convertFailed"); } else if(status === "uploadFailed"){ @@ -112,7 +112,7 @@ var padimpexp = (function() } else if(status === "padHasData"){ msg = html10n.get("pad.impexp.padHasData"); } - + function showError(fade) { $('#importmessagefail').html(''+html10n.get('pad.impexp.importfailed')+': ' + (msg || html10n.get('pad.impexp.copypaste','')))[(fade ? "fadeIn" : "show")](); @@ -206,9 +206,11 @@ var padimpexp = (function() // activate action to import in the form $("#importform").attr('action', pad_root_url + "/import"); - - //hide stuff thats not avaible if abiword is disabled - if(clientVars.abiwordAvailable == "no") + + console.log(clientVars); + + //hide stuff thats not avaible if abiword/soffice is disabled + if(clientVars.exportAvailable == "no") { $("#exportworda").remove(); $("#exportpdfa").remove(); @@ -216,13 +218,13 @@ var padimpexp = (function() $("#importmessageabiword").show(); } - else if(clientVars.abiwordAvailable == "withoutPDF") + else if(clientVars.exportAvailable == "withoutPDF") { $("#exportpdfa").remove(); - + $("#exportworda").attr("href", pad_root_path + "/export/doc"); $("#exportopena").attr("href", pad_root_path + "/export/odt"); - + $("#importexport").css({"height":"142px"}); $("#importexportline").css({"height":"142px"}); } @@ -232,7 +234,7 @@ var padimpexp = (function() $("#exportpdfa").attr("href", pad_root_path + "/export/pdf"); $("#exportopena").attr("href", pad_root_path + "/export/odt"); } - + addImportFrames(); $("#importfileinput").change(fileInputUpdated); $('#importform').unbind("submit").submit(fileInputSubmit);