Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ for (AnnouncementModel a : bean.announcementModels)
}
if (!bean.isPrint)
{
%><tr><td style="padding-bottom:4px;" colspan=3 align="left"><%=link("view " + bean.settings.getConversationName().toLowerCase() + (null != bean.insertURL ? " or respond" : "")).href(a.getThreadURL(c).addParameter("rowId", a.getRowId()))%></td></tr><%
%><tr><td style="padding-bottom:4px;" colspan=3 align="left"><%=link("view " + bean.settings.getConversationName().toLowerCase() + (null != bean.insertURL ? " or respond" : ""), a.getThreadURL(c).addParameter("rowId", a.getRowId()))%></td></tr><%
}
}
%></table>
Expand Down
2 changes: 1 addition & 1 deletion api/src/org/labkey/api/action/LabKeyErrorWithLink.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public HtmlString renderToHTML(ViewContext context)
if (adviceHref != null)
{
builder.append(" ");
builder.append(new LinkBuilder(getAdviceText()).href(getAdviceHref()).clearClasses());
builder.append(LinkBuilder.simpleLink(getAdviceText(), getAdviceHref()));
}

return builder.getHtmlString();
Expand Down
107 changes: 47 additions & 60 deletions api/src/org/labkey/api/assay/AssayQCFlagColumn.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,7 @@
import org.jetbrains.annotations.NotNull;
import org.junit.Assert;
import org.junit.Test;
import org.labkey.api.data.ColumnInfo;
import org.labkey.api.data.DataColumn;
import org.labkey.api.data.DisplayColumn;
import org.labkey.api.data.DisplayColumnFactory;
import org.labkey.api.data.JdbcType;
import org.labkey.api.data.RenderContext;
Expand All @@ -48,16 +46,12 @@
import static org.apache.commons.lang3.StringUtils.isNotBlank;
import static org.labkey.api.util.PageFlowUtil.jsString;

/**
* User: jeckels
* Date: Dec 12, 2011
*/
public class AssayQCFlagColumn extends ExprColumn
{
public static final String NAME = "QCFlags";

private String _schemaName;
private boolean _editable;
private final String _schemaName;
private final boolean _editable;

public AssayQCFlagColumn(ExpRunTable parent, String schemaName, boolean editable)
{
Expand All @@ -70,62 +64,55 @@ public AssayQCFlagColumn(ExpRunTable parent, String schemaName, boolean editable
@Override
public DisplayColumnFactory getDisplayColumnFactory()
{
return new DisplayColumnFactory()
return colInfo -> new DataColumn(colInfo)
{
@NotNull
@Override
public Set<ClientDependency> getClientDependencies()
{
return new LinkedHashSet<>(Arrays.asList(
ClientDependency.fromPath("clientapi/ext3"),
ClientDependency.fromPath("experiment/QCFlagToggleWindow.js")
));
}

@Override
public DisplayColumn createRenderer(ColumnInfo colInfo)
public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException
{
return new DataColumn(colInfo)
String strValue = (String)getValue(ctx);
if (isNotBlank(strValue))
{
@NotNull
@Override
public Set<ClientDependency> getClientDependencies()
{
return new LinkedHashSet<>(Arrays.asList(
ClientDependency.fromPath("clientapi/ext3"),
ClientDependency.fromPath("experiment/QCFlagToggleWindow.js")
));
}

@Override
public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWriter out) throws IOException
{
String strValue = (String)getValue(ctx);
if (isNotBlank(strValue))
{
String[] values = strValue.split(",");
Boolean[] enabled = parseBooleans(values, ctx.get(getEnabledFieldKey(), String.class));
Integer runId = ctx.get(getRunRowIdFieldKey(), Integer.class);

// add onclick handler to call the QCFlag toggle window creation function
// users with update perm will be able to change enabled state and edit comment, others will only be able to read flag details
LinkBuilder linkBuilder = new LinkBuilder(getCollapsedQCFlagOutput(values, enabled))
.onClick("showQCFlagToggleWindow(" + jsString(_schemaName) + ", " + runId + "," + _editable + "); return false;");
oldWriter.write(linkBuilder.toString());
}
else
{
oldWriter.write("&nbsp;");
}
}

@Override
public void addQueryFieldKeys(Set<FieldKey> keys)
{
keys.add(getEnabledFieldKey());
keys.add(getRunRowIdFieldKey());
}

private FieldKey getEnabledFieldKey()
{
return new FieldKey(getBoundColumn().getFieldKey().getParent(), "QCFlagsEnabled");
}

private FieldKey getRunRowIdFieldKey()
{
return new FieldKey(getBoundColumn().getFieldKey().getParent(), "RowId");
}
};
String[] values = strValue.split(",");
Boolean[] enabled = parseBooleans(values, ctx.get(getEnabledFieldKey(), String.class));
Integer runId = ctx.get(getRunRowIdFieldKey(), Integer.class);

// add onclick handler to call the QCFlag toggle window creation function
// users with update perm will be able to change enabled state and edit comment, others will only be able to read flag details
LinkBuilder linkBuilder = new LinkBuilder(getCollapsedQCFlagOutput(values, enabled))
.onClick("showQCFlagToggleWindow(" + jsString(_schemaName) + ", " + runId + "," + _editable + "); return false;");
oldWriter.write(linkBuilder.toString());
}
else
{
oldWriter.write("&nbsp;");
}
}

@Override
public void addQueryFieldKeys(Set<FieldKey> keys)
{
keys.add(getEnabledFieldKey());
keys.add(getRunRowIdFieldKey());
}

private FieldKey getEnabledFieldKey()
{
return new FieldKey(getBoundColumn().getFieldKey().getParent(), "QCFlagsEnabled");
}

private FieldKey getRunRowIdFieldKey()
{
return new FieldKey(getBoundColumn().getFieldKey().getParent(), "RowId");
}
};
}
Expand Down
3 changes: 2 additions & 1 deletion api/src/org/labkey/api/assay/AssayView.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.labkey.api.query.QueryView;
import org.labkey.api.security.permissions.AdminPermission;
import org.labkey.api.util.HtmlStringBuilder;
import org.labkey.api.util.LinkBuilder;
import org.labkey.api.util.PageFlowUtil;
import org.labkey.api.view.ActionURL;
import org.labkey.api.view.HtmlView;
Expand Down Expand Up @@ -61,7 +62,7 @@ public void setupViews(QueryView queryView, boolean minimizeLinks, AssayProvider
if (container.hasPermission(getViewContext().getUser(), AdminPermission.class))
{
ActionURL url = PageFlowUtil.urlProvider(PipelineUrls.class).urlSetup(container);
html.append(PageFlowUtil.link("setup pipeline", url));
html.append(LinkBuilder.labkeyLink("setup pipeline", url));
}
else
html.append(" Please ask an administrator for assistance.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1213,7 +1213,7 @@ public HtmlString getErrors(String paramName)
{
sb.append("<br>");
String script = "uploadWizard_showPopup('extraErrors', 'All Errors', " + PageFlowUtil.jsString(msgBox.toString()) + "); return false;";
sb.append(new LinkBuilder("Too many errors to display (click to show all).").id("extraErrors").onClick(script).getHtmlString());
sb.append(LinkBuilder.labkeyLink("Too many errors to display (click to show all).").id("extraErrors").onClick(script).getHtmlString());
sb.append("<br>");
}
return sb.getHtmlString();
Expand Down
2 changes: 1 addition & 1 deletion api/src/org/labkey/api/assay/actions/assayHeader.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
String url = link.getHref();
boolean active = current.getLocalURIString().equals(url);
%>
<%= unsafe(active ? "<strong>" : "") %><%= link(link.getText()).href(url) %><%= unsafe(active ? "</strong>" : "") %>
<%= unsafe(active ? "<strong>" : "") %><%= link(link.getText(), url) %><%= unsafe(active ? "</strong>" : "") %>
<%
}
else
Expand Down
2 changes: 1 addition & 1 deletion api/src/org/labkey/api/data/CrosstabDataRegion.java
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ protected SafeToRender getMemberCaptionWithUrl(String caption, String url)
{
if (url != null)
{
return new LinkBuilder(caption).href(url);
return LinkBuilder.simpleLink(caption, url);
}

return HtmlString.of(caption);
Expand Down
2 changes: 1 addition & 1 deletion api/src/org/labkey/api/data/DataColumn.java
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,7 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit

if (StringUtils.isNotBlank(url))
{
LinkBuilder link = new LinkBuilder(formattedValue).href(url).clearClasses();
LinkBuilder link = LinkBuilder.simpleLink(formattedValue).href(url);

String linkTitle = renderURLTitle(ctx);
if (null != linkTitle)
Expand Down
3 changes: 2 additions & 1 deletion api/src/org/labkey/api/data/UrlColumn.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package org.labkey.api.data;

import org.labkey.api.util.LinkBuilder;
import org.labkey.api.util.PageFlowUtil;
import org.labkey.api.util.StringExpression;
import org.labkey.api.view.ActionURL;
Expand Down Expand Up @@ -46,6 +47,6 @@ public void renderGridCellContents(RenderContext ctx, Writer oldWriter, HtmlWrit
String url = renderURL(ctx);

if (value != null && url != null)
oldWriter.write(PageFlowUtil.link(value.toString()).href(url).target(_linkTarget).toString());
oldWriter.write(LinkBuilder.labkeyLink(value.toString(), url).target(_linkTarget).toString());
}
}
10 changes: 5 additions & 5 deletions api/src/org/labkey/api/data/queryprofiler/QueryProfiler.java
Original file line number Diff line number Diff line change
Expand Up @@ -410,10 +410,10 @@ public HttpView<?> getStackTraceView(final String sqlHash, final ActionURLFactor
Arrays.stream(ExecutionPlanType.values()).
filter(tracker::canShowExecutionPlan).
map(type -> DOM.DIV(
new LinkBuilder("Show " + type.getDescription()).
href(executeFactory.getActionURL(tracker.getHash()).addParameter("type", type.name())).build(),
ExecutionPlanType.Actual == type ? DOM.DIV(new LinkBuilder("Log " + type.getDescription() + " to primary site log").
href(executeFactory.getActionURL(tracker.getHash()).addParameter("type", type.name()).addParameter("log", true)).build()) : null
LinkBuilder.labkeyLink("Show " + type.getDescription(),
executeFactory.getActionURL(tracker.getHash()).addParameter("type", type.name())).build(),
ExecutionPlanType.Actual == type ? DOM.DIV(LinkBuilder.labkeyLink("Log " + type.getDescription() + " to primary site log",
executeFactory.getActionURL(tracker.getHash()).addParameter("type", type.name()).addParameter("log", true)).build()) : null
)),
DOM.BR(),
tracker.renderStackTraces()
Expand All @@ -425,7 +425,7 @@ public HttpView<?> getStackTraceView(final String sqlHash, final ActionURLFactor

private LinkBuilder.Link copyToClipboardLink(String linkId, String targetId)
{
return new LinkBuilder("copy to clipboard").
return LinkBuilder.labkeyLink("copy to clipboard").
onClick("return false;").
id(linkId).
attributes(Collections.singletonMap("data-clipboard-target", "#" + targetId)).
Expand Down
3 changes: 2 additions & 1 deletion api/src/org/labkey/api/defaults/SetDefaultValuesAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.labkey.api.util.DOM.Renderable;
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.URLHelper;
import org.labkey.api.view.ActionURL;
Expand Down Expand Up @@ -321,7 +322,7 @@ public HttpView getView(FormType domainIdForm, boolean reshow, BindException err
if (!domain.getContainer().equals(getContainer()) && domain.getContainer().hasPermission(getUser(), AdminPermission.class))
{
ActionURL url = buildSetInheritedDefaultsURL(domain, domainIdForm);
headerHtml.append(PageFlowUtil.link("edit default values for this table in " + PageFlowUtil.filter(domain.getContainer().getPath()), url));
headerHtml.append(LinkBuilder.labkeyLink("edit default values for this table in " + PageFlowUtil.filter(domain.getContainer().getPath()), url));
}
headerHtml.unsafeAppend("<p>Default values set here will be inherited by all sub-folders that use this table and do not specify their own defaults.</p>");

Expand Down
30 changes: 27 additions & 3 deletions api/src/org/labkey/api/jsp/JspBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ public LinkBuilder iconLink(String iconCls, String tooltip, URLHelper url)

public LinkBuilder link(String text)
{
return new LinkBuilder(text);
return LinkBuilder.labkeyLink(text);
}

public LinkBuilder link(Renderable html)
Expand All @@ -460,25 +460,49 @@ public LinkBuilder link(String text, @NotNull Class<? extends Controller> action
// Link to a URLHelper
public LinkBuilder link(String text, @NotNull URLHelper url)
{
return link(text).href(url);
return LinkBuilder.labkeyLink(text, url);
}

public LinkBuilder link(String text, @NotNull String url)
{
return link(text).href(url);
return LinkBuilder.labkeyLink(text, url);
}

public LinkBuilder link(Renderable html, @NotNull URLHelper url)
{
return new LinkBuilder(html).href(url);
}

// Simple, unstyled link
public LinkBuilder simpleLink(String text)
{
return LinkBuilder.simpleLink(text);
}

// Simple, unstyled link
public LinkBuilder simpleLink(String text, @NotNull URLHelper url)
{
return LinkBuilder.simpleLink(text, url);
}

// Simple, unstyled link
public LinkBuilder simpleLink(String text, @NotNull String url)
{
return LinkBuilder.simpleLink(text, url);
}

// Simple, unstyled link
public LinkBuilder simpleLink(Renderable html)
{
return LinkBuilder.simpleLink(html);
}

// Simple, unstyled link
public LinkBuilder simpleLink(Renderable html, @NotNull URLHelper url)
{
return LinkBuilder.simpleLink(html, url);
}

public InputBuilder<?> input()
{
return new InputBuilder<>();
Expand Down
3 changes: 2 additions & 1 deletion api/src/org/labkey/api/query/QueryView.java
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@
import org.labkey.api.util.ExceptionUtil;
import org.labkey.api.util.FileUtil;
import org.labkey.api.util.GUID;
import org.labkey.api.util.LinkBuilder;
import org.labkey.api.util.PageFlowUtil;
import org.labkey.api.util.Pair;
import org.labkey.api.util.ResponseHelper;
Expand Down Expand Up @@ -393,7 +394,7 @@ protected void renderErrors(PrintWriter out, String message, List<? extends Thro
if (getUser().isPlatformDeveloper())
{
out.write(" ");
out.print(PageFlowUtil.link(StringUtils.defaultString(resolveText, "resolve")).href(resolveURL));
out.print(LinkBuilder.labkeyLink(StringUtils.defaultString(resolveText, "resolve"), resolveURL));
}
}
out.write("<br>");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
<% if (type != null) { %> <tr><td><b>Type:</b></td><td><%=h(type)%></td></tr> <% } %>
<% if (description != null) { %> <tr><td><b>Description:</b></td><td><%=h(description)%></td></tr> <% } %>
<tr><td colspan=2>
<%=link("view report").href(url).target(report.getRunReportTarget())%>
<%=link("view report", url).target(report.getRunReportTarget())%>
</td></tr>
</table>
<div style='clear: both;'></div>
Expand Down
2 changes: 1 addition & 1 deletion api/src/org/labkey/api/security/AuthenticationManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -1636,7 +1636,7 @@ public LinkFactory(SSOAuthenticationConfiguration<? extends SSOAuthenticationPro
{
HtmlString img = getImg(prefix);

return null != img ? new LinkBuilder(img).href(getURL(returnUrl, false)).clearClasses().getHtmlString() : null;
return null != img ? LinkBuilder.simpleLink(img, getURL(returnUrl, false)).getHtmlString() : null;
}

@SuppressWarnings("ConstantConditions")
Expand Down
5 changes: 2 additions & 3 deletions api/src/org/labkey/api/security/StrongPasswordValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,10 @@ protected int getRequiredBitsOfEntropy()
if (tips) tips.style.display = (tips.style.display === 'none' ? 'block' : 'none');
this.text = (this.text.includes('show') ?
""" + PageFlowUtil.jsString(_tipsLinkText.replace("show", "hide")) + " : " + PageFlowUtil.jsString(_tipsLinkText) + ");";
private final LinkBuilder _tipsLink = new LinkBuilder(_tipsLinkText)
private final LinkBuilder _tipsLink = LinkBuilder.simpleLink(_tipsLinkText)
.id("tipsLink")
.attributes(Map.of(DOM.Attribute.tabindex.name(), "5"))
.onClick(_tipsLinkOnClick)
.clearClasses();
.onClick(_tipsLinkOnClick);

private final HtmlString _tips = DOM.createHtml(
DIV(id("passwordTips").at(DOM.Attribute.style, "display:none;"),
Expand Down
Loading