diff --git a/WNPRC_EHR/src/org/labkey/wnprc_ehr/table/WNPRC_EHRCustomizer.java b/WNPRC_EHR/src/org/labkey/wnprc_ehr/table/WNPRC_EHRCustomizer.java index e8cf75d51..dc3b9b45c 100644 --- a/WNPRC_EHR/src/org/labkey/wnprc_ehr/table/WNPRC_EHRCustomizer.java +++ b/WNPRC_EHR/src/org/labkey/wnprc_ehr/table/WNPRC_EHRCustomizer.java @@ -15,8 +15,8 @@ */ package org.labkey.wnprc_ehr.table; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.jetbrains.annotations.NotNull; import org.labkey.api.data.AbstractTableInfo; import org.labkey.api.data.BaseColumnInfo; @@ -51,7 +51,6 @@ import org.labkey.api.util.HtmlString; import org.labkey.api.util.HtmlStringBuilder; import org.labkey.api.util.LinkBuilder; -import org.labkey.api.util.PageFlowUtil; import org.labkey.api.util.StringExpressionFactory; import org.labkey.api.view.ActionURL; import org.labkey.api.writer.HtmlWriter; @@ -59,16 +58,9 @@ import org.labkey.wnprc_ehr.security.permissions.WNPRCAnimalRequestsEditPermission; import org.labkey.wnprc_ehr.security.permissions.WNPRCAnimalRequestsViewPermission; -import java.io.IOException; -import java.io.Writer; import java.util.ArrayList; import java.util.List; -/** - * User: bimber - * Date: 12/7/12 - * Time: 2:22 PM - */ public class WNPRC_EHRCustomizer extends AbstractTableCustomizer { protected static final Logger _log = LogManager.getLogger(WNPRC_EHRCustomizer.class); @@ -976,27 +968,23 @@ private void customizeSireIdColumn(AbstractTableInfo ti) { sireid.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo){ @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { ActionURL url = new ActionURL("ehr", "participantView.view", us.getContainer()); String joinedIds = (String)ctx.get(new FieldKey(getBoundColumn().getFieldKey().getParent(), "sireid")); if (joinedIds != null) { String[] ids = joinedIds.split(","); - String urlString = ""; for (int i = 0; i < ids.length; i++) { String id = ids[i]; url.replaceParameter("participantId", id); - urlString += ""; - urlString += PageFlowUtil.filter(id); - urlString += ""; + out.write(LinkBuilder.simpleLink(id, url)); if (i + 1 < ids.length) { - urlString += ", "; + out.write(", "); } } - oldWriter.write(urlString); } } @@ -1020,7 +1008,7 @@ private void customizeReasonForMoveColumn(AbstractTableInfo ti) { reason.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo){ @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { ActionURL url = new ActionURL("query", "recordDetails.view", us.getContainer()); String joinedReasons = (String)ctx.get(new FieldKey(getBoundColumn().getFieldKey().getParent(), "reason")); @@ -1031,7 +1019,6 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit url.addParameter("query.queryName", "housing_reason"); url.addParameter("keyField", "value"); - StringBuilder urlString = new StringBuilder(); for (int i = 0; i < reasons.length; i++) { String reasonForMoveValue = reasons[i]; @@ -1044,20 +1031,17 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit { reasonForMoveTitle = (String) ts.getMap().get("title"); url.replaceParameter("key", reasonForMoveValue); - urlString.append(""); - urlString.append(PageFlowUtil.filter(reasonForMoveTitle)); - urlString.append(""); + out.write(LinkBuilder.simpleLink(reasonForMoveTitle, url)); } else { - urlString.append(PageFlowUtil.filter("<" + reasonForMoveValue + ">")); + out.write("<" + reasonForMoveValue + ">"); } if (i + 1 < reasons.length) { - urlString.append(", "); + out.write(", "); } } - oldWriter.write(urlString.toString()); } } diff --git a/WNPRC_Virology/src/org/labkey/wnprc_virology/table/WNPRC_VirologyCustomizer.java b/WNPRC_Virology/src/org/labkey/wnprc_virology/table/WNPRC_VirologyCustomizer.java index 066ed80c4..99a468adb 100644 --- a/WNPRC_Virology/src/org/labkey/wnprc_virology/table/WNPRC_VirologyCustomizer.java +++ b/WNPRC_Virology/src/org/labkey/wnprc_virology/table/WNPRC_VirologyCustomizer.java @@ -11,8 +11,7 @@ import org.labkey.api.ldk.table.AbstractTableCustomizer; import org.labkey.api.writer.HtmlWriter; -import java.io.IOException; -import java.io.Writer; +import static org.labkey.api.util.DOM.STRONG; public class WNPRC_VirologyCustomizer extends AbstractTableCustomizer { @@ -63,26 +62,21 @@ public LLoDHtmlFormatDisplayColumn(ColumnInfo colInfo) } @Override - public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException + public void renderGridCellContents(RenderContext ctx, HtmlWriter out) { - StringBuilder htmlString = new StringBuilder(); String llodCol = ctx.get("below_llod").toString(); - if (llodCol.toString().contains("Yes")) + if (llodCol.contains("Yes")) { int parenIdx = llodCol.indexOf("("); String firstPart = llodCol.substring(0, parenIdx); String lastPart = llodCol.substring(parenIdx); - htmlString.append(""); - htmlString.append(firstPart); - htmlString.append(""); - htmlString.append(lastPart); - oldWriter.write(htmlString.toString()); + STRONG(firstPart).appendTo(out); + out.write(lastPart); } else { - htmlString.append(llodCol); - oldWriter.write(htmlString.toString()); + out.write(llodCol); } } } diff --git a/docker/labkey/application.properties b/docker/labkey/application.properties index a7e04cd44..f7d955e05 100644 --- a/docker/labkey/application.properties +++ b/docker/labkey/application.properties @@ -136,52 +136,6 @@ management.server.port=8081 #jsonaccesslog.condition-if=attributeName #jsonaccesslog.condition-unless=attributeName -## Define one or both of 'csp.report' and 'csp.enforce' to enable Content Security Policy (CSP) headers -## Do not use these examples for any production environment without understanding the meaning of each directive! - -## example usage 1 - very strict, disallows 'external' websites, disallows unsafe-inline, but only reports violations (does not enforce) - -#csp.report=\ -# default-src 'self';\ -# connect-src 'self' ${LABKEY.ALLOWED.CONNECTIONS} ;\ -# object-src 'none' ;\ -# style-src 'self' 'unsafe-inline' ;\ -# img-src 'self' data: ;\ -# font-src 'self' data: ;\ -# script-src 'unsafe-eval' 'strict-dynamic' 'nonce-${REQUEST.SCRIPT.NONCE}';\ -# base-uri 'self' ;\ -# upgrade-insecure-requests ;\ -# frame-ancestors 'self' ;\ -# report-uri https://www.labkey.org/admin-contentsecuritypolicyreport.api?${CSP.REPORT.PARAMS} ; - -## example usage 2 - less strict but enforces directives, (NOTE: unsafe-inline is still required for many modules) - -#csp.enforce=\ -# default-src 'self' https: ;\ -# connect-src 'self' https: ${LABKEY.ALLOWED.CONNECTIONS};\ -# object-src 'none' ;\ -# style-src 'self' https: 'unsafe-inline' ;\ -# img-src 'self' data: ;\ -# font-src 'self' data: ;\ -# script-src 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' 'nonce-${REQUEST.SCRIPT.NONCE}';\ -# base-uri 'self' ;\ -# upgrade-insecure-requests ;\ -# frame-ancestors 'self' ;\ -# report-uri https://www.labkey.org/admin-contentsecuritypolicyreport.api?${CSP.REPORT.PARAMS} ; - -## Default CSP for TeamCity and dev deployments -csp.report=\ - default-src 'self' https: http: ;\ - connect-src 'self' localhost:* ws: ${LABKEY.ALLOWED.CONNECTIONS} ;\ - object-src 'none' ;\ - style-src 'self' https: 'unsafe-inline' ;\ - img-src 'self' https: data: ;\ - font-src 'self' http: https: data: ;\ - script-src 'unsafe-eval' 'strict-dynamic' 'nonce-${REQUEST.SCRIPT.NONCE}' ;\ - base-uri 'self' ;\ - frame-ancestors 'self' ;\ - report-uri /admin-contentsecuritypolicyreport.api?${CSP.REPORT.PARAMS} ; - ## Use a custom logging configuration #logging.config=path/to/alternative/log4j2.xml