diff --git a/api/src/org/labkey/api/reports/report/r/view/HtmlOutput.java b/api/src/org/labkey/api/reports/report/r/view/HtmlOutput.java index 40a23b1a927..61ba89e4e9f 100644 --- a/api/src/org/labkey/api/reports/report/r/view/HtmlOutput.java +++ b/api/src/org/labkey/api/reports/report/r/view/HtmlOutput.java @@ -90,6 +90,9 @@ public HtmlOutputView(ParamReplacement param, String label) setLabel(label); } + /** + * Loads an HTML file and adds nonces to any embedded <script> tags. Don't call this with files that aren't HTML. + */ @Override protected String renderInternalAsString(File file) throws Exception { diff --git a/api/src/org/labkey/api/reports/report/r/view/IpynbOutput.java b/api/src/org/labkey/api/reports/report/r/view/IpynbOutput.java index 2aba12264b5..6a58911b498 100644 --- a/api/src/org/labkey/api/reports/report/r/view/IpynbOutput.java +++ b/api/src/org/labkey/api/reports/report/r/view/IpynbOutput.java @@ -31,6 +31,7 @@ import org.labkey.api.util.HtmlString; import org.labkey.api.util.HtmlStringBuilder; import org.labkey.api.util.ImageUtil; +import org.labkey.api.util.PageFlowUtil; import org.labkey.api.view.HttpView; import org.labkey.api.view.ViewContext; @@ -92,7 +93,7 @@ public HttpView getView(ViewContext context) { String html = view.renderInternalAsString(file); URI baseURI = new URI(AppProps.getInstance().getBaseServerUrl()); - if (html != null && baseURI != null) + if (html != null) thumb = ImageUtil.webThumbnail(context, html, baseURI); } catch(Exception ignore){}// if we can't get a thumbnail then that is okay; LabKey should use a default @@ -149,7 +150,8 @@ String stripAnsiColors(String s) @Override protected String renderInternalAsString(File file) throws Exception { - String result = StringUtils.trimToEmpty(super.renderInternalAsString(file)); + // Don't call super.renderInternalAsString(file) since we expect JSON + String result = file.exists() ? StringUtils.trimToEmpty(PageFlowUtil.getFileContentsAsString(file)) : ""; try { final JSONObject obj = new JSONObject(result); diff --git a/api/src/org/labkey/api/util/PageFlowUtil.java b/api/src/org/labkey/api/util/PageFlowUtil.java index f071aea5a61..9a4538ca586 100644 --- a/api/src/org/labkey/api/util/PageFlowUtil.java +++ b/api/src/org/labkey/api/util/PageFlowUtil.java @@ -3166,14 +3166,21 @@ public static String addScriptNonces(String html) String ret = ""; if (doc != null) { - addScriptNonces(doc); - try + if (addScriptNonces(doc) > 0) { - ret = convertNodeToHtml(doc); + try + { + ret = convertNodeToHtml(doc); + } + catch (TransformerException | IOException e) + { + throw new RuntimeException(e); + } } - catch (TransformerException | IOException e) + else { - throw new RuntimeException(e); + // If there are no script tags, just return the passed in HTML + ret = html; } }