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:
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.
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:
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.