This page explains various customization and configuration options that are available within DSpace for the Item Submission user interface.
Table of Contents:
The [dspace]/config/item-submission.xml
contains the submission configurations for both the DSpace JSP user interface (JSPUI) or the DSpace XML user interface
(XMLUI or Manakin). This configuration file contains detailed documentation within the file itself,
which should help you better understand how to best utilize it.
item-submission.xml
<item-submission>
<!-- Where submission processes are mapped to specific Collections -->
<submission-map>
<name-map collection-handle="default" submission-name="traditional" />
...
</submission-map>
<!-- Where "steps" which are used across many submission processes can be
defined in a single place. They can then be referred to by ID later. -->
<step-definitions>
<step id="collection">
<processing-class>org.dspace.submit.step.SelectCollectionStep</processing-class>
<workflow-editable>false</workflow-editable>
</step>
...
</step-definitions>
<!-- Where actual submission processes are defined and given names.
Each <submission-process> has many <step> nodes which are in the
order that the steps should be in.-->
<submission-definitions>
<submission-process name="traditional">
... <!-- Step definitions appear here! -->
</submission-process>
...
</submission-definitions>
</item-submission>
Because this file is in XML format, you should be familiar with XML before editing this file. By default, this file contains the "traditional" Item Submission Process for DSpace, which consists of the following Steps (in this order):
Select Collection -> Initial Questions -> Describe -> Upload -> Verify -> License -> Complete
If you would like to customize the steps used or the ordering of the steps, you can do so within the <submission-definition>
section of the item-submission.xml
.
In addition, you may also specify different Submission Processes for different DSpace Collections. This can be done in the <submission-map>
section.
The item-submission.xml
file itself documents the syntax required to perform these configuration changes.
<step>
) within the item-submission.xml
This section describes how Steps of the Submission Process are defined within the item-submission.xml
.
<step>
definitions<step>
definitions can appear in one of two places within the item-submission.xml
configuration file.
<step-definitions>
section
<step>
definitions
(i.e. steps which are used in multiple <submission-process>
definitions). Steps defined in this section must define
a unique id
which can be used to reference this step.
<step-definitions>
<step id="custom-step">
...
</step>
...
</step-definitions>
<submission-process>
as simply <step id="custom-step"/>
<submission-process>
definition
<submission-process>
definition.
<submission-process>
<step>
...
</step>
</submission-process>
<step>
definitions matters!The ordering of the <step>
tags within a
<submission-process>
definition directly corresponds to the order
in which those steps will appear!
For example, the following defines a Submission Process where the License step directly precedes the Initial Questions step (more information about the structure of the information under each <step> tag can be found in the section on Structure of the <step> Definition below):
<submission-process>
<!--Step 1 will be to Sign off on the License-->
<step>
<heading>submit.progressbar.license</heading>
<processing-class>org.dspace.submit.step.LicenseStep</processing-class>
<jspui-binding>org.dspace.app.webui.submit.step.JSPLicenseStep</jspui-binding>
<xmlui-binding>org.dspace.app.xmlui.aspect.submission.submit.LicenseStep</xmlui-binding>
<workflow-editable>false</workflow-editable>
</step>
<!--Step 2 will be to Ask Initial Questions-->
<step>
<heading>submit.progressbar.initial-questions</heading>
<processing-class>org.dspace.submit.step.InitialQuestionsStep</processing-class>
<jspui-binding>org.dspace.app.webui.submit.step.JSPInitialQuestionsStep</jspui-binding>
<xmlui-binding>org.dspace.app.xmlui.aspect.submission.submit.InitialQuestionsStep</xmlui-binding>
<workflow-editable>true</workflow-editable>
</step>
...[other steps]...
</submission-process>
The same <step> definition is used by both the DSpace JSP user interface (JSPUI) an the DSpace XML user interface (XMLUI or Manakin). Therefore, you will notice each <step> definition contains information specific to each of these two interfaces.
The structure of the <step> Definition is as follows:
<step>
<heading>submit.progressbar.describe</heading>
<processing-class>org.dspace.submit.step.DescribeStep</processing-class>
<jspui-binding>org.dspace.app.webui.submit.step.JSPDescribeStep</jspui-binding>
<xmlui-binding>org.dspace.app.xmlui.aspect.submission.submit.DescribeStep</xmlui-binding>
<workflow-editable>true</workflow-editable>
</step>
Each step
contains the following elements. The required elements are so marked:
heading
Messages.properties
for JSPUI or messages.xml
for XMLUI) which corresponds to
the text that should be displayed in the submission Progress Bar for this step.
This partial I18N key is prefixed within either the Messages.properties or messages.xml file, depending on the interface you are using.
Therefore, to find the actual key, you will need to search for the partial key with the following prefix:
xmlui.Submission.
(e.g. "xmlui.Submission.submit.progressbar.describe" for 'Describe' step)jsp.
(e.g. "jsp.submit.progressbar.describe" for 'Describe' step)processing-class
(Required)org.dspace.submit.AbstractProcessingStep
` class
(or alternatively, extend one of the pre-existing step processing classes in
org.dspace.submit.step.*
)jspui-binding
org.dspace.app.webui.submit.JSPStep
` class.
This property need not be defined if you are using the XMLUI interface, or for steps which
only perform automated processing, i.e. non-interactive steps.
xmlui-binding
org.dspace.app.xmlui.submission.AbstractSubmissionStep
` class.
This property need not be defined if you are using the JSPUI interface, or for steps which
only perform automated processing, i.e. non-interactive steps.
workflow-editable
true
and false
. If undefined, defaults to true
(which
means that workflow reviewers would be allowed to edit information gathered
during that step).The removal of existing steps and reordering of existing steps is a relatively easy process!
Reordering steps
<submission-process>
tag which defines the
Submission Process that you are using. If you are unsure which
Submission Process you are using, it's likely the one with
name="traditional"
, since this is the traditional DSpace
submission process.<step>
tags within that
<submission-process>
tag. Be sure to move the
entire <step>
tag (i.e. everything between
and including the opening <step>
and closing </step>
tags).
<step>
defining the Review/Verify step only allows the user to review
information from steps which appear before it. So, it's
likely you'd want this to appear as one of your last few steps<step>
defining the Initial Questions step should always appear
before the Upload or Describe steps
since it asks questions which help to set up those later steps.Removing one or more steps
<submission-process>
tag which defines the
Submission Process that you are using. If you are unsure which
Submission Process you are using, it's likely the one with
name="traditional"
, since this is the traditional DSpace
submission process.<step>
tags which you
want to remove from that
<submission-process>
tag. Be sure to comment out the
entire <step>
tag (i.e. everything between
and including the opening <step>
and closing </step>
tags).
<step>
defining the Initial Questions step, you should be aware
that this may affect your Describe and Upload steps!
The Initial Questions step asks questions which
help to initialize these later steps. If you decide to remove
the Initial Questions step you may wish to create
a custom, automated step which will provide default answers
for the questions asked!Assigning a custom submission process to a Collection in DSpace involves working with the submission-map
section of the item-submission.xml
. For a review of the structure of the item-submission.xml
see the section above on Understanding the Submission Configuration File.
Each name-map
element within submission-map
associates a collection with the name of a submission definition.
Its collection-handle
attribute is the Handle of the collection.
Its submission-name
attribute is the submission definition name,
which must match the name
attribute of a submission-process
element (in the submission-definitions
section of item-submission.xml
.
For example, the following fragment shows how the collection with handle "12345.6789/42" is assigned the "custom" submission process:
<submission-map> <name-map collection-handle="12345.6789/42" submission-name="custom" /> ... </submission-map> <submission-definitions> <submission-process name="custom"> ... </submission-definitions>
It's a good idea to keep the definition of the default
name-map from the example input-forms.xml
so there is always a default for collections which do not have a custom form set.
You will need the handle of a collection in order to assign it a custom form set. To discover the handle, go to the "Communities & Collections" page under "Browse" in the left-hand menu on your DSpace home page. Then, find the link to your collection. It should look something like:
http://myhost.my.edu/dspace/handle/12345.6789/42
The underlined part of the URL is the handle. It should look familiar to any DSpace administrator. That is what goes in the collection-handle
attribute of your name-map
element.
This section explains how to customize the Web forms used by submitters and editors to enter and modify the metadata for a new item.
These metadata web forms are controlled by the Describe step within the Submission Process. However, they are
also configurable via their own XML configuration file (input-forms.xml
).
You can customize the "default" metadata forms used by all collections, and also create alternate sets of metadata forms and assign them to specific collections. In creating custom metadata forms, you can choose:
N.B.The cosmetic and ergonomic details of metadata entry fields remain the same as the fixed metadata pages in previous DSpace releases, and can only be altered by modifying the appropriate stylesheet and JSP pages.
All of the custom metadata-entry forms for a DSpace instance are controlled by a single XML file, input-forms.xml
, in the config
subdirectory under the DSpace home. DSpace comes with a sample configuration that implements the traditional metadata-entry forms, which also serves as a well-documented example. The rest of this section explains how to create your own sets of custom forms.
The description of a set of pages through which submitters enter their metadata is called a form (although it is actually a set of forms, in the HTML sense of the term). A form is identified by a unique symbolic name. In the XML structure, the form is broken down into a series of pages: each of these represents a separate Web page for collecting metadata elements.
To set up one of your DSpace collections with customized submission forms, first you make an entry in the form-map. This is effectively a table that relates a collection to a form set, by connecting the collection's Handle to the form name. Collections are identified by handle because their names are mutable and not necessarily unique, while handles are unique and persistent.
A special map entry, for the collection handle "default", defines the default form set. It applies to all collections which are not explicitly mentioned in the map. In the example XML this form set is named traditional
(for the "traditional" DSpace user interface) but it could be named anything.
input-forms.xml
The XML configuration file has a single top-level element, input-forms
, which contains three elements in a specific order. The outline is as follows:
<input-forms> <-- Map of Collections to Form Sets --> <form-map> <name-map collection-handle="default" form-name="traditional" /> ... </form-map> <-- Form Set Definitions --> <form-definitions> <form name="traditional"> ... </form-definitions> <-- Name/Value Pairs used within Multiple Choice Widgets --> <form-value-pairs> <value-pairs value-pairs-name="common_iso_languages" dc-term="language_iso"> ... </form-value-pairs> </input-forms>
Each name-map
element within form-map
associates a collection with the name of a form set. Its collection-handle
attribute is the Handle of the collection, and its form-name
attribute is the form set name, which must match the name
attribute of a form
element.
For example, the following fragment shows how the collection with handle "12345.6789/42" is attached to the "TechRpt" form set:
<form-map> <name-map collection-handle="12345.6789/42" form-name="TechRpt" /> ... </form-map> <form-definitions> <form name="TechRept"> ... </form-definitions>
It's a good idea to keep the definition of the default
name-map from the example input-forms.xml
so there is always a default for collections which do not have a custom form set.
You will need the handle of a collection in order to assign it a custom form set. To discover the handle, go to the "Communities & Collections" page under "Browse" in the left-hand menu on your DSpace home page. Then, find the link to your collection. It should look something like:
http://myhost.my.edu/dspace/handle/12345.6789/42
The underlined part of the URL is the handle. It should look familiar to any DSpace administrator. That is what goes in the collection-handle
attribute of your name-map
element.
You can add a new form set by creating a new form
element within the form-definitions
element. It has one attribute, name
, which as seen above must match the value of the name-map
for the collections it is to be used for.
The content of the form
is a sequence of page
elements. Each of these corresponds to a Web page of forms for entering metadata elements, presented in sequence between the initial "Describe" page and the final "Verify" page (which presents a summary of all the metadata collected).
A form
must contain at least one and at most six pages. They are presented in the order they appear in the XML. Each page
element must include a number
attribute, that should be its sequence number, e.g.
<page number="1">
The page
element, in turn, contains a sequence of field
elements. Each field defines an interactive dialog where the submitter enters one of the Dublin Core metadata items.
Each field
contains the following elements, in the order indicated. The required sub-elements are so marked:
dc-schema
(Required)dc
for Dublin Core. This value must match the value of the schema
element defined in dublin-core-types.xml
dc-element
(Required)contributor
.dc-qualifier
contributor.advisor
the value of this element would be advisor
. Leaving this out means the input is for an unqualified DC element.repeatable
true
when multiple values of this field are allowed, false
otherwise. When you mark a field repeatable, the UI servlet will add a control to let the user ask for more fields to enter additional values. Intended to be used for arbitrarily-repeating fields such as subject keywords, when it is impossible to know in advance how many input boxes to provide.label
(Required)Your Advisor's Name
".input-type
(Required)subject
item.
Note: The 'twobox' input type is rendered the same as a 'onebox' in the XML-UI, but both allow for ease of adding multiple values.value-pairs-name
attribute to specify a list of menu entries from which to choose. Use this to make a choice from a restricted set of options, such as for the language
item.identifier
field. Note: As for the dropdown
type, you must include the value-pairs-name
attribute to specify a menu choice list.repeatable
attribute is set to true
, a list of checkboxes is displayed. If the repeatable
attribute is set to false
, a list of radio buttons is displayed. Note: You must also include a value for the value-pairs-name
attribute to specify a list of values from which to choose.hint
(Required)required
<required>You must enter a title.</required>
Note that leaving the
required element empty will not mark a field as required, e.g.:<required></required>
visibility
<visibility>workflow</visibility>
Look at the example input-forms.xml
and experiment with a a trial custom form to learn this specification language thoroughly. It is a very simple way to express the layout of data-entry forms, but the only way to learn all its subtleties is to use it.
For the use of controlled vocabularies see the Configuring Controlled Vocabularies section.
You may notice that some fields are automatically skipped when a custom form page is displayed, depending on the kind of item being submitted. This is because the DSpace user-interface engine skips Dublin Core fields which are not needed, according to the initial description of the item. For example, if the user indicates there are no alternate titles on the first "Describe" page (the one with a few checkboxes), the input for the title.alternative
DC element is automatically elided, even on custom submission pages.
title.alternative
field.date.issued
publisher
identifier.citation
Conversely, if the metadata fields controlled by a checkbox are not mentioned in the custom form, the checkbox is elided from the initial page to avoid confusing or misleading the user.
The two relevant checkbox entries are "The item has more than one title, e.g. a translated title", and "The item has been published or publicly distributed before". The checkbox for multiple titles trigger the display of the field with dc-element equal to 'title' and dc-qualifier equal to 'alternative'. If the controlling collection's form set does not contain this field, then the multiple titles question will not appear on the initial questions page.
Value-Pairs
value-pairs
element to the contents of form-value-pairs
. It has the following required attributes:
value-pairs-name
-- Name by which an input-type
refers to this list.dc-term
-- Qualified Dublin Core field for which this choice list is selecting a value.value-pairs
element contains a sequence of pair
sub-elements, each of which in turn contains two elements:
displayed-value
-- Name shown (on the web page) for the menu entry.stored-value
-- Value stored in the DC element when this entry is chosen.Unlike the HTML select
tag, there is no way to indicate one of the entries should be the default, so the first entry is always the default choice.
Here is a menu of types of common identifiers:
<value-pairs value-pairs-name="common_identifiers" dc-term="identifier"> <pair> <displayed-value>Gov't Doc #</displayed-value> <stored-value>govdoc</stored-value> </pair> <pair> <displayed-value>URI</displayed-value> <stored-value>uri</stored-value> </pair> <pair> <displayed-value>ISBN</displayed-value> <stored-value>isbn</stored-value> </pair> </value-pairs>It generates the following HTML, which results in the menu widget below. (Note that there is no way to indicate a default choice in the custom input XML, so it cannot generate the HTML
SELECTED
attribute to mark one of the options as a pre-selected default.)
<select name="identifier_qualifier_0"> <option VALUE="govdoc">Gov't Doc #</option> <option VALUE="uri">URI</option> <option VALUE="isbn">ISBN</option> </select>
You must always restart Tomcat (or whatever servlet container you are using) for changes made to the input-forms.xml
file take effect.
Any mistake in the syntax or semantics of the form definitions, such as poorly formed XML or a reference to a nonexistent field name, will cause a fatal error in the DSpace UI. The exception message (at the top of the stack trace in the dspace.log
file) usually has a concise and helpful explanation of what went wrong. Don't forget to stop and restart the servlet container before testing your fix to a bug.
The Upload step in the DSpace submission process has two configuration options
which can be set with your [dspace]/config/dspace.cfg
configuration file. They are as follows:
upload.max
- The maximum size of a file (in bytes) that can be uploaded from the JSPUI (not applicable for the XMLUI). It defaults to 536870912 bytes (512MB). You may set this to -1 to disable any file size limitation.
webui.submit.upload.required
- Whether or not all users are required to upload a file when they submit an item to DSpace. It defaults to 'true'. When set to 'false' users will see an option to skip the upload step when they submit a new item.First, a brief warning: Creating a new Submission Step requires some Java knowledge, and is therefore recommended to be undertaken by a Java programmer whenever possible
That being said, at a higher level, creating a new Submission Step requires the following (in this relative order):
org.dspace.submit.AbstractProcessingStep
class and
implement all methods defined by that abstract class.org.dspace.app.webui.submit.JSPStep
and implement all methods defined there. It's recommended to use one
of the classes in org.dspace.app.webui.submit.step.*
as a reference.org.dspace.app.webui.submit.JSPStepManager
classreview-[step].jsp
) in the JSP
submit/
directory.org.dspace.app.xmlui.submission.AbstractSubmissionStep
org.dspace.app.xmlui.submission.submit.*
as referencesitem-submission.xml
configuration file.
heading
. See the sections on Configuring Multilingual Support for JSPUI or Configuring Multilingual Support for XMLUI for more details.<step>
definitions
within the item-submission.xml
, see the section above
on Defining Steps (<step>
) within the item-submission.xml
.
Non-interactive steps are ones that have no user interface and only perform backend processing. You may find a need to create non-interactive steps which perform further processing of previously entered information.
To create a non-interactive step, do the following:
org.dspace.submit.AbstractProcessingStep
class. In this class
add any processing which this step will perform.item-submission.xml
at
the place where you wish this step to be called during the submission process.
For example, if you want it to be called immediately after the
existing 'Upload File' step, then place its configuration immediately after
the configuration for that 'Upload File' step. The configuration should look
similar to the following:<step>
<processing-class>org.dspace.submit.step.MyNonInteractveStep</processing-class>
<workflow-editable>false</workflow-editable>
</step>
Note: Non-interactive steps will not appear in the Progress Bar! Therefore, your submitters will not even know they are there. However, because they are not visible to your users, you should make sure that your non-interactive step does not take a large amount of time to finish its processing and return control to the next step (otherwise there will be a visible time delay in the user interface).