loleaflet/src/layer/tile/TileLayer.js | 4 +++- wsd/LOOLWSD.cpp | 16 ++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-)
New commits: commit 2faf8f590b2e1d394188d035ab713ac021473da6 Author: Pranav Kant <pran...@collabora.co.uk> Date: Wed Jun 27 19:53:25 2018 +0530 wsd: in case of multiple query param, handle &attachment= correctly In case of integration with OC/NC, we have WOPISrc= as query param used for load balancing. So, the earlier approach failed with integration. Change-Id: Ib73f4f18eaec870dd53b67886b1b6016416a2e78 Reviewed-on: https://gerrit.libreoffice.org/56533 Reviewed-by: Jan Holesovsky <ke...@collabora.com> Tested-by: Jan Holesovsky <ke...@collabora.com> diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js index 711eb2ef9..35d33fd1d 100644 --- a/loleaflet/src/layer/tile/TileLayer.js +++ b/loleaflet/src/layer/tile/TileLayer.js @@ -566,7 +566,9 @@ L.TileLayer = L.GridLayer.extend({ // due to a pdf.js issue - https://github.com/mozilla/pdf.js/issues/5397 // open the pdf file in a new tab so that that user can print it directly in the browser's // pdf viewer - window.open(url + '?attachment=0', '_blank'); + var param = wopiSrc !== '' ? '&' : '?'; + param += 'attachment=0'; + window.open(url + param, '_blank'); } else { this._map.fire('filedownloadready', {url: url}); diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp index 48e915ab8..ee4f83b2a 100644 --- a/wsd/LOOLWSD.cpp +++ b/wsd/LOOLWSD.cpp @@ -2163,15 +2163,23 @@ private: LOG_INF("HTTP request for: " << filePath.toString()); if (filePath.isAbsolute() && File(filePath).exists()) { - int serveAsAttachment = 1; - if (tokens.count() >= 7) - getTokenInteger(tokens[6], "attachment", serveAsAttachment); + const Poco::URI postRequestUri(request.getURI()); + const Poco::URI::QueryParameters postRequestQueryParams = postRequestUri.getQueryParameters(); + + bool serveAsAttachment = true; + const auto attachmentIt = std::find_if(postRequestQueryParams.begin(), + postRequestQueryParams.end(), + [](const std::pair<std::string, std::string>& element) { + return element.first == "attachment"; + }); + if (attachmentIt != postRequestQueryParams.end()) + serveAsAttachment = attachmentIt->second != "0"; // Instruct browsers to download the file, not display it // with the exception of SVG where we need the browser to // actually show it. std::string contentType = getContentType(fileName); - if (serveAsAttachment != 0 && contentType != "image/svg+xml") + if (serveAsAttachment && contentType != "image/svg+xml") response.set("Content-Disposition", "attachment; filename=\"" + fileName + "\""); try _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits