Skip to content

Commit 7b416aa

Browse files
authored
Migrate to renderGridCellContents(RenderContext, HtmlWriter) (#821)
1 parent d3666d3 commit 7b416aa

3 files changed

Lines changed: 14 additions & 82 deletions

File tree

WNPRC_EHR/src/org/labkey/wnprc_ehr/table/WNPRC_EHRCustomizer.java

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
*/
1616
package org.labkey.wnprc_ehr.table;
1717

18-
import org.apache.logging.log4j.Logger;
1918
import org.apache.logging.log4j.LogManager;
19+
import org.apache.logging.log4j.Logger;
2020
import org.jetbrains.annotations.NotNull;
2121
import org.labkey.api.data.AbstractTableInfo;
2222
import org.labkey.api.data.BaseColumnInfo;
@@ -51,24 +51,16 @@
5151
import org.labkey.api.util.HtmlString;
5252
import org.labkey.api.util.HtmlStringBuilder;
5353
import org.labkey.api.util.LinkBuilder;
54-
import org.labkey.api.util.PageFlowUtil;
5554
import org.labkey.api.util.StringExpressionFactory;
5655
import org.labkey.api.view.ActionURL;
5756
import org.labkey.api.writer.HtmlWriter;
5857
import org.labkey.dbutils.api.SimplerFilter;
5958
import org.labkey.wnprc_ehr.security.permissions.WNPRCAnimalRequestsEditPermission;
6059
import org.labkey.wnprc_ehr.security.permissions.WNPRCAnimalRequestsViewPermission;
6160

62-
import java.io.IOException;
63-
import java.io.Writer;
6461
import java.util.ArrayList;
6562
import java.util.List;
6663

67-
/**
68-
* User: bimber
69-
* Date: 12/7/12
70-
* Time: 2:22 PM
71-
*/
7264
public class WNPRC_EHRCustomizer extends AbstractTableCustomizer
7365
{
7466
protected static final Logger _log = LogManager.getLogger(WNPRC_EHRCustomizer.class);
@@ -976,27 +968,23 @@ private void customizeSireIdColumn(AbstractTableInfo ti) {
976968
sireid.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo){
977969

978970
@Override
979-
public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException
971+
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
980972
{
981973
ActionURL url = new ActionURL("ehr", "participantView.view", us.getContainer());
982974
String joinedIds = (String)ctx.get(new FieldKey(getBoundColumn().getFieldKey().getParent(), "sireid"));
983975
if (joinedIds != null)
984976
{
985977
String[] ids = joinedIds.split(",");
986-
String urlString = "";
987978
for (int i = 0; i < ids.length; i++)
988979
{
989980
String id = ids[i];
990981
url.replaceParameter("participantId", id);
991-
urlString += "<a href=\"" + PageFlowUtil.filter(url) + "\">";
992-
urlString += PageFlowUtil.filter(id);
993-
urlString += "</a>";
982+
out.write(LinkBuilder.simpleLink(id, url));
994983
if (i + 1 < ids.length)
995984
{
996-
urlString += ", ";
985+
out.write(", ");
997986
}
998987
}
999-
oldWriter.write(urlString);
1000988
}
1001989
}
1002990

@@ -1020,7 +1008,7 @@ private void customizeReasonForMoveColumn(AbstractTableInfo ti) {
10201008
reason.setDisplayColumnFactory(colInfo -> new DataColumn(colInfo){
10211009

10221010
@Override
1023-
public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException
1011+
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
10241012
{
10251013
ActionURL url = new ActionURL("query", "recordDetails.view", us.getContainer());
10261014
String joinedReasons = (String)ctx.get(new FieldKey(getBoundColumn().getFieldKey().getParent(), "reason"));
@@ -1031,7 +1019,6 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit
10311019
url.addParameter("query.queryName", "housing_reason");
10321020
url.addParameter("keyField", "value");
10331021

1034-
StringBuilder urlString = new StringBuilder();
10351022
for (int i = 0; i < reasons.length; i++)
10361023
{
10371024
String reasonForMoveValue = reasons[i];
@@ -1044,20 +1031,17 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit
10441031
{
10451032
reasonForMoveTitle = (String) ts.getMap().get("title");
10461033
url.replaceParameter("key", reasonForMoveValue);
1047-
urlString.append("<a href=\"").append(PageFlowUtil.filter(url)).append("\">");
1048-
urlString.append(PageFlowUtil.filter(reasonForMoveTitle));
1049-
urlString.append("</a>");
1034+
out.write(LinkBuilder.simpleLink(reasonForMoveTitle, url));
10501035
}
10511036
else
10521037
{
1053-
urlString.append(PageFlowUtil.filter("<" + reasonForMoveValue + ">"));
1038+
out.write("<" + reasonForMoveValue + ">");
10541039
}
10551040
if (i + 1 < reasons.length)
10561041
{
1057-
urlString.append(", ");
1042+
out.write(", ");
10581043
}
10591044
}
1060-
oldWriter.write(urlString.toString());
10611045
}
10621046
}
10631047

WNPRC_Virology/src/org/labkey/wnprc_virology/table/WNPRC_VirologyCustomizer.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111
import org.labkey.api.ldk.table.AbstractTableCustomizer;
1212
import org.labkey.api.writer.HtmlWriter;
1313

14-
import java.io.IOException;
15-
import java.io.Writer;
14+
import static org.labkey.api.util.DOM.STRONG;
1615

1716
public class WNPRC_VirologyCustomizer extends AbstractTableCustomizer
1817
{
@@ -63,26 +62,21 @@ public LLoDHtmlFormatDisplayColumn(ColumnInfo colInfo)
6362
}
6463

6564
@Override
66-
public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException
65+
public void renderGridCellContents(RenderContext ctx, HtmlWriter out)
6766
{
6867

69-
StringBuilder htmlString = new StringBuilder();
7068
String llodCol = ctx.get("below_llod").toString();
71-
if (llodCol.toString().contains("Yes"))
69+
if (llodCol.contains("Yes"))
7270
{
7371
int parenIdx = llodCol.indexOf("(");
7472
String firstPart = llodCol.substring(0, parenIdx);
7573
String lastPart = llodCol.substring(parenIdx);
76-
htmlString.append("<strong>");
77-
htmlString.append(firstPart);
78-
htmlString.append("</strong>");
79-
htmlString.append(lastPart);
80-
oldWriter.write(htmlString.toString());
74+
STRONG(firstPart).appendTo(out);
75+
out.write(lastPart);
8176
}
8277
else
8378
{
84-
htmlString.append(llodCol);
85-
oldWriter.write(htmlString.toString());
79+
out.write(llodCol);
8680
}
8781
}
8882
}

docker/labkey/application.properties

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -136,52 +136,6 @@ management.server.port=8081
136136
#jsonaccesslog.condition-if=attributeName
137137
#jsonaccesslog.condition-unless=attributeName
138138

139-
## Define one or both of 'csp.report' and 'csp.enforce' to enable Content Security Policy (CSP) headers
140-
## Do not use these examples for any production environment without understanding the meaning of each directive!
141-
142-
## example usage 1 - very strict, disallows 'external' websites, disallows unsafe-inline, but only reports violations (does not enforce)
143-
144-
#csp.report=\
145-
# default-src 'self';\
146-
# connect-src 'self' ${LABKEY.ALLOWED.CONNECTIONS} ;\
147-
# object-src 'none' ;\
148-
# style-src 'self' 'unsafe-inline' ;\
149-
# img-src 'self' data: ;\
150-
# font-src 'self' data: ;\
151-
# script-src 'unsafe-eval' 'strict-dynamic' 'nonce-${REQUEST.SCRIPT.NONCE}';\
152-
# base-uri 'self' ;\
153-
# upgrade-insecure-requests ;\
154-
# frame-ancestors 'self' ;\
155-
# report-uri https://www.labkey.org/admin-contentsecuritypolicyreport.api?${CSP.REPORT.PARAMS} ;
156-
157-
## example usage 2 - less strict but enforces directives, (NOTE: unsafe-inline is still required for many modules)
158-
159-
#csp.enforce=\
160-
# default-src 'self' https: ;\
161-
# connect-src 'self' https: ${LABKEY.ALLOWED.CONNECTIONS};\
162-
# object-src 'none' ;\
163-
# style-src 'self' https: 'unsafe-inline' ;\
164-
# img-src 'self' data: ;\
165-
# font-src 'self' data: ;\
166-
# script-src 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' 'nonce-${REQUEST.SCRIPT.NONCE}';\
167-
# base-uri 'self' ;\
168-
# upgrade-insecure-requests ;\
169-
# frame-ancestors 'self' ;\
170-
# report-uri https://www.labkey.org/admin-contentsecuritypolicyreport.api?${CSP.REPORT.PARAMS} ;
171-
172-
## Default CSP for TeamCity and dev deployments
173-
csp.report=\
174-
default-src 'self' https: http: ;\
175-
connect-src 'self' localhost:* ws: ${LABKEY.ALLOWED.CONNECTIONS} ;\
176-
object-src 'none' ;\
177-
style-src 'self' https: 'unsafe-inline' ;\
178-
img-src 'self' https: data: ;\
179-
font-src 'self' http: https: data: ;\
180-
script-src 'unsafe-eval' 'strict-dynamic' 'nonce-${REQUEST.SCRIPT.NONCE}' ;\
181-
base-uri 'self' ;\
182-
frame-ancestors 'self' ;\
183-
report-uri /admin-contentsecuritypolicyreport.api?${CSP.REPORT.PARAMS} ;
184-
185139
## Use a custom logging configuration
186140
#logging.config=path/to/alternative/log4j2.xml
187141

0 commit comments

Comments
 (0)