Skip to content

Commit

Permalink
Adds enablePublishOnAllNonPublic configuration
Browse files Browse the repository at this point in the history
closes #2202
  • Loading branch information
helbashandy committed Oct 18, 2023
1 parent e967576 commit 73d8e5c
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 4 deletions.
14 changes: 14 additions & 0 deletions src/js/models/AppModel.js
Original file line number Diff line number Diff line change
Expand Up @@ -1079,6 +1079,20 @@ define(['jquery', 'underscore', 'backbone'],
*/
isJSONLDEnabled: true,

/**
* If true, users can see a "Publish" button in the MetadataView on all non-public datasets regardless if
* a DOI is assigned to the dataset
* If false, the default behavior would take place based on the {@link AppConfig#enablePublishDOI} config.
*
* This config helps in the case that a member-node publication workflow requires review of the datasets before
* they can be public. It also allows datasets to be reviewed for publication regardless of the DOI status,
* as some datasets could have a pre-assigned DOI when transferring their dataset to a member node.
* @type {boolean}
* @default false
* @since 2.27.0
*/
enablePublishOnAllNonPublic: false,

/**
* If true, users can see a "Publish" button in the MetadataView, which makes the metadata
* document public and gives it a DOI identifier.
Expand Down
19 changes: 15 additions & 4 deletions src/js/views/MetadataView.js
Original file line number Diff line number Diff line change
Expand Up @@ -1231,19 +1231,30 @@ define(['jquery',
}

try {
//Determine if this metadata can be published.
// Determine if this metadata can be published.
// The Publish feature has to be enabled in the app.
// The model cannot already have a DOI
var canBePublished = MetacatUI.appModel.get("enablePublishDOI") && !view.model.isDOI();
var canBePublished;

// Check if this metadata can be published based on the "enablePublishOnAllNonPublic" Configuration.
// This helps in the case that a member-node publication workflow requires review of the datasets before
// they can be public. It also allows datasets to be reviewed for publication regardless of the DOI status,
// as some datasets could have a pre-assigned DOI when transferring their dataset to a member node.
if (MetacatUI.appModel.get("enablePublishOnAllNonPublic") && view.model.get("isPublic") === false){
canBePublished = true;
} else {
canBePublished = MetacatUI.appModel.get("enablePublishDOI") && !view.model.isDOI();
}

//If publishing is enabled, check if only certain users and groups can publish metadata
if (canBePublished) {
//Get the list of authorized publishers from the AppModel
var authorizedPublishers = MetacatUI.appModel.get("enablePublishDOIForSubjects");
//If the logged-in user is one of the subjects in the list or is in a group that is
// in the list, then this metadata can be published. Otherwise, it cannot.
if (Array.isArray(authorizedPublishers) && authorizedPublishers.length) {
if (MetacatUI.appUserModel.hasIdentityOverlap(authorizedPublishers)) {
if (Array.isArray(authorizedPublishers) && (authorizedPublishers.length ||
!view.model.get("isPublic") === false)){
if (MetacatUI.appUserModel.hasIdentityOverlap(authorizedPublishers)){
canBePublished = true;
}
else {
Expand Down

0 comments on commit 73d8e5c

Please sign in to comment.