diff --git a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/CCLicenseStep.java b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/CCLicenseStep.java
index 33254781e9..4807347da6 100644
--- a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/CCLicenseStep.java
+++ b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/CCLicenseStep.java
@@ -113,7 +113,7 @@ public class CCLicenseStep extends AbstractSubmissionStep
// Build the url to and from creative commons
Item item = submission.getItem();
Collection collection = submission.getCollection();
- String actionURL = IdentifierService.getURL(collection).toString() + "/submit";
+ String actionURL = IdentifierService.getURL(collection).toString() + "/submit/" + knot.getId() + ".continue";
Request request = ObjectModelHelper.getRequest(objectModel);
boolean https = request.isSecure();
@@ -177,7 +177,6 @@ public class CCLicenseStep extends AbstractSubmissionStep
// add standard control/paging buttons
addControlButtons(form);
- onsiteDiv.addHidden("submission-continue").setValue(knot.getId());
}
/**
diff --git a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/DescribeStep.java b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/DescribeStep.java
index f547efad2a..8184ef29df 100644
--- a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/DescribeStep.java
+++ b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/DescribeStep.java
@@ -176,7 +176,7 @@ public class DescribeStep extends AbstractSubmissionStep
// Obtain the inputs (i.e. metadata fields we are going to display)
Item item = submission.getItem();
Collection collection = submission.getCollection();
- String actionURL = IdentifierService.getURL(collection).toString() + "/submit";
+ String actionURL = IdentifierService.getURL(collection).toString() + "/submit/" + knot.getId() + ".continue";
DCInputSet inputSet = null;
DCInput[] inputs = {};
@@ -274,9 +274,6 @@ public class DescribeStep extends AbstractSubmissionStep
}
}
- div.addHidden("submission-continue").setValue(knot.getId());
-
-
// add standard control/paging buttons
addControlButtons(form);
}
diff --git a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/EditFileStep.java b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/EditFileStep.java
index 5e077c926a..5038d35b3a 100644
--- a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/EditFileStep.java
+++ b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/EditFileStep.java
@@ -140,7 +140,7 @@ public class EditFileStep extends AbstractStep
UIException, SQLException, IOException, AuthorizeException
{
Collection collection = submission.getCollection();
- String actionURL = IdentifierService.getURL(collection).toString() + "/submit";
+ String actionURL = IdentifierService.getURL(collection).toString() + "/submit/" + knot.getId() + ".continue";
// Get the bitstream and all the various formats
BitstreamFormat currentFormat = bitstream.getFormat();
@@ -220,8 +220,6 @@ public class EditFileStep extends AbstractStep
actions.addButton("submit_save").setValue(T_submit_save);
actions.addButton("submit_edit_cancel").setValue(T_submit_cancel);
- div.addHidden("submission-continue").setValue(knot.getId());
-
}
}
diff --git a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/InitialQuestionsStep.java b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/InitialQuestionsStep.java
index 153f78eed1..01c84ad5b2 100644
--- a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/InitialQuestionsStep.java
+++ b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/InitialQuestionsStep.java
@@ -124,7 +124,7 @@ public class InitialQuestionsStep extends AbstractSubmissionStep
// Get any metadata that may be removed by unselecting one of these options.
Item item = submission.getItem();
Collection collection = submission.getCollection();
- String actionURL = IdentifierService.getURL(collection).toString() + "/submit";
+ String actionURL = IdentifierService.getURL(collection).toString() + "/submit/" + knot.getId() + ".continue";
DCValue[] titles = item.getDC("title", "alternative", Item.ANY);
@@ -254,7 +254,6 @@ public class InitialQuestionsStep extends AbstractSubmissionStep
//add standard control/paging buttons
addControlButtons(form);
- div.addHidden("submission-continue").setValue(knot.getId());
//Since we already warn users about the metadata pruning to happen
//if they uncheck an already checked box, then
//we can let the prune process occur immediately!
diff --git a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/LicenseStep.java b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/LicenseStep.java
index 5007910ab2..cbe0eef177 100644
--- a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/LicenseStep.java
+++ b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/LicenseStep.java
@@ -147,7 +147,7 @@ public class LicenseStep extends AbstractSubmissionStep
// Get the full text for the actuial licese
Collection collection = submission.getCollection();
- String actionURL = IdentifierService.getURL(collection).toString() + "/submit";
+ String actionURL = IdentifierService.getURL(collection).toString() + "/submit/" + knot.getId() + ".continue";
String licenseText = collection.getLicense();
Division div = body.addInteractiveDivision("submit-license",actionURL, Division.METHOD_POST,"primary submission");
@@ -180,8 +180,6 @@ public class LicenseStep extends AbstractSubmissionStep
//add standard control/paging buttons
addControlButtons(controls);
-
- div.addHidden("submission-continue").setValue(knot.getId());
}
/**
diff --git a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/ResumeStep.java b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/ResumeStep.java
index 0861d8688e..dfe0a5b417 100644
--- a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/ResumeStep.java
+++ b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/ResumeStep.java
@@ -95,7 +95,7 @@ public class ResumeStep extends AbstractStep
// Get any metadata that may be removed by unselecting one of these options.
Item item = submission.getItem();
Collection collection = submission.getCollection();
- String actionURL = IdentifierService.getURL(collection).toString() + "/submit";
+ String actionURL = IdentifierService.getURL(collection).toString() + "/submit/" + knot.getId() + ".continue";
Request request = ObjectModelHelper.getRequest(objectModel);
String showfull = request.getParameter("showfull");
@@ -129,7 +129,5 @@ public class ResumeStep extends AbstractStep
org.dspace.app.xmlui.wing.element.Item actions = form.addItem();
actions.addButton("submit_resume").setValue(T_submit_resume);
actions.addButton("submit_cancel").setValue(T_submit_cancel);
-
- div.addHidden("submission-continue").setValue(knot.getId());
}
}
diff --git a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/ReviewStep.java b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/ReviewStep.java
index 377d5fdf29..2f4df10306 100644
--- a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/ReviewStep.java
+++ b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/ReviewStep.java
@@ -138,7 +138,7 @@ public class ReviewStep extends AbstractSubmissionStep
{
// Get actionable URL
Collection collection = submission.getCollection();
- String actionURL = IdentifierService.getURL(collection).toString() + "/submit";
+ String actionURL = IdentifierService.getURL(collection).toString() + "/submit/" + knot.getId() + ".continue";
SubmissionConfig subConfig = submissionInfo.getSubmissionConfig();
@@ -217,8 +217,6 @@ public class ReviewStep extends AbstractSubmissionStep
// Part C:
// add standard control/paging buttons
addControlButtons(review);
-
- div.addHidden("submission-continue").setValue(knot.getId());
}
/**
diff --git a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/SaveOrRemoveStep.java b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/SaveOrRemoveStep.java
index 070da620ef..d9491241ed 100644
--- a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/SaveOrRemoveStep.java
+++ b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/SaveOrRemoveStep.java
@@ -96,7 +96,7 @@ public class SaveOrRemoveStep extends AbstractStep
UIException, SQLException, IOException, AuthorizeException
{
Collection collection = submission.getCollection();
- String actionURL = IdentifierService.getURL(collection).toString() + "/submit";
+ String actionURL = IdentifierService.getURL(collection).toString() + "/submit/" + knot.getId() + ".continue";
Division div = body.addInteractiveDivision("submit-save-or-cancel",actionURL, Division.METHOD_POST,"primary submission");
div.setHead(T_submission_head);
@@ -112,8 +112,5 @@ public class SaveOrRemoveStep extends AbstractStep
org.dspace.app.xmlui.wing.element.Item actions = saveOrCancel.addItem();
actions.addButton("submit_save").setValue(T_submit_save);
actions.addButton("submit_remove").setValue(T_submit_remove);
-
- div.addHidden("submission-continue").setValue(knot.getId());
-
}
}
diff --git a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/SelectCollectionStep.java b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/SelectCollectionStep.java
index 920459035d..0fb57efb37 100644
--- a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/SelectCollectionStep.java
+++ b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/SelectCollectionStep.java
@@ -107,7 +107,8 @@ public class SelectCollectionStep extends AbstractSubmissionStep
try
{
Collection[] collections; // List of possible collections.
- ResolvableIdentifier eid = IdentifierService.resolve(context, handle);
+ String actionURL = contextPath + "/submit/" + knot.getId() + ".continue";
+ ResolvableIdentifier eid = IdentifierService.resolve(context, handle);
DSpaceObject dso = null;
if (eid != null)
@@ -126,7 +127,7 @@ public class SelectCollectionStep extends AbstractSubmissionStep
// Basic form with a drop down list of all the collections
// you can submit too.
- Division div = body.addInteractiveDivision("select-collection",contextPath+"/submit",Division.METHOD_POST,"primary submission");
+ Division div = body.addInteractiveDivision("select-collection",actionURL,Division.METHOD_POST,"primary submission");
div.setHead(T_submission_head);
List list = div.addList("select-collection", List.TYPE_FORM);
@@ -146,8 +147,6 @@ public class SelectCollectionStep extends AbstractSubmissionStep
Button submit = list.addItem().addButton("submit");
submit.setValue(T_submit_next);
-
- div.addHidden("submission-continue").setValue(knot.getId());
}
catch (IdentifierException e)
{
diff --git a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/UploadStep.java b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/UploadStep.java
index 16e2ce41a6..6ad8f06fdf 100644
--- a/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/UploadStep.java
+++ b/dspace-xmlui/dspace-xmlui-api/src/main/java/org/dspace/app/xmlui/aspect/submission/submit/UploadStep.java
@@ -186,7 +186,7 @@ public class UploadStep extends AbstractSubmissionStep
// Get a list of all files in the original bundle
Item item = submission.getItem();
Collection collection = submission.getCollection();
- String actionURL = IdentifierService.getURL(collection).toString() + "/submit";
+ String actionURL = IdentifierService.getURL(collection).toString() + "/submit/" + knot.getId() + ".continue";
boolean workflow = submission instanceof WorkflowItem;
Bundle[] bundles = item.getBundles("ORIGINAL");
Bitstream[] bitstreams = new Bitstream[0];
@@ -324,9 +324,6 @@ public class UploadStep extends AbstractSubmissionStep
// Part C:
// add standard control/paging buttons
addControlButtons(upload);
-
- div.addHidden("submission-continue").setValue(knot.getId());
-
}
/**
diff --git a/dspace-xmlui/dspace-xmlui-api/src/main/resources/aspects/Submission/sitemap.xmap b/dspace-xmlui/dspace-xmlui-api/src/main/resources/aspects/Submission/sitemap.xmap
index 2350dc2e43..63a307c643 100644
--- a/dspace-xmlui/dspace-xmlui-api/src/main/resources/aspects/Submission/sitemap.xmap
+++ b/dspace-xmlui/dspace-xmlui-api/src/main/resources/aspects/Submission/sitemap.xmap
@@ -109,22 +109,26 @@
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
+
+
diff --git a/dspace-xmlui/dspace-xmlui-api/src/main/resources/aspects/Submission/submission.js b/dspace-xmlui/dspace-xmlui-api/src/main/resources/aspects/Submission/submission.js
index be74601e0b..ec1b6e80e5 100644
--- a/dspace-xmlui/dspace-xmlui-api/src/main/resources/aspects/Submission/submission.js
+++ b/dspace-xmlui/dspace-xmlui-api/src/main/resources/aspects/Submission/submission.js
@@ -273,20 +273,26 @@ function doSubmission()
* workspaceID - the in progress submission's Workspace ID
* stepAndPage - the Step and Page number to start on (e.g. "1.1")
*/
-function submissionControl(collectionHandle, workspaceID, stepAndPage)
+function submissionControl(collectionHandle, workspaceID, initStepAndPage)
{
//load initial submission information
var submissionInfo = getSubmissionInfo(workspaceID);
- var progressIterator = 0;
+ //Initialize a Cocoon Local Page to save current state information
+ //(This lets us handle when users click the browser "back button"
+ // by caching the state of that previous page, etc.)
+ var state = cocoon.createPageLocal();
+ state.progressIterator = 0; //initialize our progress indicator
//this is array of all the steps/pages in current submission process
//it's used to step back and forth between pages!
var stepsInSubmission = getSubmissionSteps(submissionInfo);
//if we didn't have a page passed in, go to first page in process
- if(stepAndPage==null)
- stepAndPage = stepsInSubmission[0];
+ if(initStepAndPage==null)
+ state.stepAndPage = stepsInSubmission[0];
+ else
+ state.stepAndPage = initStepAndPage;
var response_flag = 0;
@@ -294,14 +300,14 @@ function submissionControl(collectionHandle, workspaceID, stepAndPage)
// Loop forever, exit cases such as save, remove, or completed
// will call cocoon.exit() stopping execution.
- cocoon.log.debug("Current step & page=" + stepAndPage, null);
+ cocoon.log.debug("Current step & page=" + state.stepAndPage, null);
cocoon.log.debug("Current ERROR Fields=" + getErrorFields(), null);
//----------------------------------------------------------
// #1: Actually load the next page in the process
//-----------------------------------------------------------
//split out step and page (e.g. 1.2 is page 2 of step 1)
- var fields = String(stepAndPage).split(".");
+ var fields = String(state.stepAndPage).split(".");
var step = fields[0];
var page = fields[1];
@@ -313,7 +319,7 @@ function submissionControl(collectionHandle, workspaceID, stepAndPage)
//Pass it all the info it needs, including any response/error flags
//in case an error occurred
- response_flag = doNextPage(collectionHandle, workspaceID, stepConfig, stepAndPage, response_flag);
+ response_flag = doNextPage(collectionHandle, workspaceID, stepConfig, state.stepAndPage, response_flag);
//----------------------------------------------------------
// #2: Determine which page/step the user should be sent to next
@@ -322,13 +328,13 @@ function submissionControl(collectionHandle, workspaceID, stepAndPage)
// Only step forward to next page if no errors on this page
if ((cocoon.request.get(AbstractProcessingStep.NEXT_BUTTON) || !stepHasUI(stepConfig)) && (response_flag==AbstractProcessingStep.STATUS_COMPLETE))
{
- progressIterator++;
+ state.progressIterator++;
var totalSteps = stepsInSubmission.length;
var inWorkflow = submissionInfo.isInWorkflow();
//check if we've completed the submission
- if(progressIterator >= totalSteps)
+ if(state.progressIterator >= totalSteps)
{
if(inWorkflow==false)
{
@@ -344,8 +350,8 @@ function submissionControl(collectionHandle, workspaceID, stepAndPage)
}
else
{
- stepAndPage = stepsInSubmission[progressIterator];
- cocoon.log.debug("Next Step & Page=" + stepAndPage);
+ state.stepAndPage = stepsInSubmission[state.progressIterator];
+ cocoon.log.debug("Next Step & Page=" + state.stepAndPage);
}
}//User clicked "<- Previous" button
else if (cocoon.request.get(AbstractProcessingStep.PREVIOUS_BUTTON))
@@ -355,13 +361,13 @@ function submissionControl(collectionHandle, workspaceID, stepAndPage)
//Need to find the previous step which HAS a user interface.
while(stepBack)
{
- progressIterator--;
- if(progressIterator<0)
+ state.progressIterator--;
+ if(state.progressIterator<0)
stepBack = false;
- stepAndPage = stepsInSubmission[progressIterator];
+ state.stepAndPage = stepsInSubmission[state.progressIterator];
- var prevStep = String(stepAndPage).split(".")[0];
+ var prevStep = String(state.stepAndPage).split(".")[0];
var prevStepConfig = submissionInfo.getSubmissionConfig().getStep(prevStep);
if(!stepHasUI(prevStepConfig))
@@ -370,7 +376,7 @@ function submissionControl(collectionHandle, workspaceID, stepAndPage)
stepBack = false;
}
- cocoon.log.debug("Previous Step & Page=" + stepAndPage);
+ cocoon.log.debug("Previous Step & Page=" + state.stepAndPage);
}
// User clicked "Save/Cancel" Button
else if (cocoon.request.get(AbstractProcessingStep.CANCEL_BUTTON))
@@ -399,16 +405,16 @@ function submissionControl(collectionHandle, workspaceID, stepAndPage)
//only allow a jump to a page user has already been to
if (newStepAndPage >= 0 && newStepAndPage <= maxStepAndPage)
{
- stepAndPage = newStepAndPage;
+ state.stepAndPage = newStepAndPage;
- cocoon.log.debug("Jump To Step & Page=" + stepAndPage);
+ cocoon.log.debug("Jump To Step & Page=" + state.stepAndPage);
//reset progress iterator
for(var i=0; i