Merge pull request #1476 from cwilper/DS-1929-safe-bitstream-embargo

DS-1929 Permit bitstream embargo edit only via Edit Policy
This commit is contained in:
Tim Donohue
2016-09-21 15:56:25 -05:00
committed by GitHub
4 changed files with 23 additions and 28 deletions

View File

@@ -709,8 +709,6 @@ public class FlowItemUtils
// Save our changes
bitstreamService.update(context, bitstream);
processAccessFields(context, request, ((Item)bitstreamService.getParentObject(context,bitstream)).getOwningCollection(), bitstream);
result.setContinue(true);
result.setOutcome(true);
result.setMessage(T_bitstream_updated);

View File

@@ -149,8 +149,7 @@ public class EditBitstreamForm extends AbstractDSpaceTransformer
if(!isAdvancedFormEnabled){
AccessStepUtil asu = new AccessStepUtil(context);
// if the item is embargoed default value will be displayed.
asu.addEmbargoDateSimpleForm(bitstream, edit, -1);
asu.addReason(null, edit, -1);
asu.addEmbargoDateDisplayOnly(bitstream, edit);
}
edit.addItem(T_para1);

View File

@@ -15,6 +15,7 @@ import org.dspace.authorize.factory.AuthorizeServiceFactory;
import org.dspace.authorize.service.AuthorizeService;
import org.dspace.authorize.service.ResourcePolicyService;
import org.dspace.content.*;
import org.dspace.core.Constants;
import org.dspace.core.Context;
import org.dspace.app.xmlui.wing.WingException;
import org.dspace.app.xmlui.wing.element.*;
@@ -66,6 +67,8 @@ public class AccessStepUtil extends AbstractDSpaceTransformer {
private static final Message T_label_date_help =
message("xmlui.administrative.authorization.AccessStep.label_date_help");
private static final Message T_label_date_displayonly_help =
message("xmlui.administrative.authorization.AccessStep.label_date_displayonly_help");
public static final int RADIO_OPEN_ACCESS_ITEM_VISIBLE=0;
public static final int RADIO_OPEN_ACCESS_ITEM_EMBARGOED=1;
@@ -188,31 +191,25 @@ public class AccessStepUtil extends AbstractDSpaceTransformer {
}
}
public void addEmbargoDateSimpleForm(DSpaceObject dso, List form, int errorFlag) throws SQLException, WingException {
public void addEmbargoDateDisplayOnly(final DSpaceObject dso, final List list) throws SQLException, WingException {
final Text text = list.addItem().addText("embargo");
text.setLabel(T_item_embargoed);
text.setHelp(T_label_date_displayonly_help);
populateEmbargoDetail(dso, text);
text.setDisabled(true);
}
String date=null;
if(dso!=null){
java.util.List<ResourcePolicy> policies = authorizeService.findPoliciesByDSOAndType(context, dso, ResourcePolicy.TYPE_CUSTOM);
if(policies.size() > 0){
ResourcePolicy rp = policies.get(0);
if(rp.getStartDate() != null)
{
date = DateFormatUtils.format(rp.getStartDate(), "yyyy-MM-dd");
}
globalReason = rp.getRpDescription();
private void populateEmbargoDetail(final DSpaceObject dso, final Text text) throws SQLException, WingException {
for (final ResourcePolicy readPolicy : authorizeService.getPoliciesActionFilter(context, dso, Constants.READ)) {
if (Group.ANONYMOUS.equals(readPolicy.getGroup().getName()) && readPolicy.getStartDate() != null) {
final String dateString = DateFormatUtils.format(readPolicy.getStartDate(), "yyyy-MM-dd");
text.setValue(dateString);
globalReason = readPolicy.getRpDescription();
}
}
// CheckBox privateCheckbox = form.addItem().addCheckBox("emabrgo_option");
// privateCheckbox.setLabel(T_item_embargoed);
// if(date!=null){
// privateCheckbox.addOption(true, CB_EMBARGOED, "");
// }
// else{
// privateCheckbox.addOption(false, CB_EMBARGOED, "");
// }
}
// Date
public void addEmbargoDateSimpleForm(DSpaceObject dso, List form, int errorFlag) throws SQLException, WingException {
Text startDate = form.addItem().addText("embargo_until_date");
startDate.setLabel(T_item_embargoed);
if (errorFlag == org.dspace.submit.step.AccessStep.STATUS_ERROR_FORMAT_DATE){
@@ -222,8 +219,8 @@ public class AccessStepUtil extends AbstractDSpaceTransformer {
startDate.addError(T_error_missing_date);
}
if(date!=null){
startDate.setValue(date);
if (dso != null) {
populateEmbargoDetail(dso, startDate);
}
startDate.setHelp(T_label_date_help);
}

View File

@@ -785,7 +785,8 @@
<message key="xmlui.Submission.submit.AccessStep.column4">End Date</message>
<message key="xmlui.Submission.submit.AccessStep.table_edit_button">Edit</message>
<message key="xmlui.Submission.submit.AccessStep.table_delete_button">Remove</message>
<message key="xmlui.administrative.authorization.AccessStep.label_date_help">The first day from which access is allowed. Accepted format: yyyy, yyyy-mm, yyyy-mm-dd</message>
<message key="xmlui.administrative.authorization.AccessStep.label_date_help">The first day from which access is allowed. Accepted format: yyyy, yyyy-mm, yyyy-mm-dd</message>
<message key="xmlui.administrative.authorization.AccessStep.label_date_displayonly_help">The first day from which access is allowed. <b>This date cannot be modified on this form.</b> To set an embargo date for a bitstream, go to the <i>Item Status</i> tab, click <i>Authorizations...</i>, create or edit the bitstream's <i>READ</i> policy, and set the <i>Start Date</i> as desired.</message>
<message key="xmlui.Submission.submit.AccessStep.review_policy_line">Name: {0}; action: {1}, group: {2}, start date: {3}, end date: {4}</message>
<message key="xmlui.Submission.submit.AccessStep.review_public_item">The item will be searchable</message>
<message key="xmlui.Submission.submit.AccessStep.review_private_item">The item will not be searchable</message>