Cite.CSL.register.addTemplate("#{requestedCSL}",
"#{CSLUtil:getCitationFormat((requestedCSL == '') ? 'apa' : requestedCSL)}");
-
+
document.getElementById('datasetForm:cslOutput').innerHTML = cite.format("bibliography", {
format: "html",
template: "#{requestedCSL}",
From b6383e5881235c4876d6271dc71f9b22c89d2306 Mon Sep 17 00:00:00 2001
From: Steven Winship <39765413+stevenwinship@users.noreply.github.com>
Date: Wed, 17 Dec 2025 14:36:07 -0500
Subject: [PATCH 2/9] release note
---
.../359-enhance-publishing-message-acknowledgement.md | 6 ++++++
1 file changed, 6 insertions(+)
create mode 100644 doc/release-notes/359-enhance-publishing-message-acknowledgement.md
diff --git a/doc/release-notes/359-enhance-publishing-message-acknowledgement.md b/doc/release-notes/359-enhance-publishing-message-acknowledgement.md
new file mode 100644
index 00000000000..f7d9c26a9dc
--- /dev/null
+++ b/doc/release-notes/359-enhance-publishing-message-acknowledgement.md
@@ -0,0 +1,6 @@
+## Publishing Enhancement ##
+
+Before a Dataset can be published the user must acknowledge acceptance of the legal disclaimer.
+
+The UI will prevent the user from publishing a Dataset unless the legal disclaimer is acknowledged.
+The Publish API will ?TBD?
From 2885cc3090214d30195b1504ca4ee58d36893ef9 Mon Sep 17 00:00:00 2001
From: Steven Winship <39765413+stevenwinship@users.noreply.github.com>
Date: Mon, 5 Jan 2026 13:48:38 -0500
Subject: [PATCH 3/9] add ack to api
---
.../harvard/iq/dataverse/api/Datasets.java | 24 +++++++---
.../settings/SettingsServiceBean.java | 4 ++
.../harvard/iq/dataverse/api/DatasetsIT.java | 48 +++++++++++++++++++
.../edu/harvard/iq/dataverse/api/UtilIT.java | 8 +++-
4 files changed, 77 insertions(+), 7 deletions(-)
diff --git a/src/main/java/edu/harvard/iq/dataverse/api/Datasets.java b/src/main/java/edu/harvard/iq/dataverse/api/Datasets.java
index 2378388c540..b37d1cbe712 100644
--- a/src/main/java/edu/harvard/iq/dataverse/api/Datasets.java
+++ b/src/main/java/edu/harvard/iq/dataverse/api/Datasets.java
@@ -1189,13 +1189,16 @@ public Response editVersionTermsOfAccess(@Context ContainerRequestContext crc, S
@Deprecated
public Response publishDataseUsingGetDeprecated(@Context ContainerRequestContext crc, @PathParam("id") String id, @QueryParam("type") String type ) {
logger.info("publishDataseUsingGetDeprecated called on id " + id + ". Encourage use of POST rather than GET, which is deprecated.");
- return publishDataset(crc, id, type, false);
+ return publishDataset(crc, id, type, false, false);
}
@POST
@AuthRequired
@Path("{id}/actions/:publish")
- public Response publishDataset(@Context ContainerRequestContext crc, @PathParam("id") String id, @QueryParam("type") String type, @QueryParam("assureIsIndexed") boolean mustBeIndexed) {
+ public Response publishDataset(@Context ContainerRequestContext crc, @PathParam("id") String id,
+ @QueryParam("type") String type,
+ @QueryParam("assureIsIndexed") boolean mustBeIndexed,
+ @QueryParam("legalDisclaimerAcknowledged") boolean legalDisclaimerAcknowledged) {
try {
if (type == null) {
return error(Response.Status.BAD_REQUEST, "Missing 'type' parameter (either 'major','minor', or 'updatecurrent').");
@@ -1309,15 +1312,24 @@ public Response publishDataset(@Context ContainerRequestContext crc, @PathParam(
.build();
}
} else {
- PublishDatasetResult res = execCommand(new PublishDatasetCommand(ds,
- createDataverseRequest(user),
- isMinor));
- return res.isWorkflow() ? accepted(json(res.getDataset())) : ok(json(res.getDataset()));
+ if (isLegalDisclaimerAcknowledged(user, legalDisclaimerAcknowledged)) {
+ PublishDatasetResult res = execCommand(new PublishDatasetCommand(ds,
+ createDataverseRequest(user),
+ isMinor));
+ return res.isWorkflow() ? accepted(json(res.getDataset())) : ok(json(res.getDataset()));
+ } else {
+ return error(Status.PRECONDITION_FAILED, "Legal Disclaimer not Acknowledged"); // 412
+ }
}
} catch (WrappedResponse ex) {
return ex.getResponse();
}
}
+ private boolean isLegalDisclaimerAcknowledged(AuthenticatedUser user, boolean legalDisclaimerAcknowledged) {
+ return (user.isSuperuser()
+ || !("true".equalsIgnoreCase(settingsService.getValueForKey(SettingsServiceBean.Key.DatasetPublishLegalDisclaimerAcknowledgementRequired)))
+ || legalDisclaimerAcknowledged);
+ }
@POST
@AuthRequired
diff --git a/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java
index 37d26995017..c032e4caa85 100644
--- a/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java
+++ b/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java
@@ -326,6 +326,10 @@ Size limit (in bytes) for tabular file ingest. Accepts either a single numeri
*/
DatasetPublishPopupCustomTextOnAllVersions,
/*
+ Whether a Legal Disclaimer must be acknowledged before a Dataset can be published
+ */
+ DatasetPublishLegalDisclaimerAcknowledgementRequired,
+ /*
Whether Harvesting (OAI) service is enabled
*/
OAIServerEnabled,
diff --git a/src/test/java/edu/harvard/iq/dataverse/api/DatasetsIT.java b/src/test/java/edu/harvard/iq/dataverse/api/DatasetsIT.java
index dc4f47a62ae..909d74a9f6e 100644
--- a/src/test/java/edu/harvard/iq/dataverse/api/DatasetsIT.java
+++ b/src/test/java/edu/harvard/iq/dataverse/api/DatasetsIT.java
@@ -118,6 +118,7 @@ public static void afterClass() {
.statusCode(200);
UtilIT.deleteSetting(SettingsServiceBean.Key.MaxEmbargoDurationInMonths);
+ UtilIT.deleteSetting(SettingsServiceBean.Key.DatasetPublishLegalDisclaimerAcknowledgementRequired);
/* See above
Response removeDcmUrl = UtilIT.deleteSetting(SettingsServiceBean.Key.DataCaptureModuleUrl);
@@ -7375,6 +7376,53 @@ public void testUpdateLicense() {
.statusCode(UNAUTHORIZED.getStatusCode());
}
+ @Test
+ public void testDatasetPublishLegalDisclaimerAcknowledgementRequired() {
+ // Test setup: Create a user and a published dataverse to host the datasets.
+ Response createUser = UtilIT.createRandomUser();
+ String apiToken = UtilIT.getApiTokenFromResponse(createUser);
+ String adminApiToken = getSuperuserToken();
+ Response createDataverseResponse = UtilIT.createRandomDataverse(apiToken);
+ String ownerAlias = UtilIT.getAliasFromResponse(createDataverseResponse);
+ UtilIT.publishDataverseViaNativeApi(ownerAlias, apiToken);
+
+ // Test setup: Create datasets within the new dataverse.
+ Response createDatasetResponse = UtilIT.createRandomDatasetViaNativeApi(ownerAlias, apiToken);
+ String datasetPersistentId1 = UtilIT.getDatasetPersistentIdFromResponse(createDatasetResponse);
+ createDatasetResponse = UtilIT.createRandomDatasetViaNativeApi(ownerAlias, apiToken);
+ String datasetPersistentId2 = UtilIT.getDatasetPersistentIdFromResponse(createDatasetResponse);
+ createDatasetResponse = UtilIT.createRandomDatasetViaNativeApi(ownerAlias, apiToken);
+ String datasetPersistentId3 = UtilIT.getDatasetPersistentIdFromResponse(createDatasetResponse);
+ createDatasetResponse = UtilIT.createRandomDatasetViaNativeApi(ownerAlias, apiToken);
+ String datasetPersistentId4 = UtilIT.getDatasetPersistentIdFromResponse(createDatasetResponse);
+
+ // Require the acknowledgement
+ UtilIT.setSetting(SettingsServiceBean.Key.DatasetPublishLegalDisclaimerAcknowledgementRequired, "true");
+ Response publishDataset1 = UtilIT.publishDatasetViaNativeApi(datasetPersistentId1, "major", apiToken);
+ Response publishDataset2 = UtilIT.publishDatasetViaNativeApi(datasetPersistentId2, "major", apiToken, false, "&legalDisclaimerAcknowledged=true");
+ Response publishDataset3 = UtilIT.publishDatasetViaNativeApi(datasetPersistentId3, "major", adminApiToken);
+
+ // Acknowledgement not required
+ UtilIT.setSetting(SettingsServiceBean.Key.DatasetPublishLegalDisclaimerAcknowledgementRequired, "false");
+ Response publishDataset4 = UtilIT.publishDatasetViaNativeApi(datasetPersistentId4, "major", apiToken, false, "&legalDisclaimerAcknowledged=false");
+
+ // verify that the first publish failed since the acknowledgement was missing
+ publishDataset1.then().assertThat()
+ .statusCode(PRECONDITION_FAILED.getStatusCode())
+ .body("message", equalTo("Legal Disclaimer not Acknowledged"));
+ // verify that the second publish passed since the acknowledgement was true
+ publishDataset2.then().assertThat()
+ .statusCode(OK.getStatusCode());
+ // verify that the third publish passed without acknowledgement since the user was a superuser
+ publishDataset3.then().assertThat()
+ .statusCode(OK.getStatusCode());
+ // verify that the forth publish passes with legalDisclaimerAcknowledged=false since the acknowledgement isn't required
+ publishDataset4.then().assertThat()
+ .statusCode(OK.getStatusCode());
+
+ UtilIT.deleteSetting(SettingsServiceBean.Key.DatasetPublishLegalDisclaimerAcknowledgementRequired);
+ }
+
private String getSuperuserToken() {
Response createResponse = UtilIT.createRandomUser();
String adminApiToken = UtilIT.getApiTokenFromResponse(createResponse);
diff --git a/src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java b/src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java
index f09b33a0b5b..5a0ce5201ed 100644
--- a/src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java
+++ b/src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java
@@ -1614,8 +1614,11 @@ static Response publishDatasetViaSword(String persistentId, String apiToken) {
static Response publishDatasetViaNativeApi(String idOrPersistentId, String majorOrMinor, String apiToken) {
return publishDatasetViaNativeApi(idOrPersistentId, majorOrMinor, apiToken, false);
}
-
static Response publishDatasetViaNativeApi(String idOrPersistentId, String majorOrMinor, String apiToken, boolean mustBeIndexed) {
+ return publishDatasetViaNativeApi(idOrPersistentId, majorOrMinor, apiToken, mustBeIndexed, null);
+ }
+
+ static Response publishDatasetViaNativeApi(String idOrPersistentId, String majorOrMinor, String apiToken, boolean mustBeIndexed, String params) {
String idInPath = idOrPersistentId; // Assume it's a number.
String optionalQueryParam = ""; // If idOrPersistentId is a number we'll just put it in the path.
@@ -1626,6 +1629,9 @@ static Response publishDatasetViaNativeApi(String idOrPersistentId, String major
if(mustBeIndexed) {
optionalQueryParam = optionalQueryParam+"&assureIsIndexed=true";
}
+ if (params != null) {
+ optionalQueryParam = optionalQueryParam+params;
+ }
RequestSpecification requestSpecification = given();
if (apiToken != null) {
requestSpecification = given()
From 0ca367d0e1f2fd621f8a3471cf3a9805d60e6bb0 Mon Sep 17 00:00:00 2001
From: Steven Winship <39765413+stevenwinship@users.noreply.github.com>
Date: Mon, 5 Jan 2026 15:49:23 -0500
Subject: [PATCH 4/9] move json code to json printer
---
...-enhance-publishing-message-acknowledgement.md | 8 ++++++--
.../iq/dataverse/util/json/JsonPrinter.java | 8 ++++++++
.../edu/harvard/iq/dataverse/api/DatasetsIT.java | 15 +++++++++++++++
3 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/doc/release-notes/359-enhance-publishing-message-acknowledgement.md b/doc/release-notes/359-enhance-publishing-message-acknowledgement.md
index f7d9c26a9dc..9e6384f9b17 100644
--- a/doc/release-notes/359-enhance-publishing-message-acknowledgement.md
+++ b/doc/release-notes/359-enhance-publishing-message-acknowledgement.md
@@ -1,6 +1,10 @@
## Publishing Enhancement ##
-Before a Dataset can be published the user must acknowledge acceptance of the legal disclaimer.
+Before a Dataset can be published the user must acknowledge acceptance of the legal disclaimer if it is required.
+
+The setting "DatasetPublishLegalDisclaimerAcknowledgementRequired", when set to `true`, will prevent a draft dataset from being published without the user acknowledging the legal disclaimer.
+
+APIs: If the setting is set to true and the dataset version is in draft the GET Dataset and GET Dataset Version APIs will include the legal disclaimer text in the Json response. The publish Dataset API will require a query parameter `legalDisclaimerAcknowledged=true` to publish this Dataset.
The UI will prevent the user from publishing a Dataset unless the legal disclaimer is acknowledged.
-The Publish API will ?TBD?
+
diff --git a/src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java b/src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java
index 27b7a122c93..ff5286d873f 100644
--- a/src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java
+++ b/src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java
@@ -478,6 +478,7 @@ public static JsonObjectBuilder json(Dataset ds, Boolean returnOwners) {
.add("publicationDate", ds.getPublicationDateFormattedYYYYMMDD())
.add("storageIdentifier", ds.getStorageIdentifier());
addDatasetFileCountLimit(ds, bld);
+ includePublishLegalDisclaimer(bld, ds.getLatestVersion());
if (DvObjectContainer.isMetadataLanguageSet(ds.getMetadataLanguage())) {
bld.add("metadataLanguage", ds.getMetadataLanguage());
@@ -571,6 +572,7 @@ public static JsonObjectBuilder json(DatasetVersion dsv, List anonymized
.add("sizeOfCollection", dsv.getTermsOfUseAndAccess().getSizeOfCollection())
.add("studyCompletion", dsv.getTermsOfUseAndAccess().getStudyCompletion())
.add("fileAccessRequest", dsv.getTermsOfUseAndAccess().isFileAccessRequest());
+ includePublishLegalDisclaimer(bld, dsv);
if(includeMetadataBlocks) {
bld.add("metadataBlocks",
jsonByBlocks(dsv.getDatasetFields(), anonymizedFieldTypeNamesList, ignoreSettingExcludeEmailFromExport));
@@ -1784,4 +1786,10 @@ public static JsonArrayBuilder jsonFileVersionSummaries(List
Date: Thu, 8 Jan 2026 10:46:50 -0500
Subject: [PATCH 5/9] refactor to remove API publish blocking code
---
...ance-publishing-message-acknowledgement.md | 14 +++--
.../source/installation/config.rst | 9 +++
.../edu/harvard/iq/dataverse/DatasetPage.java | 13 ++--
.../harvard/iq/dataverse/SettingsWrapper.java | 17 ++++-
.../harvard/iq/dataverse/api/Datasets.java | 24 ++-----
.../settings/SettingsServiceBean.java | 4 +-
.../iq/dataverse/util/json/JsonPrinter.java | 9 ---
src/main/java/propertyFiles/Bundle.properties | 1 -
src/main/webapp/dataset.xhtml | 10 +--
.../harvard/iq/dataverse/api/DatasetsIT.java | 63 -------------------
10 files changed, 52 insertions(+), 112 deletions(-)
diff --git a/doc/release-notes/359-enhance-publishing-message-acknowledgement.md b/doc/release-notes/359-enhance-publishing-message-acknowledgement.md
index 9e6384f9b17..ae5b580aadb 100644
--- a/doc/release-notes/359-enhance-publishing-message-acknowledgement.md
+++ b/doc/release-notes/359-enhance-publishing-message-acknowledgement.md
@@ -1,10 +1,16 @@
## Publishing Enhancement ##
-Before a Dataset can be published the user must acknowledge acceptance of the legal disclaimer if it is required.
+Before a Dataset can be published the user must acknowledge acceptance of the disclaimer if it is required.
-The setting "DatasetPublishLegalDisclaimerAcknowledgementRequired", when set to `true`, will prevent a draft dataset from being published without the user acknowledging the legal disclaimer.
+The setting "PublishDatasetDisclaimer", when set, will prevent a draft dataset from being published without the user acknowledging the disclaimer.
+The approved disclaimer text is `"By publishing this dataset, I fully accept all legal responsibility for ensuring that the deposited content is: anonymized, free of copyright violations, and contains data that is computationally reusable. I understand and agree that any violation of these conditions may result in the immediate removal of the dataset by the repository without prior notice."`
-APIs: If the setting is set to true and the dataset version is in draft the GET Dataset and GET Dataset Version APIs will include the legal disclaimer text in the Json response. The publish Dataset API will require a query parameter `legalDisclaimerAcknowledged=true` to publish this Dataset.
+To enable/disable the acknowledgement requirement an Admin can set/delete the setting using the following APIs:
-The UI will prevent the user from publishing a Dataset unless the legal disclaimer is acknowledged.
+`curl -X PUT -d "By publishing this dataset, I fully accept all legal responsibility for ensuring that the deposited content is: anonymized, free of copyright violations, and contains data that is computationally reusable. I understand and agree that any violation of these conditions may result in the immediate removal of the dataset by the repository without prior notice." http://localhost:8080/api/admin/settings/:PublishDatasetDisclaimer`
+`curl -X DELETE http://localhost:8080/api/admin/settings/:PublishDatasetDisclaimer`
+
+The UI will prevent the user from publishing a Dataset unless the disclaimer is acknowledged.
+
+The APIs will continue to publish without the acknowledgement for now.
diff --git a/doc/sphinx-guides/source/installation/config.rst b/doc/sphinx-guides/source/installation/config.rst
index 10314aff195..fe34bf29994 100644
--- a/doc/sphinx-guides/source/installation/config.rst
+++ b/doc/sphinx-guides/source/installation/config.rst
@@ -5199,6 +5199,15 @@ This post-publish workflow is useful for actions such as sending notifications a
See :ref:`Workflow Admin section ` for more details and context.
+.. _:PublishDatasetDisclaimer:
+
+:PublishDatasetDisclaimer
++++++++++++++++++++++++++
+
+The text displayed to the user that must be acknowledged prior to publishing a Dataset. When not set the acknowledgment is not required nor displayed.
+
+``curl -X PUT -d "By publishing this dataset, I fully accept all legal responsibility for ensuring that the deposited content is: anonymized, free of copyright violations, and contains data that is computationally reusable. I understand and agree that any violation of these conditions may result in the immediate removal of the dataset by the repository without prior notice." http://localhost:8080/api/admin/settings/:PublishDatasetDisclaimer``
+
.. _:BagItHandlerEnabled:
:BagItHandlerEnabled
diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java
index 1533306b511..febe1dfe287 100644
--- a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java
+++ b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java
@@ -1,8 +1,5 @@
package edu.harvard.iq.dataverse;
-import edu.harvard.iq.dataverse.authorization.DataverseRole;
-import edu.harvard.iq.dataverse.engine.command.DataverseRequest;
-import edu.harvard.iq.dataverse.globus.Permissions;
import edu.harvard.iq.dataverse.provenance.ProvPopupFragmentBean;
import edu.harvard.iq.dataverse.api.AbstractApiBean;
import edu.harvard.iq.dataverse.authorization.AuthenticationServiceBean;
@@ -6251,7 +6248,7 @@ public void setFileMetadataForAction(FileMetadata fileMetadataForAction) {
private String termsOfAccess;
private boolean fileAccessRequest;
- private boolean legalDisclaimerAcknowledged;
+ private boolean publishDisclaimerAcknowledged;
public String getTermsOfAccess() {
return termsOfAccess;
@@ -6269,12 +6266,12 @@ public void setFileAccessRequest(boolean fileAccessRequest) {
this.fileAccessRequest = fileAccessRequest;
}
- public boolean isLegalDisclaimerAcknowledged() {
- return legalDisclaimerAcknowledged;
+ public boolean isPublishDisclaimerAcknowledged() {
+ return publishDisclaimerAcknowledged || !settingsWrapper.isHasPublishDatasetDisclaimer();
}
- public void setLegalDisclaimerAcknowledged(boolean legalDisclaimerAcknowledged) {
- this.legalDisclaimerAcknowledged = legalDisclaimerAcknowledged;
+ public void setPublishDisclaimerAcknowledged(boolean publishDisclaimerAcknowledged) {
+ this.publishDisclaimerAcknowledged = publishDisclaimerAcknowledged;
}
// wrapper method to see if the file has been deleted (or replaced) in the current version
diff --git a/src/main/java/edu/harvard/iq/dataverse/SettingsWrapper.java b/src/main/java/edu/harvard/iq/dataverse/SettingsWrapper.java
index 23a26a8cf2c..d16a36f2e3a 100644
--- a/src/main/java/edu/harvard/iq/dataverse/SettingsWrapper.java
+++ b/src/main/java/edu/harvard/iq/dataverse/SettingsWrapper.java
@@ -124,7 +124,9 @@ public class SettingsWrapper implements java.io.Serializable {
private Boolean webloaderUpload = null;
- private String metricsUrl = null;
+ private String metricsUrl = null;
+
+ private String publishDatasetDisclaimer = null;
private Boolean dataFilePIDSequentialDependent = null;
@@ -872,4 +874,15 @@ public List getSystemMetadataBlocks() {
return systemMetadataBlocks;
}
-}
\ No newline at end of file
+
+ public String getPublishDatasetDisclaimer() {
+ if (publishDatasetDisclaimer == null) {
+ publishDatasetDisclaimer = getValueForKey(Key.PublishDatasetDisclaimer);
+ }
+ return publishDatasetDisclaimer;
+ }
+
+ public Boolean isHasPublishDatasetDisclaimer() {
+ return !StringUtil.isEmpty(getPublishDatasetDisclaimer());
+ }
+}
diff --git a/src/main/java/edu/harvard/iq/dataverse/api/Datasets.java b/src/main/java/edu/harvard/iq/dataverse/api/Datasets.java
index cfddeac19be..c15efb4c651 100644
--- a/src/main/java/edu/harvard/iq/dataverse/api/Datasets.java
+++ b/src/main/java/edu/harvard/iq/dataverse/api/Datasets.java
@@ -1196,16 +1196,13 @@ public Response editVersionTermsOfAccess(@Context ContainerRequestContext crc, S
@Deprecated
public Response publishDataseUsingGetDeprecated(@Context ContainerRequestContext crc, @PathParam("id") String id, @QueryParam("type") String type ) {
logger.info("publishDataseUsingGetDeprecated called on id " + id + ". Encourage use of POST rather than GET, which is deprecated.");
- return publishDataset(crc, id, type, false, false);
+ return publishDataset(crc, id, type, false);
}
@POST
@AuthRequired
@Path("{id}/actions/:publish")
- public Response publishDataset(@Context ContainerRequestContext crc, @PathParam("id") String id,
- @QueryParam("type") String type,
- @QueryParam("assureIsIndexed") boolean mustBeIndexed,
- @QueryParam("legalDisclaimerAcknowledged") boolean legalDisclaimerAcknowledged) {
+ public Response publishDataset(@Context ContainerRequestContext crc, @PathParam("id") String id, @QueryParam("type") String type, @QueryParam("assureIsIndexed") boolean mustBeIndexed) {
try {
if (type == null) {
return error(Response.Status.BAD_REQUEST, "Missing 'type' parameter (either 'major','minor', or 'updatecurrent').");
@@ -1319,24 +1316,15 @@ public Response publishDataset(@Context ContainerRequestContext crc, @PathParam(
.build();
}
} else {
- if (isLegalDisclaimerAcknowledged(user, legalDisclaimerAcknowledged)) {
- PublishDatasetResult res = execCommand(new PublishDatasetCommand(ds,
- createDataverseRequest(user),
- isMinor));
- return res.isWorkflow() ? accepted(json(res.getDataset())) : ok(json(res.getDataset()));
- } else {
- return error(Status.PRECONDITION_FAILED, "Legal Disclaimer not Acknowledged"); // 412
- }
+ PublishDatasetResult res = execCommand(new PublishDatasetCommand(ds,
+ createDataverseRequest(user),
+ isMinor));
+ return res.isWorkflow() ? accepted(json(res.getDataset())) : ok(json(res.getDataset()));
}
} catch (WrappedResponse ex) {
return ex.getResponse();
}
}
- private boolean isLegalDisclaimerAcknowledged(AuthenticatedUser user, boolean legalDisclaimerAcknowledged) {
- return (user.isSuperuser()
- || !("true".equalsIgnoreCase(settingsService.getValueForKey(SettingsServiceBean.Key.DatasetPublishLegalDisclaimerAcknowledgementRequired)))
- || legalDisclaimerAcknowledged);
- }
@POST
@AuthRequired
diff --git a/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java
index c032e4caa85..87e28d9c6f8 100644
--- a/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java
+++ b/src/main/java/edu/harvard/iq/dataverse/settings/SettingsServiceBean.java
@@ -326,9 +326,9 @@ Size limit (in bytes) for tabular file ingest. Accepts either a single numeri
*/
DatasetPublishPopupCustomTextOnAllVersions,
/*
- Whether a Legal Disclaimer must be acknowledged before a Dataset can be published
+ Publish Disclaimer text. If this setting exists user must acknowledge before a Dataset can be published
*/
- DatasetPublishLegalDisclaimerAcknowledgementRequired,
+ PublishDatasetDisclaimer,
/*
Whether Harvesting (OAI) service is enabled
*/
diff --git a/src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java b/src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java
index ff5286d873f..9015a5c7a67 100644
--- a/src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java
+++ b/src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java
@@ -44,7 +44,6 @@
import edu.harvard.iq.dataverse.workflow.Workflow;
import edu.harvard.iq.dataverse.workflow.step.WorkflowStepData;
-import java.io.IOException;
import java.util.*;
import jakarta.json.Json;
@@ -478,7 +477,6 @@ public static JsonObjectBuilder json(Dataset ds, Boolean returnOwners) {
.add("publicationDate", ds.getPublicationDateFormattedYYYYMMDD())
.add("storageIdentifier", ds.getStorageIdentifier());
addDatasetFileCountLimit(ds, bld);
- includePublishLegalDisclaimer(bld, ds.getLatestVersion());
if (DvObjectContainer.isMetadataLanguageSet(ds.getMetadataLanguage())) {
bld.add("metadataLanguage", ds.getMetadataLanguage());
@@ -572,7 +570,6 @@ public static JsonObjectBuilder json(DatasetVersion dsv, List anonymized
.add("sizeOfCollection", dsv.getTermsOfUseAndAccess().getSizeOfCollection())
.add("studyCompletion", dsv.getTermsOfUseAndAccess().getStudyCompletion())
.add("fileAccessRequest", dsv.getTermsOfUseAndAccess().isFileAccessRequest());
- includePublishLegalDisclaimer(bld, dsv);
if(includeMetadataBlocks) {
bld.add("metadataBlocks",
jsonByBlocks(dsv.getDatasetFields(), anonymizedFieldTypeNamesList, ignoreSettingExcludeEmailFromExport));
@@ -1786,10 +1783,4 @@ public static JsonArrayBuilder jsonFileVersionSummaries(List#{bundle['dataset.publish.terms.help.tip']}