Note: As of Oct. 12, 2017 (commit b96e5b4ae7a77814d7bb13e261e1c3078094eae2), this module and its bundled submodules have changed somewhat. If you are using the DataCite module, you will need to clear your theme cache after pulling in the changes. If you have written your own submodules, you should refer to the API docuemenation files in the main Framework module to see if the changes to its hooks affect your custom submodules.
Utility module that provides a framework for other modules to assign DOIs (Digital Object Identifiers) to objects. This module provides the following:
- a "DOI" subtab under each object's "Mangage" tab
- a "Manage DOIs for Islandora objects" permission
- five Drupal hooks
- a hook for registering custom form validate and submit handlers
- a hook for minting a DOI using an external API
- a hook for persisting a DOI, for example in a datastream or database table
- a hook for updating a DOI's metadata and URL
- a hook for checking for the presence of a DOI in a datastream or other location
This module differs from the Islandora DOI module bundled with Islandora Scholar in that this module and its submodules create new DOIs and manage updating the data associated with a DOI. Scholar's DOI creates new objects from a list of DOIs.
- Islandora
- A submodule to mint the DOIs, such as the included DataCite module
- A submodule to persist the DOI locally, such as the included MODS module or Alex Garnett's DDI DOI module
Same as for any other Drupal module.
Note that, normally, you should enable only one module that implements each of the hook_islandora_doi_framework_mint()
and hook_islandora_doi_framework_persist()
submodule hooks (see below for more information on submodules). If multiple implementations of these hooks exist in enabled modules, the last implementation is the one that is used.
This module does not have any configuration settings of its own. All settings are managed by submodules. It does provide a single permission, "Manage DOIs for Islandora objects", which enables users to access the "DOI" subtab under each object's "Manage" tab.
As described above, submodules are responsible for minting (generating) a DOI (typically, via an API provided by an external organization), for persisting it (typically in a datastream in each object), and for performing any updates to the metadata or URL associated with the DOI. One or more submodules together handle the combination of tasks required to mint a DOI from a specific source and then to persist it in a specific place associated with the Islandora object. The Islandora DOI Framework module defines hooks for accomplishing each of those tasks. These hooks are documented in the islandora_doi_framework.api.php
file and are illustrated in the included DataCite and MODS submodules (and sample submodules). Note that all hooks do not need to be implemented in the same module; in fact, separating the DOI minting functionality and the DOI persisting functionality in separate modules is preferred to allow implementers to mix and match.
Two additional submodules are available that are intended be used during the development and testing of minting and persisting modules:
- A submodule to mint sample DOIs using a dummy DOI prefix, Islandora DOI Framework Sample Mint
- A submodule to persist DOIs to a text file, Islandora DOI Framework Sample Persist
Note that you should only enable a single minting submodule and a single persisting submodule. Therefore, if you enable one or both of these sample submodules, be sure to disable them before enabling your production minting and persisting submodules.
hook_islandora_doi_framework_mint()
and hook_islandora_doi_framework_persist()
are invoked when the islandora_doi_framework_manage_doi
form is submitted. If you want to perform your own validation and submission tasks, you can register form handler functions by implementing hook_islandora_doi_framework_form_handlers()
. Implementing this hook is optional; you only need it if you want to perform your own validation and submission tasks.
Pull requests against this module are welcome, as are submodules (suggestions below). Please open an issue in this module's Github repo before opening a pull request. See CONTRIBUTING.md for more information.
Submodules that mint DOIs from other registration agencies are particularly welcome, as are submodules for persisting DOIs to non-MODS datastreams or other locations.
- Figure out best trigger and workflow for automatically updating metadata associated with a DOI. This should probably not happen every time the source datastream is modified, although that is one option.
- Figure out how to do batch DOI minting and updating (The DataCite module now has a drush script that will so batch minting).
- Submodules that mint DOIs from registration agencies other than DataCite, e.g. CrossRef.
- Submodules that persist DOIs to locations other than MODS and DDI.