diff --git a/doc/sphinx-guides/source/style/patterns.rst b/doc/sphinx-guides/source/style/patterns.rst
index 781de3d40fb..377fb4e3495 100644
--- a/doc/sphinx-guides/source/style/patterns.rst
+++ b/doc/sphinx-guides/source/style/patterns.rst
@@ -378,7 +378,7 @@ For action buttons on a page, we include an icon and text label. Action buttons
Form Buttons
------------
-Form buttons typically appear at the bottom of a form, aligned to the left. They do not have icons, just text labels.
+Form buttons typically appear at the bottom of a form, aligned to the left. They do not have icons, just text labels. The primary button is styled differently.
.. raw:: html
@@ -388,7 +388,7 @@ Form buttons typically appear at the bottom of a form, aligned to the left. They
Save Changes
-
+
Cancel
@@ -399,7 +399,7 @@ Form buttons typically appear at the bottom of a form, aligned to the left. They
diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java
index 225bb64f2bf..27af3973401 100644
--- a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java
+++ b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java
@@ -1931,7 +1931,8 @@ private String init(boolean initFull) {
}
if (settingsWrapper.isTrueForKey(SettingsServiceBean.Key.PublicInstall, false)){
- JH.addMessage(FacesMessage.SEVERITY_WARN, BundleUtil.getStringFromBundle("dataset.message.publicInstall"));
+ JH.addMessage(FacesMessage.SEVERITY_WARN, BundleUtil.getStringFromBundle("dataset.message.label.fileAccess"),
+ BundleUtil.getStringFromBundle("dataset.message.publicInstall"));
}
resetVersionUI();
@@ -1943,7 +1944,8 @@ private String init(boolean initFull) {
try {
privateUrl = commandEngine.submit(new GetPrivateUrlCommand(dvRequestService.getDataverseRequest(), dataset));
if (privateUrl != null) {
- JH.addMessage(FacesMessage.SEVERITY_INFO, BundleUtil.getStringFromBundle("dataset.privateurl.infoMessageAuthor", Arrays.asList(getPrivateUrlLink(privateUrl))));
+ JH.addMessage(FacesMessage.SEVERITY_INFO, BundleUtil.getStringFromBundle("dataset.privateurl.header"),
+ BundleUtil.getStringFromBundle("dataset.privateurl.infoMessageAuthor", Arrays.asList(getPrivateUrlLink(privateUrl))));
}
} catch (CommandException ex) {
// No big deal. The user simply doesn't have access to create or delete a Private URL.
@@ -1951,7 +1953,8 @@ private String init(boolean initFull) {
if (session.getUser() instanceof PrivateUrlUser) {
PrivateUrlUser privateUrlUser = (PrivateUrlUser) session.getUser();
if (dataset != null && dataset.getId().equals(privateUrlUser.getDatasetId())) {
- JH.addMessage(FacesMessage.SEVERITY_INFO, BundleUtil.getStringFromBundle("dataset.privateurl.infoMessageReviewer"));
+ JH.addMessage(FacesMessage.SEVERITY_WARN, BundleUtil.getStringFromBundle("dataset.privateurl.header"),
+ BundleUtil.getStringFromBundle("dataset.privateurl.infoMessageReviewer"));
}
}
@@ -3259,9 +3262,7 @@ public String save() {
// Validate
Set constraintViolations = workingVersion.validate();
if (!constraintViolations.isEmpty()) {
- //JsfHelper.addFlashMessage(BundleUtil.getStringFromBundle("dataset.message.validationError"));
- JH.addMessage(FacesMessage.SEVERITY_ERROR, BundleUtil.getStringFromBundle("dataset.message.validationError"));
- //FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Validation Error", "See below for details."));
+ FacesContext.getCurrentInstance().validationFailed();
return "";
}
@@ -4824,7 +4825,8 @@ public void createPrivateUrl() {
try {
PrivateUrl createdPrivateUrl = commandEngine.submit(new CreatePrivateUrlCommand(dvRequestService.getDataverseRequest(), dataset));
privateUrl = createdPrivateUrl;
- JH.addMessage(FacesMessage.SEVERITY_INFO, BundleUtil.getStringFromBundle("dataset.privateurl.infoMessageAuthor", Arrays.asList(getPrivateUrlLink(privateUrl))));
+ JH.addMessage(FacesMessage.SEVERITY_INFO, BundleUtil.getStringFromBundle("dataset.privateurl.header"),
+ BundleUtil.getStringFromBundle("dataset.privateurl.infoMessageAuthor", Arrays.asList(getPrivateUrlLink(privateUrl))));
privateUrlWasJustCreated = true;
} catch (CommandException ex) {
String msg = BundleUtil.getStringFromBundle("dataset.privateurl.noPermToCreate", PrivateUrlUtil.getRequiredPermissions(ex));
diff --git a/src/main/java/edu/harvard/iq/dataverse/passwordreset/PasswordResetPage.java b/src/main/java/edu/harvard/iq/dataverse/passwordreset/PasswordResetPage.java
index d2637df040e..450374d6e66 100644
--- a/src/main/java/edu/harvard/iq/dataverse/passwordreset/PasswordResetPage.java
+++ b/src/main/java/edu/harvard/iq/dataverse/passwordreset/PasswordResetPage.java
@@ -24,6 +24,7 @@
import javax.inject.Named;
import edu.harvard.iq.dataverse.validation.PasswordValidatorServiceBean;
+import java.util.Arrays;
import java.util.Date;
import java.util.List;
import javax.faces.component.UIComponent;
@@ -127,7 +128,8 @@ public String sendPasswordResetLink() {
*/
logger.log(Level.INFO, "Couldn''t find single account using {0}", emailAddress);
}
- FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, BundleUtil.getStringFromBundle("passwdVal.passwdReset.resetInitiated"), ""));
+ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, BundleUtil.getStringFromBundle("passwdVal.passwdReset.resetInitiated"),
+ BundleUtil.getStringFromBundle("passwdReset.successSubmit.tip", Arrays.asList(emailAddress))));
} catch (PasswordResetException ex) {
/**
* @todo do we really need a special exception for this??
diff --git a/src/main/java/propertyFiles/Bundle.properties b/src/main/java/propertyFiles/Bundle.properties
index 21a609f9f3b..8bc15189841 100755
--- a/src/main/java/propertyFiles/Bundle.properties
+++ b/src/main/java/propertyFiles/Bundle.properties
@@ -237,27 +237,44 @@ user.newPassword=New Password
authenticationProvidersAvailable.tip={0}There are no active authentication providers{1}If you are a system administrator, please enable one using the API.{2}If you are not a system administrator, please contact the one for your institution.
passwdVal.passwdReq.title=Your password must contain:
-passwdVal.passwdReq.goodStrength =passwords of at least {0} characters are exempt from all other requirements
-passwdVal.passwdReq.lengthReq =At least {0} characters
-passwdVal.passwdReq.characteristicsReq =At least 1 character from {0} of the following types:
-passwdVal.passwdReq.notInclude =It may not include:
-passwdVal.passwdReq.consecutiveDigits =More than {0} numbers in a row
-passwdVal.passwdReq.dictionaryWords =Dictionary words
-passwdVal.passwdReq.unknownPasswordRule =Unknown, contact your administrator
+passwdVal.passwdReq.goodStrength=passwords of at least {0} characters are exempt from all other requirements
+passwdVal.passwdReq.lengthReq=At least {0} characters
+passwdVal.passwdReq.characteristicsReq=At least 1 character from {0} of the following types:
+passwdVal.passwdReq.notInclude=It may not include:
+passwdVal.passwdReq.consecutiveDigits=More than {0} numbers in a row
+passwdVal.passwdReq.dictionaryWords=Dictionary words
+passwdVal.passwdReq.unknownPasswordRule=Unknown, contact your administrator
#printf syntax used to pass to passay library
-passwdVal.expireRule.errorCode =EXPIRED
-passwdVal.expireRule.errorMsg =The password is over %1$s days old and has expired.
-passwdVal.goodStrengthRule.errorMsg =Note: passwords are always valid with a %1$s or more character length regardless.
-passwdVal.goodStrengthRule.errorCode =NO_GOODSTRENGTH
-passwdVal.passwdReset.resetLinkTitle =Password Reset Link
-passwdVal.passwdReset.resetLinkDesc =Your password reset link is not valid
+passwdVal.expireRule.errorCode=EXPIRED
+passwdVal.expireRule.errorMsg=The password is over %1$s days old and has expired.
+passwdVal.goodStrengthRule.errorMsg=Note: passwords are always valid with a %1$s or more character length regardless.
+passwdVal.goodStrengthRule.errorCode=NO_GOODSTRENGTH
+passwdVal.passwdReset.resetLinkTitle=Password Reset Link
+passwdVal.passwdReset.resetLinkDesc=Your password reset link is not valid
passwdVal.passwdReset.resetInitiated=Password Reset Initiated
-passwdVal.passwdReset.valBlankLog =new password is blank
-passwdVal.passwdReset.valFacesError =Password Error
-passwdVal.passwdReset.valFacesErrorDesc =Please enter a new password for your account.
-passwdVal.passwdValBean.warnDictionaryRead =Dictionary was set, but none was read in.
-passwdVal.passwdValBean.warnDictionaryObj =PwDictionaries not set and no default password file found:
-passwdVal.passwdValBean.warnSetStrength =The PwGoodStrength {0} value competes with the PwMinLength value of {1} and is added to {2}
+passwdVal.passwdReset.valBlankLog=new password is blank
+passwdVal.passwdReset.valFacesError=Password Error
+passwdVal.passwdReset.valFacesErrorDesc=Please enter a new password for your account.
+passwdVal.passwdValBean.warnDictionaryRead=Dictionary was set, but none was read in.
+passwdVal.passwdValBean.warnDictionaryObj=PwDictionaries not set and no default password file found:
+passwdVal.passwdValBean.warnSetStrength=The PwGoodStrength {0} value competes with the PwMinLength value of {1} and is added to {2}
+
+# passwordreset.xhtml
+pageTitle.passwdReset.pre=Account Password Reset
+passwdReset.token=token :
+passwdReset.userLookedUp=user looked up :
+passwdReset.emailSubmitted=email submitted :
+passwdReset.details={0} Password Reset{1} - To initiate the password reset process, please provide your email address.
+passwdReset.submitRequest=Submit Password Request
+passwdReset.successSubmit.tip=If this email is associated with an account, then an email will be sent with further instructions to {0}.
+passwdReset.debug=DEBUG
+passwdReset.resetUrl=The reset URL is
+passwdReset.noEmail.tip=No email was actually sent because a user could not be found using the provided email address {0} but we don't mention this because we don't malicious users to use the form to determine if there is an account associated with an email address.
+passwdReset.illegalLink.tip=Your password reset link is not valid. If you need to reset your password, {0}click here{1} in order to request that your password to be reset again.
+passwdReset.newPasswd.details={0} Reset Password{1} \u2013 Our password requirements have changed. Please pick a strong password that matches the criteria below.
+passwdReset.newPasswd=New Password
+passwdReset.rePasswd=Retype Password
+passwdReset.resetBtn=Reset Password
#loginpage.xhtml
login.System=Login System
@@ -569,7 +586,6 @@ dashboard.list_users.removeAll.message.failure=Failed to remove roles for user {
dashboard.list_users.toggleSuperuser=Edit Superuser Status
dashboard.list_users.toggleSuperuser.confirmationText.add=Are you sure you want to enable superuser status for user {0}?
dashboard.list_users.toggleSuperuser.confirmationText.remove=Are you sure you want to disable superuser status for user {0}?
-dashboard.list_users.toggleSuperuser.confirm=Continue
dashboard.list_users.api.auth.invalid_apikey=The API key is invalid.
dashboard.list_users.api.auth.not_superuser=Forbidden. You must be a superuser.
@@ -649,23 +665,6 @@ notification.email.info.unavailable=Unavailable
notification.email.apiTokenGenerated=Hello {0} {1},\n\nAPI Token has been generated. Please keep it secure as you would do with a password.
notification.email.apiTokenGenerated.subject=API Token was generated
-# passwordreset.xhtml
-pageTitle.passwdReset.pre=Account Password Reset
-passwdReset.token=token :
-passwdReset.userLookedUp=user looked up :
-passwdReset.emailSubmitted=email submitted :
-passwdReset.details={0} Password Reset{1} - To initiate the password reset process, please provide your email address.
-passwdReset.submitRequest=Submit Password Request
-passwdReset.successSubmit.tip=If this email is associated with an account, then an email will be sent with further instructions to {0}.
-passwdReset.debug=DEBUG
-passwdReset.resetUrl=The reset URL is
-passwdReset.noEmail.tip=No email was actually sent because a user could not be found using the provided email address {0} but we don't mention this because we don't malicious users to use the form to determine if there is an account associated with an email address.
-passwdReset.illegalLink.tip=Your password reset link is not valid. If you need to reset your password, {0}click here{1} in order to request that your password to be reset again.
-passwdReset.newPasswd.details={0} Reset Password{1} \u2013 Our password requirements have changed. Please pick a strong password that matches the criteria below.
-passwdReset.newPasswd=New Password
-passwdReset.rePasswd=Retype Password
-passwdReset.resetBtn=Reset Password
-
# dataverse.xhtml
dataverse.title=The project, department, university, professor, or journal this dataverse will contain data for.
dataverse.enterName=Enter name...
@@ -811,6 +810,7 @@ dataverse.results.dialog.addDataGuest.login.title=Log into your Dataverse Accoun
dataverse.results.types.dataverses=Dataverses
dataverse.results.types.datasets=Datasets
dataverse.results.types.files=Files
+dataverse.results.btn.filterResults=Filter Results
# Bundle file editors, please note that "dataverse.results.empty.zero" is used in a unit test
dataverse.results.empty.zero=There are no dataverses, datasets, or files that match your search. Please try a new search by using other or broader terms. You can also check out the search guide for tips.
# Bundle file editors, please note that "dataverse.results.empty.hidden" is used in a unit test
@@ -1227,8 +1227,7 @@ dataset.submit.failure.isReleased=Latest version of dataset is already released.
dataset.submit.failure.inReview=You cannot submit this dataset for review because it is already in review.
dataset.rejectMessage=Return this dataset to contributor for modification.
dataset.rejectWatermark=Please enter a reason for returning this dataset to its author(s).
-dataset.reject.enterReason=Reason for return to author is required
-dataset.reject.enterReason.header=Required entry
+dataset.reject.enterReason.error=Reason for return to author is required.
dataset.reject.success=This dataset has been sent back to the contributor.
dataset.reject.failure=Dataset Submission Return Failed - {0}
dataset.reject.datasetNull=Cannot return the dataset to the author(s) because it is null.
@@ -1329,7 +1328,6 @@ dataset.message.bulkFileDeleteSuccess=The selected files have been deleted.
datasetVersion.message.deleteSuccess=This dataset draft has been deleted.
datasetVersion.message.deaccessionSuccess=The selected version(s) have been deaccessioned.
dataset.message.deaccessionSuccess=This dataset has been deaccessioned.
-dataset.message.validationError=Validation Error - Required fields were missed or there was a validation error. Please scroll down to see details.
dataset.message.publishFailure=The dataset could not be published.
dataset.message.metadataFailure=The metadata could not be updated.
dataset.message.filesFailure=The files could not be updated.
@@ -1339,7 +1337,8 @@ dataset.message.deleteFailure=This dataset draft could not be deleted.
dataset.message.deaccessionFailure=This dataset could not be deaccessioned.
dataset.message.createFailure=The dataset could not be created.
dataset.message.termsFailure=The dataset terms could not be updated.
-dataset.message.publicInstall=File Access - Files are stored on a publicly accessible storage server.
+dataset.message.label.fileAccess=File Access
+dataset.message.publicInstall=Files are stored on a publicly accessible storage server.
dataset.metadata.publicationDate=Publication Date
dataset.metadata.publicationDate.tip=The publication date of a dataset.
dataset.metadata.publicationYear=Publication Year
@@ -1372,8 +1371,8 @@ dataset.noValidSelectedFilesForDownload=The restricted file(s) selected may not
dataset.mixedSelectedFilesForDownload=The restricted file(s) selected may not be downloaded because you have not been granted access.
dataset.downloadUnrestricted=Click Continue to download the files you have access to download.
dataset.requestAccessToRestrictedFiles=You may request access to the restricted file(s) by clicking the Request Access button.
-dataset.privateurl.infoMessageAuthor=Unpublished Dataset Private URL - Privately share this dataset before it is published: {0}
-dataset.privateurl.infoMessageReviewer=Unpublished Dataset Private URL - This unpublished dataset is being privately shared. You will not be able to access it when logged into your Dataverse account.
+dataset.privateurl.infoMessageAuthor=Privately share this dataset before it is published: {0}
+dataset.privateurl.infoMessageReviewer=This unpublished dataset is being privately shared. You will not be able to access it when logged into your Dataverse account.
dataset.privateurl.header=Unpublished Dataset Private URL
dataset.privateurl.tip=Use a Private URL to allow those without Dataverse accounts to access your unpublished dataset. For more information about the Private URL feature, please refer to the User Guide .
dataset.privateurl.absent=Private URL has not been created.
@@ -1643,20 +1642,10 @@ file.deaccessionDialog.leaveURL.watermark=Optional dataset site, http://...
file.deaccessionDialog.deaccession.tip=Are you sure you want to deaccession? The selected version(s) will no longer be viewable by the public.
file.deaccessionDialog.deaccessionDataset.tip=Are you sure you want to deaccession this dataset? It will no longer be viewable by the public.
file.deaccessionDialog.dialog.selectVersion.error=Please select version(s) for deaccessioning.
-file.deaccessionDialog.dialog.selectVersion.tip=Please select version(s) for deaccessioning.
-file.deaccessionDialog.dialog.selectVersion.header=Please Select Version(s)
-file.deaccessionDialog.dialog.reason.tip=Please select reason for deaccessioning.
file.deaccessionDialog.dialog.reason.error=Please select reason for deaccessioning.
-file.deaccessionDialog.dialog.reason.header=Please Select Reason
-file.deaccessionDialog.dialog.url.tip=Please enter valid forwarding URL.
file.deaccessionDialog.dialog.url.error=Please enter valid forwarding URL.
-file.deaccessionDialog.dialog.url.header=Invalid URL
-file.deaccessionDialog.dialog.textForReason.tip=Please enter text for reason for deaccessioning.
-file.deaccessionDialog.dialog.textForReason.header=Enter additional information
file.deaccessionDialog.dialog.textForReason.error=Please enter text for reason for deaccessioning.
-file.deaccessionDialog.dialog.limitChar.tip=Text for reason for deaccessioning may be no longer than 1000 characters.
file.deaccessionDialog.dialog.limitChar.error=Text for reason for deaccessioning may be no longer than {0} characters.
-file.deaccessionDialog.dialog.limitChar.header=Limit 1000 characters
file.viewDiffDialog.header=Version Differences Details
file.viewDiffDialog.dialog.warning=Please select two versions to view the differences.
file.viewDiffDialog.notAvailable=N/A
@@ -2133,7 +2122,7 @@ permission.roleNotAbleToBeAssigned=The role was not able to be assigned.
#ManageGroupsPage.java
dataverse.manageGroups.create.success=Successfully created group {0}. Refresh to update your page.
-dataverse.manageGroups.save.success=Successfully saved group {0}
+dataverse.manageGroups.save.success=Successfully saved group {0}.
dataverse.manageGroups.delete=The group has been deleted.
dataverse.manageGroups.nodelete=The explicit group cannot be deleted.
dataverse.manageGroups.create.fail=Group Creation failed.
diff --git a/src/main/webapp/404.xhtml b/src/main/webapp/404.xhtml
index 97a61759d31..24384426785 100644
--- a/src/main/webapp/404.xhtml
+++ b/src/main/webapp/404.xhtml
@@ -31,13 +31,20 @@
-
+
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index ff617a9fad0..41a82a71952 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -162,6 +162,10 @@
svg
image/svg+xml
+
+ webmanifest
+ application/manifest+json
+
diff --git a/src/main/webapp/contactFormFragment.xhtml b/src/main/webapp/contactFormFragment.xhtml
index 33565e21e8f..04300983572 100644
--- a/src/main/webapp/contactFormFragment.xhtml
+++ b/src/main/webapp/contactFormFragment.xhtml
@@ -8,6 +8,7 @@
+
#{bundle['contact.to']}
@@ -70,11 +71,11 @@
diff --git a/src/main/webapp/dashboard-datamove.xhtml b/src/main/webapp/dashboard-datamove.xhtml
index 869c1e6130d..aa6a7a93a5c 100644
--- a/src/main/webapp/dashboard-datamove.xhtml
+++ b/src/main/webapp/dashboard-datamove.xhtml
@@ -24,6 +24,7 @@
+
#{bundle['dashboard.card.datamove.selectdataset.header']}
@@ -116,7 +117,7 @@
@@ -477,7 +462,7 @@
#{DatasetPage.dataset.guestbook.name}
-
@@ -485,7 +470,6 @@
-
#{bundle['file.dataFilesTab.terms.list.guestbook.select.tip']}
@@ -498,19 +482,20 @@
-
-
+
-
+
-
@@ -586,7 +571,7 @@
-
+
#{bundle.close}
diff --git a/src/main/webapp/dataset-versions.xhtml b/src/main/webapp/dataset-versions.xhtml
index 492e9c17dc3..0d716b0d2a9 100644
--- a/src/main/webapp/dataset-versions.xhtml
+++ b/src/main/webapp/dataset-versions.xhtml
@@ -34,10 +34,10 @@
update=":#{p:resolveClientId('datasetForm:tabView:versionsTable', view)}"
actionListener="#{DatasetPage.postLoadSetVersionTabList()}" />
-
+
#{bundle['file.dataFilesTab.versions.viewDiffBtn']}
-
+
#{bundle['dataset.thumbnailsAndWidget.thumbnailImage.default']}
-
+
- #{bundle.remove}
+
+ #{bundle.remove}
+
@@ -56,7 +58,9 @@
data-toggle="tooltip" data-placement="auto right" data-original-title="#{bundle['dataset.thumbnailsAndWidget.thumbnailImage.selectAvailable.title']}">
- #{bundle['dataset.thumbnailsAndWidget.thumbnailImage.selectThumbnail']}
+
+ #{bundle['dataset.thumbnailsAndWidget.thumbnailImage.selectThumbnail']}
+
-
+
- #{bundle['dataset.thumbnailsAndWidget.removeThumbnail.tip']}
+ #{bundle['dataset.thumbnailsAndWidget.removeThumbnail.tip']}
@@ -110,14 +116,12 @@
-
diff --git a/src/main/webapp/dataset.xhtml b/src/main/webapp/dataset.xhtml
index 21eab7e2206..9bb29fc8957 100644
--- a/src/main/webapp/dataset.xhtml
+++ b/src/main/webapp/dataset.xhtml
@@ -139,28 +139,28 @@
and DatasetPage.canUpdateDataset()
and !permissionsWrapper.canIssuePublishDatasetCommand(DatasetPage.dataset))}">
-
#{bundle['dataset.publish.btn']}
-
#{bundle['dataset.publish.btn']}
-
#{bundle['dataset.publish.btn']}
- #{bundle['dataset.publish.btn']}
-
- #{bundle['dataset.rejectBtn']}
-
+ #{bundle['dataset.rejectBtn']}
+
-
-
- #{DatasetPage.dataset.latestVersion.inReview ? bundle['dataset.disabledSubmittedBtn'] : bundle['dataset.submitBtn']}
-
-
+
+ #{DatasetPage.dataset.latestVersion.inReview ? bundle['dataset.disabledSubmittedBtn'] : bundle['dataset.submitBtn']}
+
#{bundle['link']}
@@ -325,7 +325,7 @@
-
+
#{bundle.close}
@@ -454,6 +454,7 @@
+
@@ -1295,9 +1319,9 @@
@@ -1362,14 +1389,16 @@
#{bundle['dataset.submitMessage']}
-
+
#{bundle['dataset.publish.tip']}
@@ -1377,13 +1406,15 @@
-
+
@@ -1401,13 +1432,16 @@
#{bundle['dataset.publishBoth.tip']}
-
+
+
#{bundle['dataset.republish.tip']}
@@ -1432,14 +1466,19 @@
-
+
@@ -1451,12 +1490,13 @@
-
+
@@ -1473,52 +1513,44 @@
-
+
#{bundle['dataset.rejectMessage']}
-
+
+
-
+
-
+
-
-
-
-
+
+
diff --git a/src/main/webapp/dataverseuser.xhtml b/src/main/webapp/dataverseuser.xhtml
index 3c407a473bc..a4da5fdc950 100644
--- a/src/main/webapp/dataverseuser.xhtml
+++ b/src/main/webapp/dataverseuser.xhtml
@@ -481,7 +481,8 @@
- #{ApiTokenPage.checkForApiToken() ? bundle['apitoken.regenerateBtn'] : bundle['apitoken.generateBtn']}
+ #{ApiTokenPage.checkForApiToken() ? bundle['apitoken.regenerateBtn'] : bundle['apitoken.generateBtn']}
+
@@ -649,10 +650,10 @@
diff --git a/src/main/webapp/editFilesFragment.xhtml b/src/main/webapp/editFilesFragment.xhtml
index a2db4bff7e9..62d3600af23 100644
--- a/src/main/webapp/editFilesFragment.xhtml
+++ b/src/main/webapp/editFilesFragment.xhtml
@@ -515,36 +515,41 @@
-
-
diff --git a/src/main/webapp/file.xhtml b/src/main/webapp/file.xhtml
index 26e0f766117..40eb7683b60 100644
--- a/src/main/webapp/file.xhtml
+++ b/src/main/webapp/file.xhtml
@@ -63,10 +63,10 @@
#{bundle['dataset.share.datasetShare.tip']}
-
+
-
+
#{bundle.close}
@@ -103,8 +103,7 @@
+ and !(dataFileServiceBean.hasReplacement(FilePage.fileMetadata.dataFile) or dataFileServiceBean.hasBeenDeleted(FilePage.fileMetadata.dataFile))}">
#{bundle['dataset.editBtn']}
@@ -395,15 +394,14 @@
-
+
#{bundle['dataset.editBtn']}
-
+
-
+
#{bundle['dataset.exportBtn']}
-
+
#{bundle['file.deleteFileDialog.immediate']}
#{bundle['file.deleteFileDialog.failed.tip']}
-
-
-
-
+
-
diff --git a/src/main/webapp/harvestclients.xhtml b/src/main/webapp/harvestclients.xhtml
index a7d0bec027b..bc5b853e374 100644
--- a/src/main/webapp/harvestclients.xhtml
+++ b/src/main/webapp/harvestclients.xhtml
@@ -85,7 +85,7 @@