diff --git a/flow/src/org/labkey/flow/controllers/attribute/summary.jsp b/flow/src/org/labkey/flow/controllers/attribute/summary.jsp
index 0341d26318..168688d6bc 100644
--- a/flow/src/org/labkey/flow/controllers/attribute/summary.jsp
+++ b/flow/src/org/labkey/flow/controllers/attribute/summary.jsp
@@ -63,7 +63,7 @@
<% } %>
- <%=link("edit").href(editURL.clone().addParameter(AttributeController.Param.rowId, primary._rowId))%>
+ <%=link("edit", editURL.clone().addParameter(AttributeController.Param.rowId, primary._rowId))%>
<%--<% if (totalCount == 0) { %>--%>
<%----%>
<%--<% } %>--%>
@@ -86,7 +86,7 @@
<% } %>
|
- <%=link("edit").href(editURL.clone().addParameter(AttributeController.Param.rowId, alias._rowId))%>
+ <%=link("edit", editURL.clone().addParameter(AttributeController.Param.rowId, alias._rowId))%>
<%----%>
<%----%>
|
@@ -98,7 +98,7 @@
|
- <%=link("create alias").href(aliasURL.clone().addParameter(AttributeController.Param.rowId, primary._rowId))%>
+ <%=link("create alias", aliasURL.clone().addParameter(AttributeController.Param.rowId, primary._rowId))%>
|
|
diff --git a/flow/src/org/labkey/flow/controllers/compensation/showCompensation.jsp b/flow/src/org/labkey/flow/controllers/compensation/showCompensation.jsp
index 8912d64ae0..a4d1c37fc1 100644
--- a/flow/src/org/labkey/flow/controllers/compensation/showCompensation.jsp
+++ b/flow/src/org/labkey/flow/controllers/compensation/showCompensation.jsp
@@ -191,7 +191,7 @@
<%}%>
<% } %>
-<%=link("Download").href(flowComp.urlDownload()).nofollow()%>
+<%=link("Download", flowComp.urlDownload()).nofollow()%>
<%
DiscussionService service = DiscussionService.get();
if (service != null)
diff --git a/flow/src/org/labkey/flow/controllers/editscript/showCompensationCalculation.jsp b/flow/src/org/labkey/flow/controllers/editscript/showCompensationCalculation.jsp
index 075ae92cfa..b39a190ee5 100644
--- a/flow/src/org/labkey/flow/controllers/editscript/showCompensationCalculation.jsp
+++ b/flow/src/org/labkey/flow/controllers/editscript/showCompensationCalculation.jsp
@@ -58,9 +58,9 @@
This compensation calculation may be edited in a number of ways:
- <%=link("Upload a FlowJo workspace").href(form.urlFor(ScriptController.UploadCompensationCalculationAction.class))%>
- <%=link("Switch keywords or gates").href(form.urlFor(ScriptController.ChooseCompensationRunAction.class))%>
- <%=link("Rename gates").href(form.getFlowScript().urlFor(ScriptController.EditGateTreeAction.class, FlowProtocolStep.calculateCompensation))%>
- <%=link("Script main page").href(form.urlFor(AnalysisScriptController.BeginAction.class))%>
+ <%=link("Upload a FlowJo workspace", form.urlFor(ScriptController.UploadCompensationCalculationAction.class))%>
+ <%=link("Switch keywords or gates", form.urlFor(ScriptController.ChooseCompensationRunAction.class))%>
+ <%=link("Rename gates", form.getFlowScript().urlFor(ScriptController.EditGateTreeAction.class, FlowProtocolStep.calculateCompensation))%>
+ <%=link("Script main page", form.urlFor(AnalysisScriptController.BeginAction.class))%>
<% } %>
diff --git a/flow/src/org/labkey/flow/controllers/executescript/showScript.jsp b/flow/src/org/labkey/flow/controllers/executescript/showScript.jsp
index d02646c5b0..b54f1bf335 100644
--- a/flow/src/org/labkey/flow/controllers/executescript/showScript.jsp
+++ b/flow/src/org/labkey/flow/controllers/executescript/showScript.jsp
@@ -69,7 +69,7 @@ The analysis section describes which gates in the analysis, as well as the stati
<% if (script.getRunCount() > 0) {
boolean showRuns = FlowPreference.showRuns.getBooleanValue(request);
if (showRuns) {
- %><%=link("Hide Runs").href(url.clone().replaceParameter("showRuns", "0"))%>
<%
+ %><%=link("Hide Runs", url.clone().replaceParameter("showRuns", "0"))%>
<%
BindException errors = new NullSafeBindException(new Object(), "fake");
FlowSchema schema = new FlowSchema(context);
@@ -88,7 +88,7 @@ The analysis section describes which gates in the analysis, as well as the stati
view.getSettings().getBaseFilter().addCondition(FieldKey.fromParts("AnalysisScript", "RowId"), script.getScriptId(), CompareType.EQUAL);
include(view, out);
} else {
- %><%=link("Show Runs").href(url.clone().replaceParameter("showRuns", "1"))%><%
+ %><%=link("Show Runs", url.clone().replaceParameter("showRuns", "1"))%><%
}
} %>
diff --git a/flow/src/org/labkey/flow/controllers/protocol/showProtocol.jsp b/flow/src/org/labkey/flow/controllers/protocol/showProtocol.jsp
index ba2fc02aa0..2c27a4ef41 100644
--- a/flow/src/org/labkey/flow/controllers/protocol/showProtocol.jsp
+++ b/flow/src/org/labkey/flow/controllers/protocol/showProtocol.jsp
@@ -36,36 +36,36 @@
Upload sample information and match samples with FCSFiles.
<% if (sampleType == null) { %>
No samples have been uploaded in this folder.
- <%=link("Create new sample type").href(protocol.urlCreateSampleType())%>
+ <%=link("Create new sample type", protocol.urlCreateSampleType())%>
<% } else { %>
- <%=link("Show sample type").href(protocol.getSampleTypeDetailsURL(sampleType, getContainer()))%>
- <%=link("Show samples joined to FCS Files").href(protocol.urlShowSamples())%>
- <%=link("Upload more samples from a spreadsheet").href(protocol.urlUploadSamples())%>
- <% if (protocol.getSampleTypeJoinFields().size() != 0) { %>
- <%=link("Modify sample join fields").href(protocol.urlFor(JoinSampleTypeAction.class))%>
+ <%=link("Show sample type", protocol.getSampleTypeDetailsURL(sampleType, getContainer()))%>
+ <%=link("Show samples joined to FCS Files", protocol.urlShowSamples())%>
+ <%=link("Upload more samples from a spreadsheet", protocol.urlUploadSamples())%>
+ <% if (!protocol.getSampleTypeJoinFields().isEmpty()) { %>
+ <%=link("Modify sample join fields", protocol.urlFor(JoinSampleTypeAction.class))%>
<% } else { %>
- <%=link("Join samples to FCS File Data").href(protocol.urlFor(JoinSampleTypeAction.class))%>
+ <%=link("Join samples to FCS File Data", protocol.urlFor(JoinSampleTypeAction.class))%>
<% } %>
<% } %>
FCS Analysis Display Names
When you analyze an FCS file, the FCS analysis can be given a name composed from keyword values from the FCS file.
- <%=link("Change FCS Analyses Names").href(protocol.urlFor(ProtocolController.EditFCSAnalysisNameAction.class))%>
+ <%=link("Change FCS Analyses Names", protocol.urlFor(ProtocolController.EditFCSAnalysisNameAction.class))%>
FCS Analysis Filter
You can choose to only analyze FCS files where the keywords match certain criteria.
- <%=link("Edit FCS Analysis Filter").href(protocol.urlFor(ProtocolController.EditFCSAnalysisFilterAction.class))%>
+ <%=link("Edit FCS Analysis Filter", protocol.urlFor(ProtocolController.EditFCSAnalysisFilterAction.class))%>
Metadata
Identify participant visit/date columns and
columns used to subtract background from stimulated wells.
- <%=link("Edit Metadata").href(protocol.urlFor(ProtocolController.EditICSMetadataAction.class))%>
+ <%=link("Edit Metadata", protocol.urlFor(ProtocolController.EditICSMetadataAction.class))%>
Manage Names and Aliases
Create and remove names and aliases for Keywords, Statistics, and Graphs.
- <%=link("Case sensitivity").href(protocol.urlFor(AttributeController.CaseSensitivityAction.class).addReturnUrl(getActionURL()))%>
- <%=link("Delete Unused").href(protocol.urlFor(AttributeController.DeleteUnusedAction.class).addReturnUrl(getActionURL()))%>
- <%=link("Manage Keywords").href(protocol.urlFor(AttributeController.SummaryAction.class).addParameter(AttributeController.Param.type, AttributeType.keyword.name()))%>
- <%=link("Manage Statistics").href(protocol.urlFor(AttributeController.SummaryAction.class).addParameter(AttributeController.Param.type, AttributeType.statistic.name()))%>
- <%=link("Manage Graphs").href(protocol.urlFor(AttributeController.SummaryAction.class).addParameter(AttributeController.Param.type, AttributeType.graph.name()))%>
+ <%=link("Case sensitivity", protocol.urlFor(AttributeController.CaseSensitivityAction.class).addReturnUrl(getActionURL()))%>
+ <%=link("Delete Unused", protocol.urlFor(AttributeController.DeleteUnusedAction.class).addReturnUrl(getActionURL()))%>
+ <%=link("Manage Keywords", protocol.urlFor(AttributeController.SummaryAction.class).addParameter(AttributeController.Param.type, AttributeType.keyword.name()))%>
+ <%=link("Manage Statistics", protocol.urlFor(AttributeController.SummaryAction.class).addParameter(AttributeController.Param.type, AttributeType.statistic.name()))%>
+ <%=link("Manage Graphs", protocol.urlFor(AttributeController.SummaryAction.class).addParameter(AttributeController.Param.type, AttributeType.graph.name()))%>
diff --git a/flow/src/org/labkey/flow/controllers/protocol/showSamples2.jsp b/flow/src/org/labkey/flow/controllers/protocol/showSamples2.jsp
index aa9534efe4..3ce00681fe 100644
--- a/flow/src/org/labkey/flow/controllers/protocol/showSamples2.jsp
+++ b/flow/src/org/labkey/flow/controllers/protocol/showSamples2.jsp
@@ -75,14 +75,14 @@
<% if (st == null) { %>
No samples have been imported in this folder.
- <%=link("Create sample type").href(protocol.urlCreateSampleType())%>
+ <%=link("Create sample type", protocol.urlCreateSampleType())%>
<% } else { %>
There are <%=sampleCount%> sample descriptions in this folder.
-<% if (sampleTypeJoinFields.size() == 0) { %>
+<% if (sampleTypeJoinFields.isEmpty()) { %>
- <%=link("Join samples to FCS File Data").href(protocol.urlFor(JoinSampleTypeAction.class))%>
+ <%=link("Join samples to FCS File Data", protocol.urlFor(JoinSampleTypeAction.class))%>
No sample join fields have been defined yet. The samples are linked to the FCS files using keywords. When new samples are added or FCS files are loaded, new links will be created.
<% } else { %>
Samples are joined to FCSFiles by the following properties (edit):
diff --git a/flow/src/org/labkey/flow/controllers/run/download.jsp b/flow/src/org/labkey/flow/controllers/run/download.jsp
index f5076bcb21..2effebbb88 100644
--- a/flow/src/org/labkey/flow/controllers/run/download.jsp
+++ b/flow/src/org/labkey/flow/controllers/run/download.jsp
@@ -48,7 +48,7 @@
%>
- <%=link("Download FCS Files anyway?").href(model.run.urlFor(RunController.DownloadAction.class).addParameter("skipMissing", true))%>
+ <%=link("Download FCS Files anyway?", model.run.urlFor(RunController.DownloadAction.class).addParameter("skipMissing", true))%>
diff --git a/flow/src/org/labkey/flow/reports/PositivityFlowReport.java b/flow/src/org/labkey/flow/reports/PositivityFlowReport.java
index 22176a84ed..74f8e05358 100644
--- a/flow/src/org/labkey/flow/reports/PositivityFlowReport.java
+++ b/flow/src/org/labkey/flow/reports/PositivityFlowReport.java
@@ -26,6 +26,7 @@
import org.labkey.api.query.AliasManager;
import org.labkey.api.query.FieldKey;
import org.labkey.api.reports.report.ReportDescriptor;
+import org.labkey.api.util.LinkBuilder;
import org.labkey.api.util.PageFlowUtil;
import org.labkey.api.util.Tuple3;
import org.labkey.api.view.ActionURL;
@@ -178,7 +179,7 @@ public HttpView renderReport(ViewContext context) throws Exception
return HtmlView.unsafe(
"
Positivity report requires configuring flow experiment metadata for study and background information before running.
" +
- PageFlowUtil.link("Edit Metadata").href(editICSMetadataURL));
+ LinkBuilder.labkeyLink("Edit Metadata", editICSMetadataURL));
}
else
{
diff --git a/flow/src/org/labkey/flow/reports/editPositivityReport.jsp b/flow/src/org/labkey/flow/reports/editPositivityReport.jsp
index f5ce93d709..35d94445af 100644
--- a/flow/src/org/labkey/flow/reports/editPositivityReport.jsp
+++ b/flow/src/org/labkey/flow/reports/editPositivityReport.jsp
@@ -70,7 +70,7 @@
The positivity report requires metadata describing the sample and background information
of the flow experiment before it can be run.
- <%=link("Edit Metadata").href(editICSMetadataURL)%>
+ <%=link("Edit Metadata", editICSMetadataURL)%>
<% } %>
diff --git a/luminex/src/org/labkey/luminex/query/ExclusionUIDisplayColumn.java b/luminex/src/org/labkey/luminex/query/ExclusionUIDisplayColumn.java
index 75a0068bf9..4d79f8d53c 100644
--- a/luminex/src/org/labkey/luminex/query/ExclusionUIDisplayColumn.java
+++ b/luminex/src/org/labkey/luminex/query/ExclusionUIDisplayColumn.java
@@ -112,7 +112,7 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit
// add onclick handler to call the well exclusion window creation function
String onClick = "openExclusionsWellWindow(" + _protocolId + ", " + runId + ", " + dataId + ", " +
jsString(wellID) + ", " + (description == null ? null : jsString(description)) + ", " + jsString(type) + ");";
- new LinkBuilder(img).href("#").onClick(onClick).clearClasses().appendTo(oldWriter);
+ LinkBuilder.simpleLink(img).href("#").onClick(onClick).appendTo(oldWriter);
}
else
{
diff --git a/luminex/src/org/labkey/luminex/query/LuminexProtocolSchema.java b/luminex/src/org/labkey/luminex/query/LuminexProtocolSchema.java
index 5944c4d73e..95afc5e3dd 100644
--- a/luminex/src/org/labkey/luminex/query/LuminexProtocolSchema.java
+++ b/luminex/src/org/labkey/luminex/query/LuminexProtocolSchema.java
@@ -662,9 +662,8 @@ else if (pdfs.size() > 1)
}
HtmlString image = HtmlString.unsafe("
");
- new LinkBuilder(image)
+ LinkBuilder.simpleLink(image)
.onMouseOver("return showHelpDiv(this, 'Titration Curves', " + PageFlowUtil.jsString(PageFlowUtil.filter(sb.toString())) + ");")
- .clearClasses()
.appendTo(oldWriter);
}
}
diff --git a/luminex/src/org/labkey/luminex/view/guideSetConfirmDelete.jsp b/luminex/src/org/labkey/luminex/view/guideSetConfirmDelete.jsp
index 40394875d8..93b2fcc987 100644
--- a/luminex/src/org/labkey/luminex/view/guideSetConfirmDelete.jsp
+++ b/luminex/src/org/labkey/luminex/view/guideSetConfirmDelete.jsp
@@ -61,8 +61,7 @@
<% for (GuideSet gs : guideSets) { %>
<%
- new LinkBuilder("Guide Set " + gs.getGuideSetId() + ": " + gs.getComment())
- .href("#")
+ LinkBuilder.labkeyLink("Guide Set " + gs.getGuideSetId() + ": " + gs.getComment(), "#")
.attributes(Map.of(tabindex.name(), "-1"))
.onClick("createGuideSetWindow(" + bean.getProtocol().getRowId() + ", " + gs.getGuideSetId() + ", false)")
.appendTo(out);
diff --git a/ms2/src/org/labkey/ms2/MS2Controller.java b/ms2/src/org/labkey/ms2/MS2Controller.java
index 7eed9c2fb9..038bcf7e1e 100644
--- a/ms2/src/org/labkey/ms2/MS2Controller.java
+++ b/ms2/src/org/labkey/ms2/MS2Controller.java
@@ -658,7 +658,7 @@ private LinkBuilder modificationHref(MS2Run run)
onClick.append(", 100); return false;");
- return PageFlowUtil.link("Show Modifications").onClick(onClick.toString()).id("modificationsLink");
+ return LinkBuilder.labkeyLink("Show Modifications").onClick(onClick.toString()).id("modificationsLink");
}
private DOM.Renderable appendMods(Map mods, String heading)
@@ -826,10 +826,10 @@ public ModelAndView getView(DetailsForm form, BindException errors) throws Excep
String nextPrevStr = "";
if (null != previousURL) {
- nextPrevStr += PageFlowUtil.link("Previous").href(previousURL);
+ nextPrevStr += LinkBuilder.labkeyLink("Previous", previousURL);
}
if (null != nextURL) {
- nextPrevStr += PageFlowUtil.link("Next").href(nextURL);
+ nextPrevStr += LinkBuilder.labkeyLink("Next", nextURL);
}
if (!nextPrevStr.isEmpty()) {
result.addView(HtmlView.unsafe(nextPrevStr));
diff --git a/ms2/src/org/labkey/ms2/runSummary.jsp b/ms2/src/org/labkey/ms2/runSummary.jsp
index adfc0a81d2..97ba7d92c1 100644
--- a/ms2/src/org/labkey/ms2/runSummary.jsp
+++ b/ms2/src/org/labkey/ms2/runSummary.jsp
@@ -76,17 +76,17 @@ if (null != bean.quantAlgorithm)
if (null != run.getParamsFileName() && null != run.getPath())
{ %>
- <%=link("Show " + run.getParamsFileName()).href(urlFor(MS2Controller.ShowParamsFileAction.class).addParameter("run", run.getRun())).id("paramFileLink").target("paramFile")%><%
+ <%=link("Show " + run.getParamsFileName(), urlFor(MS2Controller.ShowParamsFileAction.class).addParameter("run", run.getRun())).id("paramFileLink").target("paramFile")%><%
}
if (run.getHasPeptideProphet())
{ %>
- <%=link("Show Peptide Prophet Details").href(urlFor(MS2Controller.ShowPeptideProphetDetailsAction.class).addParameter("run", run.getRun())).id("peptideProphetDetailsLink").target("peptideProphetSummary")%><%
+ <%=link("Show Peptide Prophet Details", urlFor(MS2Controller.ShowPeptideProphetDetailsAction.class).addParameter("run", run.getRun())).id("peptideProphetDetailsLink").target("peptideProphetSummary")%><%
}
if (run.hasProteinProphet())
{ %>
- <%=link("Show Protein Prophet Details").href(urlFor(MS2Controller.ShowProteinProphetDetailsAction.class).addParameter("run", run.getRun())).id("proteinProphetDetailsLink").target("proteinProphetSummary")%><%
+ <%=link("Show Protein Prophet Details", urlFor(MS2Controller.ShowProteinProphetDetailsAction.class).addParameter("run", run.getRun())).id("proteinProphetDetailsLink").target("proteinProphetSummary")%><%
} %>
diff --git a/protein/api-src/org/labkey/api/protein/ProteinManager.java b/protein/api-src/org/labkey/api/protein/ProteinManager.java
index efba9b31a7..0e9d6413e9 100644
--- a/protein/api-src/org/labkey/api/protein/ProteinManager.java
+++ b/protein/api-src/org/labkey/api/protein/ProteinManager.java
@@ -298,7 +298,7 @@ public static HtmlString makeFullAnchorLink(String url, String target, String tx
if (null == url)
return HtmlString.of(txt);
- return new LinkBuilder(txt).href(url).target(target).clearClasses().getHtmlString();
+ return LinkBuilder.simpleLink(txt, url).target(target).getHtmlString();
}
public static List makeFullAnchorLinks(Collection idents, String target, String identType)
diff --git a/protein/src/org/labkey/protein/ProteinController.java b/protein/src/org/labkey/protein/ProteinController.java
index 2e19d75d63..323d00f720 100644
--- a/protein/src/org/labkey/protein/ProteinController.java
+++ b/protein/src/org/labkey/protein/ProteinController.java
@@ -104,6 +104,7 @@
import org.labkey.api.util.HtmlString;
import org.labkey.api.util.HtmlStringBuilder;
import org.labkey.api.util.JobRunner;
+import org.labkey.api.util.LinkBuilder;
import org.labkey.api.util.PageFlowUtil;
import org.labkey.api.util.TestContext;
import org.labkey.api.util.URLHelper;
@@ -394,13 +395,13 @@ public MenuButton createQueryPickerButton(String label)
{
url = new ActionURL(ShowAnnotationSetAction.class, getContainer());
url.addParameter("CustomAnnotation.queryName", settings.getQueryName());
- header.append("This view shows your protein list with all the proteins that match. If more than one sequence matches you will get multiple rows. ").append(PageFlowUtil.link("show without proteins").href(url));
+ header.append("This view shows your protein list with all the proteins that match. If more than one sequence matches you will get multiple rows. ").append(LinkBuilder.labkeyLink("show without proteins", url));
}
else
{
url = new ActionURL(ShowAnnotationSetWithSequencesAction.class, getContainer());
url.addParameter("CustomAnnotation.queryName", settings.getQueryName());
- header.append("This view shows just the data uploaded as part of the list. ").append(PageFlowUtil.link("show with matching proteins loaded into this server").href(url));
+ header.append("This view shows just the data uploaded as part of the list. ").append(LinkBuilder.labkeyLink("show with matching proteins loaded into this server", url));
}
HtmlView linkView = new HtmlView(header);