diff --git a/api/gwtsrc/org/labkey/api/gwt/client/assay/model/GWTPropertyDescriptorMixin.java b/api/gwtsrc/org/labkey/api/gwt/client/assay/model/GWTPropertyDescriptorMixin.java
index fc45287c2b8..88642a23a37 100644
--- a/api/gwtsrc/org/labkey/api/gwt/client/assay/model/GWTPropertyDescriptorMixin.java
+++ b/api/gwtsrc/org/labkey/api/gwt/client/assay/model/GWTPropertyDescriptorMixin.java
@@ -38,10 +38,12 @@
})
public abstract class GWTPropertyDescriptorMixin
{
- GWTPropertyDescriptorMixin(@JsonProperty("PHI") StringProperty phi, @JsonProperty("URL") StringProperty url)
+ GWTPropertyDescriptorMixin(@JsonProperty("PHI") StringProperty phi, @JsonProperty("URL") StringProperty url, @JsonProperty("URLTarget") StringProperty URLTarget)
{ }
@JsonProperty("PHI")
abstract void setPHI(String phi); // rename property on deserialize
@JsonProperty("URL")
abstract void setURL(String url); // rename property on deserialize
+ @JsonProperty("URLTarget")
+ abstract void setURLTarget(String urlTarget); // rename property on deserialize
}
diff --git a/api/gwtsrc/org/labkey/api/gwt/client/model/GWTPropertyDescriptor.java b/api/gwtsrc/org/labkey/api/gwt/client/model/GWTPropertyDescriptor.java
index 61f37f8038d..303fd309ede 100644
--- a/api/gwtsrc/org/labkey/api/gwt/client/model/GWTPropertyDescriptor.java
+++ b/api/gwtsrc/org/labkey/api/gwt/client/model/GWTPropertyDescriptor.java
@@ -59,6 +59,7 @@ public class GWTPropertyDescriptor implements IsSerializable
private final BooleanProperty mvEnabled = new BooleanProperty(false);
private final StringProperty importAliases = new StringProperty();
private final StringProperty url = new StringProperty();
+ private final StringProperty urlTarget = new StringProperty();
private final BooleanProperty shownInInsertView = new BooleanProperty(true);
private final BooleanProperty shownInUpdateView = new BooleanProperty(true);
private final BooleanProperty shownInDetailsView = new BooleanProperty(true);
@@ -137,6 +138,7 @@ public GWTPropertyDescriptor(GWTPropertyDescriptor s, boolean isNew)
setDefaultDisplayValue(s.getDefaultDisplayValue());
setImportAliases(s.getImportAliases());
setURL(s.getURL());
+ setURLTarget(s.getURLTarget());
setFacetingBehaviorType(s.getFacetingBehaviorType());
setPHI(s.getPHI());
setExcludeFromShifting(s.isExcludeFromShifting());
@@ -662,6 +664,16 @@ public void setURL(String url)
this.url.set(url);
}
+ public String getURLTarget()
+ {
+ return urlTarget.toString();
+ }
+
+ public void setURLTarget(String urlTarget)
+ {
+ this.urlTarget.set(urlTarget);
+ }
+
public String getLookupDescription()
{
if (StringUtils.isEmpty(getLookupSchema()) || StringUtils.isEmpty(getLookupQuery()))
diff --git a/api/schemas/expTypes.xsd b/api/schemas/expTypes.xsd
index ef4ea5798ba..4ea60f56df6 100644
--- a/api/schemas/expTypes.xsd
+++ b/api/schemas/expTypes.xsd
@@ -529,6 +529,7 @@
+
A structure that describes a foreign key relationship between a column in the current table and a target column in another table.
diff --git a/api/src/org/labkey/api/data/AbstractWrappedColumnInfo.java b/api/src/org/labkey/api/data/AbstractWrappedColumnInfo.java
index 991bb009676..73165428e45 100644
--- a/api/src/org/labkey/api/data/AbstractWrappedColumnInfo.java
+++ b/api/src/org/labkey/api/data/AbstractWrappedColumnInfo.java
@@ -566,9 +566,9 @@ public StringExpression getURL()
}
@Override
- public String getURLTargetWindow()
+ public String getURLTarget()
{
- return delegate.getURLTargetWindow();
+ return delegate.getURLTarget();
}
@Override
diff --git a/api/src/org/labkey/api/data/BaseColumnInfo.java b/api/src/org/labkey/api/data/BaseColumnInfo.java
index f3c53e25d9c..ccd50829965 100644
--- a/api/src/org/labkey/api/data/BaseColumnInfo.java
+++ b/api/src/org/labkey/api/data/BaseColumnInfo.java
@@ -559,7 +559,7 @@ public void copyURLFrom(ColumnInfo col, @Nullable FieldKey parent, @Nullable Map
}
setURL(url);
}
- setURLTargetWindow(col.getURLTargetWindow());
+ setURLTarget(col.getURLTarget());
setURLCls(col.getURLCls());
setOnClick(col.getOnClick());
}
@@ -1166,7 +1166,7 @@ public void loadFromXml(ColumnType xmlCol, boolean merge)
if (xmlCol.isSetUrl())
setURL(StringExpressionFactory.fromXML(xmlCol.getUrl(), false));
if (xmlCol.isSetUrlTarget())
- setURLTargetWindow(xmlCol.getUrlTarget());
+ setURLTarget(xmlCol.getUrlTarget());
if (xmlCol.isSetIsAutoInc())
_isAutoIncrement = xmlCol.getIsAutoInc();
if (xmlCol.isSetHasDbSequence())
diff --git a/api/src/org/labkey/api/data/ColumnRenderProperties.java b/api/src/org/labkey/api/data/ColumnRenderProperties.java
index a282ddfa5bf..6d7c25dce97 100644
--- a/api/src/org/labkey/api/data/ColumnRenderProperties.java
+++ b/api/src/org/labkey/api/data/ColumnRenderProperties.java
@@ -84,7 +84,7 @@ public interface ColumnRenderProperties extends ImportAliasable
StringExpression getURL();
- String getURLTargetWindow();
+ String getURLTarget();
String getURLCls();
diff --git a/api/src/org/labkey/api/data/ColumnRenderPropertiesImpl.java b/api/src/org/labkey/api/data/ColumnRenderPropertiesImpl.java
index 25b989cf011..0fcd3129166 100644
--- a/api/src/org/labkey/api/data/ColumnRenderPropertiesImpl.java
+++ b/api/src/org/labkey/api/data/ColumnRenderPropertiesImpl.java
@@ -86,7 +86,7 @@ public abstract class ColumnRenderPropertiesImpl implements MutableColumnRenderP
protected boolean _shownInDetailsView = true;
protected boolean _shownInLookupView = false;
protected StringExpression _url;
- protected String _urlTargetWindow;
+ protected String _urlTarget;
protected String _urlCls;
protected String _onClick;
// methods use Set<>, but I'm using a List<> here because it is simpler and more thread safe and explicitly preserves order
@@ -157,6 +157,7 @@ public void copyTo(ColumnRenderPropertiesImpl to)
to._recommendedVariable = _recommendedVariable;
to._defaultScale = _defaultScale;
to._url = _url;
+ to._urlTarget = _urlTarget;
to._importAliases = copyFixedList(_importAliases);
to._facetingBehaviorType = _facetingBehaviorType;
to._crosstabColumnMember = _crosstabColumnMember;
@@ -422,16 +423,16 @@ public void setURL(StringExpression url)
}
@Override
- public String getURLTargetWindow()
+ public String getURLTarget()
{
- return _urlTargetWindow;
+ return _urlTarget;
}
@Override
- public void setURLTargetWindow(String urlTargetWindow)
+ public void setURLTarget(String urlTarget)
{
assert _checkLocked();
- _urlTargetWindow = urlTargetWindow;
+ _urlTarget = urlTarget;
}
@Override
diff --git a/api/src/org/labkey/api/data/DataColumn.java b/api/src/org/labkey/api/data/DataColumn.java
index ff2c8c20738..f8f6253c82b 100644
--- a/api/src/org/labkey/api/data/DataColumn.java
+++ b/api/src/org/labkey/api/data/DataColumn.java
@@ -116,7 +116,7 @@ public DataColumn(ColumnInfo col, boolean withLookups)
StringExpression url = withLookups ? _boundColumn.getEffectiveURL() : _boundColumn.getURL();
if (null != url)
super.setURLExpression(url);
- setLinkTarget(_boundColumn.getURLTargetWindow());
+ setLinkTarget(_boundColumn.getURLTarget());
setLinkCls(_boundColumn.getURLCls());
setOnClick(_boundColumn.getOnClick());
setFormatString(_displayColumn.getFormat());
diff --git a/api/src/org/labkey/api/data/MutableColumnRenderProperties.java b/api/src/org/labkey/api/data/MutableColumnRenderProperties.java
index bbb9a42a388..89b759f6fe9 100644
--- a/api/src/org/labkey/api/data/MutableColumnRenderProperties.java
+++ b/api/src/org/labkey/api/data/MutableColumnRenderProperties.java
@@ -46,7 +46,7 @@ public interface MutableColumnRenderProperties extends ColumnRenderProperties, M
void setURL(StringExpression url);
- void setURLTargetWindow(String urlTargetWindow);
+ void setURLTarget(String urlTarget);
void setURLCls(String urlCls);
diff --git a/api/src/org/labkey/api/data/WrappedColumnInfo.java b/api/src/org/labkey/api/data/WrappedColumnInfo.java
index 30ec4b3e260..d0bdf3fb40c 100644
--- a/api/src/org/labkey/api/data/WrappedColumnInfo.java
+++ b/api/src/org/labkey/api/data/WrappedColumnInfo.java
@@ -392,10 +392,17 @@ public StringExpression getURL()
}
@Override
- public void setURLTargetWindow(String urlTargetWindow)
+ public void setURLTarget(String urlTarget)
{
checkLocked();
- throw new UnsupportedOperationException();
+ delegate = new AbstractWrappedColumnInfo(delegate)
+ {
+ @Override
+ public String getURLTarget()
+ {
+ return urlTarget;
+ }
+ };
}
@Override
diff --git a/api/src/org/labkey/api/exp/ImportTypesHelper.java b/api/src/org/labkey/api/exp/ImportTypesHelper.java
index 450598e7095..f694a2f3a28 100644
--- a/api/src/org/labkey/api/exp/ImportTypesHelper.java
+++ b/api/src/org/labkey/api/exp/ImportTypesHelper.java
@@ -182,6 +182,7 @@ else if (columnXml.isSetKeyVariable())
builder.setInputType(columnXml.isSetInputType() ? columnXml.getInputType() : null);
builder.setHidden(columnXml.getIsHidden());
builder.setUrl(columnXml.getUrl());
+ builder.setUrlTarget(columnXml.getUrlTarget());
builder.setValidators(ValidatorKind.convertFromXML(columnXml.getValidators()));
builder.setConditionalFormats(ConditionalFormat.convertFromXML(columnXml.getConditionalFormats()));
@@ -303,6 +304,7 @@ public static class Builder implements org.labkey.api.data.Builder aliases);
void setURL(String url);
String getURL();
+ void setURLTarget(String urlTarget);
+ String getURLTarget();
DefaultValueType getDefaultValueTypeEnum();
void setDefaultValueTypeEnum(DefaultValueType defaultValueType);
diff --git a/api/src/org/labkey/api/exp/property/DomainUtil.java b/api/src/org/labkey/api/exp/property/DomainUtil.java
index 5d929ddbbd2..af2309f42c8 100644
--- a/api/src/org/labkey/api/exp/property/DomainUtil.java
+++ b/api/src/org/labkey/api/exp/property/DomainUtil.java
@@ -524,6 +524,7 @@ public static GWTPropertyDescriptor getPropertyDescriptor(PropertyDescriptor pro
gwtProp.setImportAliases(prop.getImportAliases());
StringExpression url = prop.getURL();
gwtProp.setURL(url == null ? null : url.toString());
+ gwtProp.setURLTarget(prop.getURLTarget());
gwtProp.setScale(prop.getScale());
gwtProp.setRedactedText(prop.getRedactedText());
gwtProp.setPrincipalConceptCode(prop.getPrincipalConceptCode());
@@ -616,6 +617,8 @@ public static GWTPropertyDescriptor getPropertyDescriptor(ColumnType columnXml)
// TODO: Include null value behavior
if (columnXml.isSetUrl())
gwtProp.setURL(columnXml.getUrl().getStringValue());
+ if (columnXml.isSetUrlTarget())
+ gwtProp.setURLTarget(columnXml.getUrlTarget());
if (columnXml.isSetShownInInsertView())
gwtProp.setShownInInsertView(columnXml.getShownInInsertView());
if (columnXml.isSetShownInUpdateView())
diff --git a/api/src/org/labkey/api/query/MetadataColumnJSON.java b/api/src/org/labkey/api/query/MetadataColumnJSON.java
index 67b3080957c..6590390c35a 100644
--- a/api/src/org/labkey/api/query/MetadataColumnJSON.java
+++ b/api/src/org/labkey/api/query/MetadataColumnJSON.java
@@ -138,6 +138,8 @@ public Map getAuditRecordMap()
map.put("Format", getFormat());
if (!StringUtils.isEmpty(getURL()))
map.put("URL", getURL());
+ if (!StringUtils.isEmpty(getURLTarget()))
+ map.put("URLTarget", getURLTarget());
if (!StringUtils.isEmpty(getPHI()))
map.put("PHI", getPHI());
if (!StringUtils.isEmpty(getDefaultScale()))
diff --git a/assay/package-lock.json b/assay/package-lock.json
index 43c863f9952..c65d43d51b7 100644
--- a/assay/package-lock.json
+++ b/assay/package-lock.json
@@ -8,7 +8,7 @@
"name": "assay",
"version": "0.0.0",
"dependencies": {
- "@labkey/components": "7.3.2"
+ "@labkey/components": "7.7.3-fb-urlTargetWindow503.0"
},
"devDependencies": {
"@labkey/build": "8.7.0",
@@ -2525,9 +2525,9 @@
}
},
"node_modules/@labkey/components": {
- "version": "7.3.2",
- "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-7.3.2.tgz",
- "integrity": "sha512-wlzgvqR/JDxsoBkmbSNKG9040h0EiYdAl9J+NayOF9KKR2SGsrzs/VDE3XNjZVFURxfa2qxrkn05VSPwVXNk4A==",
+ "version": "7.7.3-fb-urlTargetWindow503.0",
+ "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-7.7.3-fb-urlTargetWindow503.0.tgz",
+ "integrity": "sha512-0c/KKeP3uw9yL2X8DP8AjXtLa19jBiZBbviyIiqJoc+6ImrRBgcSv1Q1RhJjPoycr0PdHxhuJfnTkRkH5KwL6Q==",
"license": "SEE LICENSE IN LICENSE.txt",
"dependencies": {
"@hello-pangea/dnd": "18.0.1",
diff --git a/assay/package.json b/assay/package.json
index 4eccd41c80f..f93b302a710 100644
--- a/assay/package.json
+++ b/assay/package.json
@@ -12,7 +12,7 @@
"clean": "rimraf resources/web/assay/gen && rimraf resources/views/gen && rimraf resources/web/gen"
},
"dependencies": {
- "@labkey/components": "7.3.2"
+ "@labkey/components": "7.7.3-fb-urlTargetWindow503.0"
},
"devDependencies": {
"@labkey/build": "8.7.0",
diff --git a/core/package-lock.json b/core/package-lock.json
index deeafe7a952..e2168a81d27 100644
--- a/core/package-lock.json
+++ b/core/package-lock.json
@@ -8,7 +8,7 @@
"name": "labkey-core",
"version": "0.0.0",
"dependencies": {
- "@labkey/components": "7.3.2",
+ "@labkey/components": "7.7.3-fb-urlTargetWindow503.0",
"@labkey/themes": "1.5.0"
},
"devDependencies": {
@@ -3547,9 +3547,9 @@
}
},
"node_modules/@labkey/components": {
- "version": "7.3.2",
- "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-7.3.2.tgz",
- "integrity": "sha512-wlzgvqR/JDxsoBkmbSNKG9040h0EiYdAl9J+NayOF9KKR2SGsrzs/VDE3XNjZVFURxfa2qxrkn05VSPwVXNk4A==",
+ "version": "7.7.3-fb-urlTargetWindow503.0",
+ "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-7.7.3-fb-urlTargetWindow503.0.tgz",
+ "integrity": "sha512-0c/KKeP3uw9yL2X8DP8AjXtLa19jBiZBbviyIiqJoc+6ImrRBgcSv1Q1RhJjPoycr0PdHxhuJfnTkRkH5KwL6Q==",
"license": "SEE LICENSE IN LICENSE.txt",
"dependencies": {
"@hello-pangea/dnd": "18.0.1",
diff --git a/core/package.json b/core/package.json
index 935ce60ee32..19a562851ab 100644
--- a/core/package.json
+++ b/core/package.json
@@ -53,7 +53,7 @@
}
},
"dependencies": {
- "@labkey/components": "7.3.2",
+ "@labkey/components": "7.7.3-fb-urlTargetWindow503.0",
"@labkey/themes": "1.5.0"
},
"devDependencies": {
diff --git a/core/src/org/labkey/core/query/ModulesTableInfo.java b/core/src/org/labkey/core/query/ModulesTableInfo.java
index 135c53a060a..4ac0e57b83b 100644
--- a/core/src/org/labkey/core/query/ModulesTableInfo.java
+++ b/core/src/org/labkey/core/query/ModulesTableInfo.java
@@ -79,7 +79,7 @@ public void addColumns()
var nameCol = addWrapColumn(getRealTable().getColumn("Name"));
nameCol.setKeyField(true);
nameCol.setURL(new StringExpressionFactory.URLStringExpression("${URL}"));
- nameCol.setURLTargetWindow("_blank");
+ nameCol.setURLTarget("_blank");
addTextColumn("ReleaseVersion").setScale(255);
var schemaVersionColumn = addWrapColumn(getRealTable().getColumn("SchemaVersion"));
@@ -88,19 +88,19 @@ public void addColumns()
addTextColumn("Label").setScale(255);
addTextColumn("Description").setScale(4000);
- addTextColumn("URL").setURLTargetWindow("_blank");
+ addTextColumn("URL").setURLTarget("_blank");
addTextColumn("Author");
addTextColumn("Maintainer");
addColumn("ManageVersion", JdbcType.BOOLEAN);
var orgCol = addTextColumn("Organization");
orgCol.setURL(StringExpressionFactory.createURL("${OrganizationURL}"));
- orgCol.setURLTargetWindow("_blank");
+ orgCol.setURLTarget("_blank");
addTextColumn("OrganizationURL").setHidden(true);
var licenseCol = addTextColumn("License");
licenseCol.setURL(StringExpressionFactory.createURL("${LicenseURL}"));
- licenseCol.setURLTargetWindow("_blank");
+ licenseCol.setURLTarget("_blank");
addTextColumn("ActiveFolders").setDisplayColumnFactory(new ExpandableTextDisplayColumnFactory());
addTextColumn("LicenseURL").setHidden(true);
addTextColumn("VcsRevision");
diff --git a/experiment/package-lock.json b/experiment/package-lock.json
index 1f30507f173..bbd567dff18 100644
--- a/experiment/package-lock.json
+++ b/experiment/package-lock.json
@@ -8,7 +8,7 @@
"name": "experiment",
"version": "0.0.0",
"dependencies": {
- "@labkey/components": "7.3.2"
+ "@labkey/components": "7.7.3-fb-urlTargetWindow503.0"
},
"devDependencies": {
"@labkey/build": "8.7.0",
@@ -3314,9 +3314,9 @@
}
},
"node_modules/@labkey/components": {
- "version": "7.3.2",
- "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-7.3.2.tgz",
- "integrity": "sha512-wlzgvqR/JDxsoBkmbSNKG9040h0EiYdAl9J+NayOF9KKR2SGsrzs/VDE3XNjZVFURxfa2qxrkn05VSPwVXNk4A==",
+ "version": "7.7.3-fb-urlTargetWindow503.0",
+ "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-7.7.3-fb-urlTargetWindow503.0.tgz",
+ "integrity": "sha512-0c/KKeP3uw9yL2X8DP8AjXtLa19jBiZBbviyIiqJoc+6ImrRBgcSv1Q1RhJjPoycr0PdHxhuJfnTkRkH5KwL6Q==",
"license": "SEE LICENSE IN LICENSE.txt",
"dependencies": {
"@hello-pangea/dnd": "18.0.1",
diff --git a/experiment/package.json b/experiment/package.json
index 63d1e1ec4e4..f0a0c15769a 100644
--- a/experiment/package.json
+++ b/experiment/package.json
@@ -13,7 +13,7 @@
"test-integration": "cross-env NODE_ENV=test jest --ci --runInBand -c test/js/jest.config.integration.js"
},
"dependencies": {
- "@labkey/components": "7.3.2"
+ "@labkey/components": "7.7.3-fb-urlTargetWindow503.0"
},
"devDependencies": {
"@labkey/build": "8.7.0",
diff --git a/experiment/resources/schemas/dbscripts/postgresql/exp-26.000-26.001.sql b/experiment/resources/schemas/dbscripts/postgresql/exp-26.000-26.001.sql
new file mode 100644
index 00000000000..0085f4bdfde
--- /dev/null
+++ b/experiment/resources/schemas/dbscripts/postgresql/exp-26.000-26.001.sql
@@ -0,0 +1 @@
+ALTER TABLE exp.PropertyDescriptor ADD COLUMN URLTarget VARCHAR(10) NULL;
\ No newline at end of file
diff --git a/experiment/resources/schemas/dbscripts/sqlserver/exp-26.000-26.001.sql b/experiment/resources/schemas/dbscripts/sqlserver/exp-26.000-26.001.sql
new file mode 100644
index 00000000000..f30b214d5e5
--- /dev/null
+++ b/experiment/resources/schemas/dbscripts/sqlserver/exp-26.000-26.001.sql
@@ -0,0 +1 @@
+ALTER TABLE exp.PropertyDescriptor ADD URLTarget NVARCHAR(10) NULL;
\ No newline at end of file
diff --git a/experiment/resources/schemas/exp.xml b/experiment/resources/schemas/exp.xml
index 959a40c6c0a..fde31761992 100644
--- a/experiment/resources/schemas/exp.xml
+++ b/experiment/resources/schemas/exp.xml
@@ -524,6 +524,7 @@
+
diff --git a/experiment/src/org/labkey/experiment/ExperimentModule.java b/experiment/src/org/labkey/experiment/ExperimentModule.java
index ddd97d0f18b..ab459df94f7 100644
--- a/experiment/src/org/labkey/experiment/ExperimentModule.java
+++ b/experiment/src/org/labkey/experiment/ExperimentModule.java
@@ -202,7 +202,7 @@ public String getName()
@Override
public Double getSchemaVersion()
{
- return 26.000;
+ return 26.001;
}
@Nullable
diff --git a/experiment/src/org/labkey/experiment/XarExporter.java b/experiment/src/org/labkey/experiment/XarExporter.java
index 1961b6016b8..f3a658db3cd 100644
--- a/experiment/src/org/labkey/experiment/XarExporter.java
+++ b/experiment/src/org/labkey/experiment/XarExporter.java
@@ -842,6 +842,10 @@ private void addPropertyDescriptor(DomainDescriptorType xDomain, DomainProperty
{
xProp.setURL(prop.getURL().toString());
}
+ if (prop.getURLTarget() != null)
+ {
+ xProp.setURLTarget(prop.getURLTarget());
+ }
if (!prop.getImportAliasSet().isEmpty())
{
PropertyDescriptorType.ImportAliases xImportAliases = xProp.addNewImportAliases();
diff --git a/experiment/src/org/labkey/experiment/api/ExpDataClassDataTableImpl.java b/experiment/src/org/labkey/experiment/api/ExpDataClassDataTableImpl.java
index cc96470d824..f4178e1dbca 100644
--- a/experiment/src/org/labkey/experiment/api/ExpDataClassDataTableImpl.java
+++ b/experiment/src/org/labkey/experiment/api/ExpDataClassDataTableImpl.java
@@ -536,11 +536,11 @@ private void configureAttachmentURL(MutableColumnInfo col)
if (FileLinkDisplayColumn.AS_ATTACHMENT_FORMAT.equalsIgnoreCase(col.getFormat()))
{
url.addParameter("inline", "false");
- col.setURLTargetWindow(null);
+ col.setURLTarget(null);
}
else
{
- col.setURLTargetWindow("_blank");
+ col.setURLTarget("_blank");
}
col.setURL(StringExpressionFactory.createURL(url));
}
diff --git a/experiment/src/org/labkey/experiment/api/property/DomainPropertyImpl.java b/experiment/src/org/labkey/experiment/api/property/DomainPropertyImpl.java
index 0c0a088aa0c..2b10c8c8718 100644
--- a/experiment/src/org/labkey/experiment/api/property/DomainPropertyImpl.java
+++ b/experiment/src/org/labkey/experiment/api/property/DomainPropertyImpl.java
@@ -499,6 +499,20 @@ public String getURL()
return _pd.getURL() == null ? null : _pd.getURL().toString();
}
+ @Override
+ public void setURLTarget(String urlTarget)
+ {
+ if (Strings.CS.equals(getURLTarget(), urlTarget))
+ return;
+ edit().setURLTarget(urlTarget);
+ }
+
+ @Override
+ public String getURLTarget()
+ {
+ return _pd.getURLTarget();
+ }
+
private boolean isEdited()
{
return null != _pdOld;
@@ -1039,6 +1053,7 @@ public void copyFrom(DomainProperty propSrc, Container targetContainer)
setImportAliasSet(propSrc.getImportAliasSet());
setPhi(propSrc.getPHI());
setURL(propSrc.getURL());
+ setURLTarget(propSrc.getURLTarget());
setHidden(propSrc.isHidden());
setShownInDetailsView(propSrc.isShownInDetailsView());
setShownInInsertView(propSrc.isShownInInsertView());
@@ -1171,6 +1186,8 @@ public Map getAuditRecordMap(@Nullable String validatorStr, @Nul
map.put("Format", getFormat());
if (!StringUtils.isEmpty(getURL()))
map.put("URL", getURL());
+ if (!StringUtils.isEmpty(getURLTarget()))
+ map.put("URLTarget", getURLTarget());
if (getPHI() != null)
map.put("PHI", getPHI().getLabel());
if (getDefaultScale() != null)
@@ -1337,6 +1354,7 @@ private PropertyDescriptor getPropertyDescriptor(Container c, String domainURI)
pd.setContainer(c);
pd.setDescription("description");
pd.setURL(StringExpressionFactory.createURL((String)null));
+ pd.setURLTarget(null);
pd.setImportAliases(null);
pd.setRequired(false);
pd.setHidden(false);
diff --git a/experiment/src/org/labkey/experiment/api/property/PropertyServiceImpl.java b/experiment/src/org/labkey/experiment/api/property/PropertyServiceImpl.java
index 545600dcee5..ffc075e4375 100644
--- a/experiment/src/org/labkey/experiment/api/property/PropertyServiceImpl.java
+++ b/experiment/src/org/labkey/experiment/api/property/PropertyServiceImpl.java
@@ -497,6 +497,7 @@ private static void loadPropertyDescriptor(Domain domain, XarContext context, Pr
}
prop.setURL(xProp.getURL());
+ prop.setURLTarget(xProp.getURLTarget());
Set importAliases = new LinkedHashSet<>();
if (xProp.isSetImportAliases())
{
diff --git a/list/src/org/labkey/list/model/ListTable.java b/list/src/org/labkey/list/model/ListTable.java
index 82694915f40..46b8a23ce59 100644
--- a/list/src/org/labkey/list/model/ListTable.java
+++ b/list/src/org/labkey/list/model/ListTable.java
@@ -371,11 +371,11 @@ private void configureAttachmentURL(MutableColumnInfo col)
if (FileLinkDisplayColumn.AS_ATTACHMENT_FORMAT.equalsIgnoreCase(col.getFormat()))
{
url.addParameter("inline", "false");
- col.setURLTargetWindow(null);
+ col.setURLTarget(null);
}
else
{
- col.setURLTargetWindow("_blank");
+ col.setURLTarget("_blank");
}
col.setURL(StringExpressionFactory.createURL(url));
}
diff --git a/pipeline/package-lock.json b/pipeline/package-lock.json
index 92eaed8c830..3dad7b2d229 100644
--- a/pipeline/package-lock.json
+++ b/pipeline/package-lock.json
@@ -8,7 +8,7 @@
"name": "pipeline",
"version": "0.0.0",
"dependencies": {
- "@labkey/components": "7.3.2"
+ "@labkey/components": "7.7.3-fb-urlTargetWindow503.0"
},
"devDependencies": {
"@labkey/build": "8.7.0",
@@ -2759,9 +2759,9 @@
}
},
"node_modules/@labkey/components": {
- "version": "7.3.2",
- "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-7.3.2.tgz",
- "integrity": "sha512-wlzgvqR/JDxsoBkmbSNKG9040h0EiYdAl9J+NayOF9KKR2SGsrzs/VDE3XNjZVFURxfa2qxrkn05VSPwVXNk4A==",
+ "version": "7.7.3-fb-urlTargetWindow503.0",
+ "resolved": "https://labkey.jfrog.io/artifactory/api/npm/libs-client/@labkey/components/-/@labkey/components-7.7.3-fb-urlTargetWindow503.0.tgz",
+ "integrity": "sha512-0c/KKeP3uw9yL2X8DP8AjXtLa19jBiZBbviyIiqJoc+6ImrRBgcSv1Q1RhJjPoycr0PdHxhuJfnTkRkH5KwL6Q==",
"license": "SEE LICENSE IN LICENSE.txt",
"dependencies": {
"@hello-pangea/dnd": "18.0.1",
diff --git a/pipeline/package.json b/pipeline/package.json
index 3d3c40486a1..f502742f0b1 100644
--- a/pipeline/package.json
+++ b/pipeline/package.json
@@ -14,7 +14,7 @@
"build-prod": "npm run clean && cross-env NODE_ENV=production PROD_SOURCE_MAP=source-map webpack --config node_modules/@labkey/build/webpack/prod.config.js --color --progress --profile"
},
"dependencies": {
- "@labkey/components": "7.3.2"
+ "@labkey/components": "7.7.3-fb-urlTargetWindow503.0"
},
"devDependencies": {
"@labkey/build": "8.7.0",
diff --git a/query/src/org/labkey/query/MetadataTableJSON.java b/query/src/org/labkey/query/MetadataTableJSON.java
index a361b2b5caa..934c621caa6 100644
--- a/query/src/org/labkey/query/MetadataTableJSON.java
+++ b/query/src/org/labkey/query/MetadataTableJSON.java
@@ -411,6 +411,16 @@ else if (xmlColumn.isSetUrl())
xmlColumn.unsetUrl();
}
+ // Set the URL Target
+ if (shouldStoreValue(metadataColumnJSON.getURLTarget(), rawColumnInfo.getURLTarget()))
+ {
+ xmlColumn.setUrlTarget(metadataColumnJSON.getURLTarget());
+ }
+ else if (xmlColumn.isSetUrlTarget())
+ {
+ xmlColumn.unsetUrlTarget();
+ }
+
// Set the ImportAliases
Set importAliasSet = rawColumnInfo.getImportAliasSet();
if (metadataColumnJSON.getImportAliases() != null)