Browse Source

Merge branch '8.x-1.x' of https://github.com/roblib/islandora into 8.x-1.x

pull/756/head
Alan Stanley 6 years ago
parent
commit
3068f2eb73
  1. 4
      .github/PULL_REQUEST_TEMPLATE.md
  2. 27
      .travis.yml
  3. 18
      CONTRIBUTING.md
  4. 15
      COPYRIGHT
  5. 299
      README.md
  6. 10
      composer.json
  7. 9
      config/schema/islandora.schema.yml
  8. 46
      islandora.module
  9. 73
      modules/islandora_audio/CONTRIBUTING.md
  10. 38
      modules/islandora_audio/README.md
  11. 3
      modules/islandora_audio/config/schema/islandora_audio.schema.yml
  12. 1
      modules/islandora_audio/tests/src/Functional/GenerateAudioDerivativeTest.php
  13. 73
      modules/islandora_breadcrumbs/CONTRIBUTING.md
  14. 339
      modules/islandora_breadcrumbs/LICENSE
  15. 42
      modules/islandora_breadcrumbs/README.md
  16. 73
      modules/islandora_core_feature/CONTRIBUTING.md
  17. 339
      modules/islandora_core_feature/LICENSE
  18. 41
      modules/islandora_core_feature/README.md
  19. 17
      modules/islandora_core_feature/config/install/core.base_field_override.media.audio.changed.yml
  20. 17
      modules/islandora_core_feature/config/install/core.base_field_override.media.audio.created.yml
  21. 19
      modules/islandora_core_feature/config/install/core.base_field_override.media.audio.name.yml
  22. 19
      modules/islandora_core_feature/config/install/core.base_field_override.media.audio.path.yml
  23. 21
      modules/islandora_core_feature/config/install/core.base_field_override.media.audio.status.yml
  24. 36
      modules/islandora_core_feature/config/install/core.base_field_override.media.audio.thumbnail.yml
  25. 19
      modules/islandora_core_feature/config/install/core.base_field_override.media.audio.uid.yml
  26. 17
      modules/islandora_core_feature/config/install/core.base_field_override.media.file.changed.yml
  27. 17
      modules/islandora_core_feature/config/install/core.base_field_override.media.file.created.yml
  28. 19
      modules/islandora_core_feature/config/install/core.base_field_override.media.file.name.yml
  29. 19
      modules/islandora_core_feature/config/install/core.base_field_override.media.file.path.yml
  30. 21
      modules/islandora_core_feature/config/install/core.base_field_override.media.file.status.yml
  31. 36
      modules/islandora_core_feature/config/install/core.base_field_override.media.file.thumbnail.yml
  32. 19
      modules/islandora_core_feature/config/install/core.base_field_override.media.file.uid.yml
  33. 17
      modules/islandora_core_feature/config/install/core.base_field_override.media.image.changed.yml
  34. 17
      modules/islandora_core_feature/config/install/core.base_field_override.media.image.created.yml
  35. 19
      modules/islandora_core_feature/config/install/core.base_field_override.media.image.name.yml
  36. 19
      modules/islandora_core_feature/config/install/core.base_field_override.media.image.path.yml
  37. 21
      modules/islandora_core_feature/config/install/core.base_field_override.media.image.status.yml
  38. 36
      modules/islandora_core_feature/config/install/core.base_field_override.media.image.thumbnail.yml
  39. 19
      modules/islandora_core_feature/config/install/core.base_field_override.media.image.uid.yml
  40. 17
      modules/islandora_core_feature/config/install/core.base_field_override.media.video.changed.yml
  41. 17
      modules/islandora_core_feature/config/install/core.base_field_override.media.video.created.yml
  42. 19
      modules/islandora_core_feature/config/install/core.base_field_override.media.video.name.yml
  43. 19
      modules/islandora_core_feature/config/install/core.base_field_override.media.video.path.yml
  44. 21
      modules/islandora_core_feature/config/install/core.base_field_override.media.video.status.yml
  45. 36
      modules/islandora_core_feature/config/install/core.base_field_override.media.video.thumbnail.yml
  46. 19
      modules/islandora_core_feature/config/install/core.base_field_override.media.video.uid.yml
  47. 42
      modules/islandora_core_feature/config/install/core.entity_view_display.media.audio.source.yml
  48. 40
      modules/islandora_core_feature/config/install/core.entity_view_display.media.file.source.yml
  49. 45
      modules/islandora_core_feature/config/install/core.entity_view_display.media.image.source.yml
  50. 45
      modules/islandora_core_feature/config/install/core.entity_view_display.media.video.source.yml
  51. 25
      modules/islandora_core_feature/config/install/field.field.media.audio.field_file_size.yml
  52. 29
      modules/islandora_core_feature/config/install/field.field.media.audio.field_media_audio_file.yml
  53. 23
      modules/islandora_core_feature/config/install/field.field.media.audio.field_media_of.yml
  54. 28
      modules/islandora_core_feature/config/install/field.field.media.audio.field_media_use.yml
  55. 21
      modules/islandora_core_feature/config/install/field.field.media.audio.field_mime_type.yml
  56. 25
      modules/islandora_core_feature/config/install/field.field.media.file.field_file_size.yml
  57. 30
      modules/islandora_core_feature/config/install/field.field.media.file.field_media_file.yml
  58. 23
      modules/islandora_core_feature/config/install/field.field.media.file.field_media_of.yml
  59. 28
      modules/islandora_core_feature/config/install/field.field.media.file.field_media_use.yml
  60. 21
      modules/islandora_core_feature/config/install/field.field.media.file.field_mime_type.yml
  61. 25
      modules/islandora_core_feature/config/install/field.field.media.image.field_file_size.yml
  62. 25
      modules/islandora_core_feature/config/install/field.field.media.image.field_height.yml
  63. 41
      modules/islandora_core_feature/config/install/field.field.media.image.field_media_image.yml
  64. 23
      modules/islandora_core_feature/config/install/field.field.media.image.field_media_of.yml
  65. 28
      modules/islandora_core_feature/config/install/field.field.media.image.field_media_use.yml
  66. 21
      modules/islandora_core_feature/config/install/field.field.media.image.field_mime_type.yml
  67. 25
      modules/islandora_core_feature/config/install/field.field.media.image.field_width.yml
  68. 25
      modules/islandora_core_feature/config/install/field.field.media.video.field_file_size.yml
  69. 23
      modules/islandora_core_feature/config/install/field.field.media.video.field_media_of.yml
  70. 28
      modules/islandora_core_feature/config/install/field.field.media.video.field_media_use.yml
  71. 29
      modules/islandora_core_feature/config/install/field.field.media.video.field_media_video_file.yml
  72. 21
      modules/islandora_core_feature/config/install/field.field.media.video.field_mime_type.yml
  73. 22
      modules/islandora_core_feature/config/install/field.field.taxonomy_term.islandora_display.field_external_uri.yml
  74. 21
      modules/islandora_core_feature/config/install/field.storage.media.field_original_name.yml
  75. 19
      modules/islandora_core_feature/config/install/field.storage.node.field_display_hints.yml
  76. 17
      modules/islandora_core_feature/config/install/language.content_settings.media.audio.yml
  77. 17
      modules/islandora_core_feature/config/install/language.content_settings.media.file.yml
  78. 17
      modules/islandora_core_feature/config/install/language.content_settings.media.image.yml
  79. 17
      modules/islandora_core_feature/config/install/language.content_settings.media.video.yml
  80. 15
      modules/islandora_core_feature/config/install/language.content_settings.taxonomy_term.islandora_media_use.yml
  81. 15
      modules/islandora_core_feature/config/install/language.content_settings.taxonomy_term.islandora_models.yml
  82. 18
      modules/islandora_core_feature/config/install/media.type.audio.yml
  83. 18
      modules/islandora_core_feature/config/install/media.type.file.yml
  84. 20
      modules/islandora_core_feature/config/install/media.type.image.yml
  85. 18
      modules/islandora_core_feature/config/install/media.type.video.yml
  86. 48
      modules/islandora_core_feature/config/install/rdf.mapping.media.audio.yml
  87. 48
      modules/islandora_core_feature/config/install/rdf.mapping.media.file.yml
  88. 54
      modules/islandora_core_feature/config/install/rdf.mapping.media.image.yml
  89. 48
      modules/islandora_core_feature/config/install/rdf.mapping.media.video.yml
  90. 30
      modules/islandora_core_feature/config/install/rdf.mapping.taxonomy_term.islandora_display.yml
  91. 30
      modules/islandora_core_feature/config/install/rdf.mapping.taxonomy_term.islandora_media_use.yml
  92. 30
      modules/islandora_core_feature/config/install/rdf.mapping.taxonomy_term.islandora_models.yml
  93. 8
      modules/islandora_core_feature/config/install/taxonomy.vocabulary.islandora_display.yml
  94. 1
      modules/islandora_core_feature/config/install/taxonomy.vocabulary.islandora_media_use.yml
  95. 1
      modules/islandora_core_feature/config/install/taxonomy.vocabulary.islandora_models.yml
  96. 255
      modules/islandora_core_feature/config/install/views.view.members.yml
  97. 4
      modules/islandora_core_feature/config/install/views.view.reorder_children.yml
  98. 26
      modules/islandora_core_feature/islandora_core_feature.features.yml
  99. 4
      modules/islandora_core_feature/islandora_core_feature.info.yml
  100. 73
      modules/islandora_iiif/CONTRIBUTING.md
  101. Some files were not shown because too many files have changed in this diff Show More

4
.github/PULL_REQUEST_TEMPLATE.md

@ -18,7 +18,7 @@ A in-depth description of the changes made by this PR. Technical details and
* Does this change require documentation to be updated?
* Does this change add any new dependencies?
* Does this change require any other modifications to be made to the repository
(ie. Regeneration activity, etc.)?
(i.e. Regeneration activity, etc.)?
* Could this change impact execution of existing code?
# How should this be tested?
@ -34,4 +34,4 @@ Any additional information that you think would be helpful when reviewing this
PR.
# Interested parties
Tag (@ mention) interested parties or, if unsure, @Islandora-CLAW/committers
Tag (@ mention) interested parties or, if unsure, @Islandora/8-x-committers

27
.travis.yml

@ -1,25 +1,29 @@
sudo: true
language: php
php:
- 7.1
- 7.2
services:
- mysql
- 7.3
matrix:
fast_finish: true
allow_failures:
- php: 7.3
services:
- mysql
branches:
only:
- /^8.x/
- /master/
before_install:
- export SCRIPT_DIR=$HOME/CLAW/.scripts
- export SCRIPT_DIR=$HOME/islandora/.scripts
- export DRUPAL_DIR=/opt/drupal
- export COMPOSER_PATH="/home/travis/.phpenv/versions/$TRAVIS_PHP_VERSION/bin/composer"
install:
- git clone https://github.com/Islandora-CLAW/CLAW.git $HOME/CLAW
- git clone https://github.com/Islandora/documentation.git $HOME/islandora
- $SCRIPT_DIR/travis_setup_drupal.sh
- git -C "$TRAVIS_BUILD_DIR" checkout -b travis-testing
- cd $DRUPAL_DIR;
@ -34,11 +38,16 @@ script:
- $SCRIPT_DIR/travis_scripts.sh
- $SCRIPT_DIR/run-tests.sh "islandora"
- $SCRIPT_DIR/run-tests.sh "islandora_breadcrumbs"
- $SCRIPT_DIR/run-tests.sh "islandora_image"
- $SCRIPT_DIR/run-tests.sh "islandora_audio"
- $SCRIPT_DIR/run-tests.sh "islandora_video"
- $SCRIPT_DIR/run-tests.sh "islandora_text_extraction"
after_success:
- bash <(curl -s https://codecov.io/bash)
notifications:
irc:
channels:
- "irc.freenode.org#islandora"
slack:
on_success: change
on_failure: always
skip_join: true
secure: $SLACK_NOTIFICATION_KEY

18
CONTRIBUTING.md

@ -2,29 +2,29 @@
If you are reading this document then you are interested in contributing to Islandora 8. All contributions are welcome: use-cases, documentation, code, patches, bug reports, feature requests, etc. You do not need to be a programmer to speak up!
We also have an irc channel -- #islandora -- on freenode.net. Feel free to hang out there, ask questions, and help others out if you can.
We also have an IRC channel -- #islandora -- on freenode.net. Feel free to hang out there, ask questions, and help others out if you can.
Please note that this project operates under the [Islandora Community Code of Conduct](http://islandora.ca/codeofconduct). By participating in this project you agree to abide by its terms.
## Workflows
The group meets each Wednesday at 1:00 PM Eastern. Meeting notes and announcements are posted to the [Islandora community list](https://groups.google.com/forum/#!forum/islandora) and the [Islandora developers list](https://groups.google.com/forum/#!forum/islandora-dev). You can view meeting agendas, notes, and call-in information [here](https://github.com/Islandora-CLAW/CLAW/wiki#islandora-claw-tech-calls). Anybody is welcome to join the calls, and add items to the agenda.
The group meets each Wednesday at 1:00 PM Eastern. Meeting notes and announcements are posted to the [Islandora community list](https://groups.google.com/forum/#!forum/islandora) and the [Islandora developers list](https://groups.google.com/forum/#!forum/islandora-dev). You can view meeting agendas, notes, and call-in information [here](https://github.com/Islandora/documentation/wiki#islandora-8-tech-calls). Anybody is welcome to join the calls, and add items to the agenda.
### Use cases
If you would like to submit a use case to the Islandora 8 project, please submit an issue [here](https://github.com/Islandora-CLAW/CLAW/issues/new) using the [Use Case template](https://github.com/Islandora-CLAW/CLAW/wiki/Use-Case-template), prepending "Use Case:" to the title of the issue.
If you would like to submit a use case to the Islandora 8 project, please submit an issue [here](https://github.com/Islandora/documentation/issues/new) using the [Use Case template](https://github.com/Islandora/documentation/wiki/Use-Case-template), prepending "Use Case:" to the title of the issue.
### Documentation
You can contribute documentation in two different ways. One way is to create an issue [here](https://github.com/Islandora-CLAW/CLAW/issues/new), prepending "Documentation:" to the title of the issue. Another way is by pull request, which is the same process as [Contribute Code](https://github.com/Islandora-CLAW/CLAW/blob/master/CONTRIBUTING.md#contribute-code). All documentation resides in [`docs`](https://github.com/Islandora-CLAW/CLAW/tree/master/docs).
You can contribute documentation in two different ways. One way is to create an issue [here](https://github.com/Islandora/documentation/issues/new), prepending "Documentation:" to the title of the issue. Another way is by pull request, which is the same process as [Contribute Code](https://github.com/Islandora/documentation/blob/master/CONTRIBUTING.md#contribute-code). All documentation resides in [`docs`](https://github.com/Islandora/documentation/tree/master/docs).
### Request a new feature
To request a new feature you should [open an issue in the Islandora 8 repository](https://github.com/Islandora-CLAW/CLAW/issues/new) or create a use case (see the _Use cases_ section above), and summarize the desired functionality. Prepend "Enhancement:" if creating an issue on the project repo, and "Use Case:" if creating a use case.
To request a new feature you should [open an issue in the Islandora 8 repository](https://github.com/Islandora/documentation/issues/new) or create a use case (see the _Use cases_ section above), and summarize the desired functionality. Prepend "Enhancement:" if creating an issue on the project repo, and "Use Case:" if creating a use case.
### Report a bug
To report a bug you should [open an issue in the Islandora 8 repository](https://github.com/Islandora-CLAW/CLAW/issues/new) that summarizes the bug. Prepend the label "Bug:" to the title of the issue.
To report a bug you should [open an issue in the Islandora 8 repository](https://github.com/Islandora/documentation/issues/new) that summarizes the bug. Prepend the label "Bug:" to the title of the issue.
In order to help us understand and fix the bug it would be great if you could provide us with:
@ -44,7 +44,7 @@ Before you set out to contribute code you will need to have completed a [Contrib
_If you are interested in contributing code to Islandora but do not know where to begin:_
In this case you should [browse open issues](https://github.com/Islandora-CLAW/CLAW/issues) and check out [use cases](https://github.com/Islandora-CLAW/CLAW/labels/use%20case).
In this case you should [browse open issues](https://github.com/Islandora/documentation/issues) and check out [use cases](https://github.com/Islandora/documentation/labels/use%20case).
If you are contributing Drupal code, it must adhere to [Drupal Coding Standards](https://www.drupal.org/coding-standards); Travis CI will check for this on pull requests.
@ -53,7 +53,7 @@ Contributions to the Islandora codebase should be sent as GitHub pull requests.
* For _small patches_, feel free to submit pull requests directly for those patches.
* For _larger code contributions_, please use the following process. The idea behind this process is to prevent any wasted work and catch design issues early on.
1. [Open an issue](https://github.com/Islandora-CLAW/CLAW/issues), prepending "Enhancement:" in the title if a similar issue does not exist already. If a similar issue does exist, then you may consider participating in the work on the existing issue.
1. [Open an issue](https://github.com/Islandora/documentation/issues), prepending "Enhancement:" in the title if a similar issue does not exist already. If a similar issue does exist, then you may consider participating in the work on the existing issue.
2. Comment on the issue with your plan for implementing the issue. Explain what pieces of the codebase you are going to touch and how everything is going to fit together.
3. Islandora committers will work with you on the design to make sure you are on the right track.
4. Implement your issue, create a pull request (see below), and iterate from there.
@ -64,7 +64,7 @@ Take a look at [Creating a pull request](https://help.github.com/articles/creati
1. [Fork](https://help.github.com/articles/fork-a-repo) this repository to your personal or institutional GitHub account (depending on the CLA you are working under). Be cautious of which branches you work from though (you'll want to base your work off master, or for Drupal modules use the most recent version branch). See [Fork a repo](https://help.github.com/articles/fork-a-repo) for detailed instructions.
2. Commit any changes to your fork.
3. Send a [pull request](https://help.github.com/articles/creating-a-pull-request) using the [pull request template](https://github.com/Islandora-CLAW/CLAW/blob/master/.github/PULL_REQUEST_TEMPLATE.md) to the Islandora GitHub repository that you forked in step 1. If your pull request is related to an existing issue -- for instance, because you reported a [bug/issue](https://github.com/Islandora-CLAW/CLAW/issues) earlier -- prefix the title of your pull request with the corresponding issue number (e.g. `issue-123: ...`). Please also include a reference to the issue in the description of the pull. This can be done by using '#' plus the issue number like so '#123', also try to pick an appropriate name for the branch in which you're issuing the pull request from.
3. Send a [pull request](https://help.github.com/articles/creating-a-pull-request) using the [pull request template](https://github.com/Islandora/documentation/blob/master/.github/PULL_REQUEST_TEMPLATE.md) to the Islandora GitHub repository that you forked in step 1. If your pull request is related to an existing issue -- for instance, because you reported a [bug/issue](https://github.com/Islandora/documentation/issues) earlier -- prefix the title of your pull request with the corresponding issue number (e.g. `issue-123: ...`). Please also include a reference to the issue in the description of the pull. This can be done by using '#' plus the issue number like so '#123', also try to pick an appropriate name for the branch in which you're issuing the pull request from.
You may want to read [Syncing a fork](https://help.github.com/articles/syncing-a-fork) for instructions on how to keep your fork up to date with the latest changes of the upstream (official) repository.

15
COPYRIGHT

@ -0,0 +1,15 @@
Copyright (C) 2015 The Islandora Foundation and contributors
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with this program as the file LICENSE.txt; if not, please see
http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.

299
README.md

@ -1,234 +1,119 @@
# ![Islandora](https://cloud.githubusercontent.com/assets/2371345/25624809/f95b0972-2f30-11e7-8992-a8f135402cdc.png) Islandora
[![Build Status][1]](https://travis-ci.com/Islandora-CLAW/islandora)
[![Contribution Guidelines][2]](./CONTRIBUTING.md)
[![LICENSE][3]](./LICENSE)
## Introduction
Islandora is a module that turns a Drupal 8 site into a control panel for your digital repository. Through a user
interface, it allows repository administrators to
- Persist digital content in a Fedora repository
- Model digital content using core Drupal entities (nodes, media, files, and taxonomy terms). Currently, there is
support for
- collections
- images
- binary files (including PDfs)
- audio
- video
- Design forms for editing metadata
- Control the display and theming of digital content
- Perform full text searching of content and metadata
- Bulk ingest content (using Drupal's migrate framework)
- Administer fine grained access control
- Index RDF metadata in a triplestore
- Generate derivative files, such as web quality represenations.
- Currently, only image derivatives are supported (requires islandora_image), but more to come.
- Apply bulk operations to lists of content (re-index content, regenerate derivatives, etc...)
- And much, much more...
Content in an Islandora repository is treated as ordinary Drupal content, so the entire Drupal ecosystem of contributed
modules is at your disposal. In fact, Islandora uses many contributed modules itself, including the extremely powerful
and flexible `context` module. The `context` module allows users to do many things through a UI that normally would
require programming custom modules or themes. Want to show certain users a simplified form for data entry? Want to
give each collection a different theme? Want to give anonymous users a restricted view? All of this can be done using
the `context` module. It is similar to the `rules` module, and it allows repository administrators to filter repository events (view, create,
update, delete, etc...) by the criteria of their choice and respond by executing configurable actions.
## Requirements / Installation
Setting up a full digital repsository is a daunting task involving many moving parts on one or more servers. To make things
easier to get started, you can fully bootstrap a complete repository solution using our Ansible installer, claw-playbook.
It can install both to a local Vagrant environment for development purposes, or it can install to one or more remote servers
by providing your own playbook. By default you'll get one server with everything on it (i.e. the kitchen sink install). But
we have broken down each component into its own Ansible role, so more advanced users can create customized builds containing
only what their needs require. See the README for more details.
## Configuration
If you want to get up and running as quickly as possible, import the `islanora_demo_feature` feature to install example configuration
and bootstrap your site. If you're starting from scratch, then _at a minimum_, you must:
1. Set the url to your message broker at `admin/config/islandora`
1. Enable the `islandora_core_feature` module, then visit `admin/config/development/features` and import its config. It contains
everything required for basic content modeling. You can also use drush to import the feature
`drush -y fim --bundle=islandora islandora_core_feature`.
1. Run the migration to load the taxonomy terms required by Islandora. This can be done by visiting `admin/structure/migrate`, or executed via drush
`drush -l http://localhost:8000 mim --group=islandora`.
## Content Modeling
Islandora uses core Drupal 8 functionality for modeling content. Most core content entities are utilized:
1. Nodes
1. Nodes hold descriptive and structural metadata about objects in your repository. Membership between nodes (e.g. members
of a collection, or pages of a book) is denoted with `field_member_of`, which is provided by `islandora_core_feature`.
Additional behavior can be controlled by tagging nodes with taxonomy terms using `field_tags`.
1. Media
1. Media hold technical metadata for the files they represent. There are four core media types, used for audio, video,
images, and generic files. Media are associated with a node using `field_media_of`, which is provided by `islandora_core_feature`.
The role of the media is indicated by tagging it with a taxonomy term using `field_tags`. For example,
tagging a media as 'Preservation Master' indicates that it is the master archival copy of a file, while 'Service File' would
indicate that it is a lower quality derivative intended to be shown to the average user.
1. Files
1. Files hold the binary conents that are described by Media. They often created along with a media to hold its technical metadata,
but can be created and then later associted with a Media in a separate process.
1. Taxonomy Terms
1. Taxonomy terms are used to tag nodes and media so they can be classified, organized, and acted upon. They must contain a
`field_external_uri` field that holds an external URI for the term from a controlled vocabulary / ontology. The `islandora_core_feature`
provides a migration that can be executed to load all of the required terms for basic use into your repository.
The `islandora_demo_feature` provides a complete example of content modeling in Islandora for audio, video, files, and images, including
tiff and JP2 support (e.g. large images). This includes some more advanced techniques, like switching display modes based on
taxonomy terms so 'images' and 'large images' can share a metadata profile but be displayed differently. It also includes
example actions for generating image derivatives (using the `islandora_image` module). You may not, however, want all of this functionality.
In fact, this feature is not meant to be the end-all-be-all of content modeling, but serves as an example of how it's done using
Islandora. You can take as much or as little of it as you'd like. If you're doing you're own thing, the gist is:
- When making your own content type, it will require `field_member_of`, `field_tags`, and an rdf mapping.
- When making your own media type, it will require `field_media_of`, `field_tags`, `field_mimetype`, an rdf mapping, and a field to hold the file.
You can re-use `field_media_file`, `field_media_image`, `field_media_audio`, and `field_media_video` to do so. Media should
always be tagged (`field_tags`) with a term from the pcdmuse ontology (preservation master, service file, thumbnail image) to denote its usage.
- When making your own taxonomy vocabulary, its terms will require `field_external_uri` and an rdf mapping.
- All rdf mappings need to map the `changed` time to `schema:dateModified`.
## Actions
Islandora provides several useful actions for repository administrators that can be configured and executed through the user
interface. Any view can expose bulk operations by adding a `Bulk update` field to its display.
Islandora also provides a thin wrapper around Actions so that they can be used in conjunction with the `context` module.
Repository events for indexing, deletion, and derivative generation are all handled by selecting one or more preconfigured
actions using the `context` user interface.
### Delete Media
You can use the `Delete media` action to bulk delete media, but not delete source files.
### Delete Media and File(s)
You can use the `Delete media and file(s)` action to bulk delete media and their source files.
### Emit Node/Media/File/Term Event
You can use `Emit a * event to a queue/topic` actions to produce messages so background processes can consume them and
perform work. The `islandora_core_feature` contains several preconfigured actions to perform indexing and removal
operations for Fedora and a triplestore.
## REST API
Islandora has a light, mostly RESTful HTTP API that relies heavily on Drupal's core Rest module. The majority of what Islandora
provides is Link headers in GET and HEAD responses. These headers can be used to locate related resources and navigate your
repository. In addition to these link headers, there are additional endpoints exposed for uploading files, as well as a couple
of useful REST exports.
### Exposed Headers
#### Referenced taxonomy terms (Nodes and Media)
The taxonomy terms used to tag content are exposed as link headers with `rel="tag"` and a title equal to the taxonomy term's display
label. If the term has an external uri in a controlled vocabulary, then that uri is provided. Otherwise, the local Drupal uri is
provided. For example, if a piece of content is tagged with `taxonomy/term/1`, which has a display label of "Example Term", then the
link header returned in a GET or HEAD response would look like `Link: <http://example.org/taxonomy/term/1>; rel="tag"; title="Example Term"`
If instead the term were to have the `field_external_uri` field with a value of `http://purl.org/dc/dcmitype/Collection` then the link
header would look like `Link: <http://purl.org/dc/dcmitype/Collection>; rel="tag"; title="Example Term"`.
#### Referenced entities (Nodes and Media)
Entity reference fields are exposed as link headers with `rel="related"` and a title equal to the entity reference field's display label.
For example, if `http://example.org/node/1` has an entity reference field name "Associated Content" that references
`http://example.org/node/2`, then the link header returned in a GET or HEAD response would look like
`Link: <http://example.org/node/2>; rel="related"; title="Associated Content"`.
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.2-8892BF.svg?style=flat-square)](https://php.net/)
[![Build Status](https://travis-ci.org/Islandora/islandora.png?branch=8.x-1.x)](https://travis-ci.com/Islandora/islandora)
[![Contribution Guidelines](http://img.shields.io/badge/CONTRIBUTING-Guidelines-blue.svg)](./CONTRIBUTING.md)
[![LICENSE](https://img.shields.io/badge/license-GPLv2-blue.svg?style=flat-square)](./LICENSE)
[![codecov](https://codecov.io/gh/Islandora/islandora/branch/8.x-1.x/graph/badge.svg)](https://codecov.io/gh/Islandora/islandora)
#### Associated media (Nodes only)
Media entities that belong to nodes and are tagged with terms from the PCDM Use ontology are exposed as link headers with `rel="related"`
and a title equal to the display label of the taxonomy term. For example, if a Media is tagged as `Preservation Master` indicating
that it is the archival copy, the link header returned in a GET or HEAD response for a node would look like
`Link: <http://example.org/media/1>; rel="related"; title="Preservation Master"`.
#### Source files (Media only)
Files that are the source for Media entities are exposed as Link headers in the GET and HEAD responses with `rel="describes"`. The endpoint
to edit the contents of the source file is also exposed using `rel="edit-media"`. For example, if `http://example.org/media/1` has the source
file `http://example.org/file.txt`, then a GET or HEAD response would contain both
- `Link: <http://example.org/file.txt>; rel="describes"`
- `Link: <http://example.org/media/1/source>; rel="edit-media"`
### Exposed Endpoints
#### /media/{media}/source
You can PUT content to the `/media/{media}/source` endpoint to update the source file for a media. The `Content-Type`
header is required in addition to the PUT body. Requests with empty bodies or no `Content-Type` header will be rejected.
## Introduction
Example usage:
```
curl -u admin:islandora -v -X PUT -H 'Content-Type: image/png' --data-binary @my_image.png localhost:8000/media/1/source
This is the core module of Islandora's digital repository ecosystem. The `islandora` module provides:
- Fedora 5 integration via the [flysystem](https://drupal.org/project/flysystem) module
- Integration with the [context](https://drupal.org/project/context) module to control your digital repository's behaviour
- Publishing messages to a queue so they can be processed in the background
`islandora` contains several submodules and features:
- `islandora_core_feature` (**required**)
- Configuration required by the `islandora` module
- `islandora_image`
- Integrates with a [Houdini](https://github.com/Islandora/Crayfish/tree/dev/Houdini) (Imagemagick) server for image processing
- `islandora_audio` and `islandora_video`
- Integrate with a [Homarus](https://github.com/Islandora/Crayfish/tree/dev/Homarus) (`ffmpeg`) server for audio/video processing
- `islandora_text_extraction` and `islandora_text_extraction_defaults`
- Integrate with a [Hypercube](https://github.com/Islandora/Crayfish/tree/dev/Hypercube) (`tessseract` and `pdftotext`) server for text extraction
- `islandora_breadcrumbs`
- Provides breadcrumbs following collection structure
- `islandora_iiif`
- Provides IIIF manifests for repository content
## Requirements
Installing via composer will download all required libraries and modules. However, for reference, `islandora` requires the following drupal modules:
- [context](http://drupal.org/project/context)
- [search_api](http://drupal.org/project/search_api)
- [jsonld](http://drupal.org/project/jsonld)
- [jwt](http://drupal.org/project/jwt)
- [filehash](http://drupal.org/project/filehash)
- [prepopulate](http://drupal.org/project/prepopulate)
- [eva](http://drupal.org/project/eva)
- [features](http://drupal.org/project/features)
- [migrate_plus](http://drupal.org/project/migrate_plus)
- [migrate_tools](http://drupal.org/project/migrate_tools)
- [migrate_source_csv](http://drupal.org/project/migrate_source_csv)
- [flysystem](http://drupal.org/project/flysystem)
It also requires the following PHP libraries:
- [Crayfish Commons](https://packagist.org/packages/islandora/crayfish-commons)
- [Stomp PHP](http://drupal.org/project/)
## Installation
For a full digital repository solution, see our [installation documentation](https://islandora.github.io/documentation/installation/).
To download/enable just this module, use the following from the command line:
```bash
$ composer require islandora/islandora
$ drush en islandora_core_feature
$ drush mim islandora_tags
```
#### /node/{node}/media/{media_type}/{taxonomy_term}
You can PUT content to the `/node/{node}/media/{media_type}/{taxonomy_term}` endpoint to create or update Media for Nodes. Media created
in this way will automatically be assigned to the node in the route and tagged with the term in the route. The `Content-Type`
header is expected, as well as a `Content-Disposition` header of the form `attachment; filename="your_filename"` to indicate
the name to give the file if it's new. Requests with empty bodies or that are without `Content-Type` and `Content-Disposition`
headers will be rejected.
For example, to create a new Image media for node 1, and tag it with taxonomy term 1:
```
curl -v -u admin:islandora -H "Content-Type: image/jpeg" -H "Content-Disposition: attachment; filename=\"test.jpeg\"" --data-binary @test.jpeg http://localhost:8000/node/1/media/image/1
```
## Configuration
Or, to update an existing image media that is tagged with taxonomy term 2:
```
curl -v -u admin:islandora -H "Content-Type: image/jpeg" -H "Content-Disposition: attachment; filename=\"test2.jpeg\"" --data-binary @test2.jpeg http://localhost:8000/node/1/media/image/2
```
![image](https://user-images.githubusercontent.com/20773151/67234502-ac171900-f41b-11e9-964e-c7d4cfadbd67.png)
#### /node/{node}/members
You can set the following configuration at `admin/config/islandora/core`:
- Broker URL
- The URL to your message broker (i.e. Activemq)
- JWT Expiry
- Set to increase the amount of time that authorization tokens remain valid. If you have a long running derivative processes or a migration, you may need to set this to be a very long time, e.g. `500d`. Otherwise, it's best to leave it alone.
- Gemini URL
- The URL to your Gemini server, which keeps track of where Islandora content is in Fedora.
- Fedora URL Display
- Selected bundles can display the Fedora URL for repository content.
You can issue GET requests to this endpoint to get a list of members of a node. It is actually a REST export, and requires the `_format` query param. It can (read should) also be paged
like other REST export. For example, to get a paged list of members for a node, ten at a time:
## Documentation
```
curl -v -u admin:islandora http://localhost:8000/node/1/members?_format=json&items_per_page=10&offset=0
```
Further documentation for this module is available on the [Islandora 8 documentation site](https://islandora.github.io/documentation/).
#### /node/{node}/media
## Troubleshooting/Issues
You can issue GET requests to this endpoint to get a list of media of a node. It is actually a REST export, and requires the `_format` query param. Like the members endpoint, it can
be paged, but is less likely to be neccessary as most nodes don't have that many media. For example, to get the full list of media for a node:
Having problems or solved a problem? Check out the Islandora google groups for a solution.
```
curl -v -u admin:islandora http://localhost:8000/node/1/media?_format=json
```
* [Islandora Group](https://groups.google.com/forum/?hl=en&fromgroups#!forum/islandora)
* [Islandora Dev Group](https://groups.google.com/forum/?hl=en&fromgroups#!forum/islandora-dev)
## Maintainers
Current maintainers:
* [Diego Pino](https://github.com/diegopino)
* [Jared Whiklo](https://github.com/whikloj)
* [Danny Lamb](https://github.com/dannylamb)
## Sponsors
* UPEI
* discoverygarden inc.
* LYRASIS
* McMaster University
* University of Limerick
* York University
* University of Manitoba
* Simon Fraser University
* PALS
* American Philosophical Society
* Common Media Inc.
## Development
If you would like to contribute, please get involved by attending our weekly
[Tech Call][4]. We love to hear from you!
If you would like to contribute, please get involved by attending our weekly [Tech Call](https://github.com/Islandora/documentation/wiki). We love to hear from you!
If you would like to contribute code to the project, you need to be covered by
an Islandora Foundation [Contributor License Agreement][5] or
[Corporate Contributor License Agreement][6]. Please see the
[Contributors][7] pages on Islandora.ca for more information.
If you would like to contribute code to the project, you need to be covered by an Islandora Foundation [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). Please see the [Contributors](http://islandora.ca/resources/contributors) pages on Islandora.ca for more information.
We recommend using the [islandora-playbook](https://github.com/Islandora-Devops/islandora-playbook) to get started.
## License
[GPLv2](http://www.gnu.org/licenses/gpl-2.0.txt)
[1]: https://travis-ci.org/Islandora-CLAW/islandora.png?branch=8.x-1.x
[2]: http://img.shields.io/badge/CONTRIBUTING-Guidelines-blue.svg
[3]: https://img.shields.io/badge/license-GPLv2-blue.svg?style=flat-square
[4]: https://github.com/Islandora-CLAW/CLAW/wiki
[5]: http://islandora.ca/sites/default/files/islandora_cla.pdf
[6]: http://islandora.ca/sites/default/files/islandora_ccla.pdf
[7]: http://islandora.ca/resources/contributors

10
composer.json

@ -3,10 +3,9 @@
"description": "Core Islandora module",
"type": "drupal-module",
"keywords": ["Drupal", "Islandora"],
"homepage": "https://github.com/islandora-claw/islandora",
"homepage": "https://github.com/Islandora/islandora",
"support": {
"issues": "https://github.com/islandora-claw/CLAW/issues",
"irc": "irc://irc.freenode.net/islandora"
"issues": "https://github.com/Islandora/documentation/issues"
},
"repositories": [
{
@ -48,11 +47,6 @@
"name": "Daniel Lamb",
"email": "dlamb@islandora.ca",
"role": "Maintainer"
},
{
"name": "Diego Pino",
"email": "dpino@krayon.cl",
"role": "Maintainer"
}
]
}

9
config/schema/islandora.schema.yml

@ -78,6 +78,9 @@ condition.plugin.node_has_term:
uri:
type: text
label: 'Taxonomy Term URI'
logic:
type: string
label: 'Logic (AND or OR)'
condition.plugin.node_has_parent:
type: condition.plugin
@ -95,6 +98,9 @@ condition.plugin.media_has_term:
uri:
type: text
label: 'Taxonomy Term URI'
logic:
type: string
label: 'Logic (AND or OR)'
condition.plugin.parent_node_has_term:
type: condition.plugin
@ -102,6 +108,9 @@ condition.plugin.parent_node_has_term:
uri:
type: text
label: 'Taxonomy Term URI'
logic:
type: string
label: 'Logic (AND or OR)'
condition.plugin.file_uses_filesystem:
type: condition.plugin

46
islandora.module

@ -14,6 +14,7 @@
* @author Diego Pino Navarro <dpino@metro.org> https://github.com/diegopino
*/
use Drupal\Component\Plugin\Exception\PluginNotFoundException;
use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Form\FormStateInterface;
@ -56,11 +57,12 @@ function islandora_rdf_namespaces() {
'owl' => 'http://www.w3.org/2002/07/owl#',
'ore' => 'http://www.openarchives.org/ore/terms/',
'rdf' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
'islandora' => 'http://islandora.ca/CLAW/',
'islandora' => 'http://islandora.ca/',
'pcdm' => 'http://pcdm.org/models#',
'use' => 'http://pcdm.org/use#',
'iana' => 'http://www.iana.org/assignments/relation/',
'premis' => 'http://www.loc.gov/premis/rdf/v1#',
'premis3' => 'http://www.loc.gov/premis/rdf/v3/',
'co' => 'http://purl.org/co/',
];
}
@ -221,7 +223,7 @@ function islandora_file_delete(FileInterface $file) {
function islandora_taxonomy_term_insert(TermInterface $term) {
$utils = \Drupal::service('islandora.utils');
// Execute delete reactions.
// Execute index reactions.
$utils->executeTermReactions('\Drupal\islandora\Plugin\ContextReaction\IndexReaction', $term);
}
@ -231,7 +233,7 @@ function islandora_taxonomy_term_insert(TermInterface $term) {
function islandora_taxonomy_term_update(TermInterface $term) {
$utils = \Drupal::service('islandora.utils');
// Execute delete reactions.
// Execute index reactions.
$utils->executeTermReactions('\Drupal\islandora\Plugin\ContextReaction\IndexReaction', $term);
}
@ -252,6 +254,16 @@ function islandora_jsonld_alter_normalized_array(EntityInterface $entity, array
$context_manager = \Drupal::service('context.manager');
foreach ($context_manager->getActiveReactions('\Drupal\islandora\ContextReaction\NormalizerAlterReaction') as $reaction) {
$reaction->execute($entity, $normalized, $context);
foreach ($context_manager->getActiveContexts() as $context_config) {
try {
if ($context_config->getReaction($reaction->getPluginId())) {
$context['cacheability']->addCacheTags($context_config->getCacheTags());
};
}
catch (PluginNotFoundException $e) {
// Squash :(.
}
}
}
}
@ -352,6 +364,8 @@ function islandora_form_block_form_alter(&$form, FormStateInterface $form_state,
unset($form['visibility']['node_has_parent']);
unset($form['visibility']['media_uses_filesystem']);
unset($form['visibility']['media_has_mimetype']);
unset($form['visibility']['node_is_islandora_object']);
unset($form['visibility']['media_is_islandora_media']);
}
/**
@ -363,14 +377,16 @@ function islandora_entity_extra_field_info() {
$pseudo_bundles = $config_factory->get(IslandoraSettingsForm::GEMINI_PSEUDO);
foreach ($pseudo_bundles as $key) {
list($bundle, $content_entity) = explode(":", $key);
$extra_field[$content_entity][$bundle]['display']['field_gemini_uri'] = [
'label' => t('Fedora URI'),
'description' => t('The URI to the persistent'),
'weight' => 100,
'visible' => TRUE,
];
if (!empty($pseudo_bundles)) {
foreach ($pseudo_bundles as $key) {
list($bundle, $content_entity) = explode(":", $key);
$extra_field[$content_entity][$bundle]['display']['field_gemini_uri'] = [
'label' => t('Fedora URI'),
'description' => t('The URI to the persistent'),
'weight' => 100,
'visible' => TRUE,
];
}
}
return $extra_field;
}
@ -379,11 +395,9 @@ function islandora_entity_extra_field_info() {
* Implements hook_entity_view().
*/
function islandora_entity_view(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display, $view_mode) {
$route_match_item = \Drupal::routeMatch()->getParameters()->all();
// Get the parameter, which might be node, media or taxonomy term.
$current_entity = reset($route_match_item);
// Match exactly to ensure they are the same entity type too.
if ($entity === $current_entity) {
$route_match_item = \Drupal::routeMatch()->getParameters()->get($entity->getEntityTypeId());
// Ensure the entity matches the route.
if ($entity === $route_match_item) {
if ($display->getComponent('field_gemini_uri')) {
$gemini = \Drupal::service('islandora.gemini.lookup');
if ($gemini instanceof GeminiLookup) {

73
modules/islandora_audio/CONTRIBUTING.md

@ -0,0 +1,73 @@
# Welcome!
If you are reading this document then you are interested in contributing to Islandora 8. All contributions are welcome: use-cases, documentation, code, patches, bug reports, feature requests, etc. You do not need to be a programmer to speak up!
We also have an IRC channel -- #islandora -- on freenode.net. Feel free to hang out there, ask questions, and help others out if you can.
Please note that this project operates under the [Islandora Community Code of Conduct](http://islandora.ca/codeofconduct). By participating in this project you agree to abide by its terms.
## Workflows
The group meets each Wednesday at 1:00 PM Eastern. Meeting notes and announcements are posted to the [Islandora community list](https://groups.google.com/forum/#!forum/islandora) and the [Islandora developers list](https://groups.google.com/forum/#!forum/islandora-dev). You can view meeting agendas, notes, and call-in information [here](https://github.com/Islandora/documentation/wiki#islandora-8-tech-calls). Anybody is welcome to join the calls, and add items to the agenda.
### Use cases
If you would like to submit a use case to the Islandora 8 project, please submit an issue [here](https://github.com/Islandora/documentation/issues/new) using the [Use Case template](https://github.com/Islandora/documentation/wiki/Use-Case-template), prepending "Use Case:" to the title of the issue.
### Documentation
You can contribute documentation in two different ways. One way is to create an issue [here](https://github.com/Islandora/documentation/issues/new), prepending "Documentation:" to the title of the issue. Another way is by pull request, which is the same process as [Contribute Code](https://github.com/Islandora/documentation/blob/master/CONTRIBUTING.md#contribute-code). All documentation resides in [`docs`](https://github.com/Islandora/documentation/tree/master/docs).
### Request a new feature
To request a new feature you should [open an issue in the Islandora 8 repository](https://github.com/Islandora/documentation/issues/new) or create a use case (see the _Use cases_ section above), and summarize the desired functionality. Prepend "Enhancement:" if creating an issue on the project repo, and "Use Case:" if creating a use case.
### Report a bug
To report a bug you should [open an issue in the Islandora 8 repository](https://github.com/Islandora/documentation/issues/new) that summarizes the bug. Prepend the label "Bug:" to the title of the issue.
In order to help us understand and fix the bug it would be great if you could provide us with:
1. The steps to reproduce the bug. This includes information about e.g. the Islandora version you were using along with the versions of stack components.
2. The expected behavior.
3. The actual, incorrect behavior.
Feel free to search the issue queue for existing issues (aka tickets) that already describe the problem; if there is such a ticket please add your information as a comment.
**If you want to provide a pull along with your bug report:**
That is great! In this case please send us a pull request as described in the section _Create a pull request_ below.
### Contribute code
Before you set out to contribute code you will need to have completed a [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or be covered by a [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). The signed copy of the license agreement should be sent to <mailto:community@islandora.ca>
_If you are interested in contributing code to Islandora but do not know where to begin:_
In this case you should [browse open issues](https://github.com/Islandora/documentation/issues) and check out [use cases](https://github.com/Islandora/documentation/labels/use%20case).
If you are contributing Drupal code, it must adhere to [Drupal Coding Standards](https://www.drupal.org/coding-standards); Travis CI will check for this on pull requests.
Contributions to the Islandora codebase should be sent as GitHub pull requests. See section _Create a pull request_ below for details. If there is any problem with the pull request we can work through it using the commenting features of GitHub.
* For _small patches_, feel free to submit pull requests directly for those patches.
* For _larger code contributions_, please use the following process. The idea behind this process is to prevent any wasted work and catch design issues early on.
1. [Open an issue](https://github.com/Islandora/documentation/issues), prepending "Enhancement:" in the title if a similar issue does not exist already. If a similar issue does exist, then you may consider participating in the work on the existing issue.
2. Comment on the issue with your plan for implementing the issue. Explain what pieces of the codebase you are going to touch and how everything is going to fit together.
3. Islandora committers will work with you on the design to make sure you are on the right track.
4. Implement your issue, create a pull request (see below), and iterate from there.
### Create a pull request
Take a look at [Creating a pull request](https://help.github.com/articles/creating-a-pull-request). In a nutshell you need to:
1. [Fork](https://help.github.com/articles/fork-a-repo) this repository to your personal or institutional GitHub account (depending on the CLA you are working under). Be cautious of which branches you work from though (you'll want to base your work off master, or for Drupal modules use the most recent version branch). See [Fork a repo](https://help.github.com/articles/fork-a-repo) for detailed instructions.
2. Commit any changes to your fork.
3. Send a [pull request](https://help.github.com/articles/creating-a-pull-request) using the [pull request template](https://github.com/Islandora/documentation/blob/master/.github/PULL_REQUEST_TEMPLATE.md) to the Islandora GitHub repository that you forked in step 1. If your pull request is related to an existing issue -- for instance, because you reported a [bug/issue](https://github.com/Islandora/documentation/issues) earlier -- prefix the title of your pull request with the corresponding issue number (e.g. `issue-123: ...`). Please also include a reference to the issue in the description of the pull. This can be done by using '#' plus the issue number like so '#123', also try to pick an appropriate name for the branch in which you're issuing the pull request from.
You may want to read [Syncing a fork](https://help.github.com/articles/syncing-a-fork) for instructions on how to keep your fork up to date with the latest changes of the upstream (official) repository.
## License Agreements
The Islandora Foundation requires that contributors complete a [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or be covered by a [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). The signed copy of the license agreement should be sent to <a href="mailto:community@islandora.ca?Subject=Contributor%20License%20Agreement" target="_top">community@islandora.ca</a>. This license is for your protection as a contributor as well as the protection of the Foundation and its users; it does not change your rights to use your own contributions for any other purpose. A list of current CLAs is kept [here](https://github.com/Islandora/islandora/wiki/Contributor-License-Agreements).

38
modules/islandora_audio/README.md

@ -1,22 +1,44 @@
# Islandora Video
[![Contribution Guidelines](http://img.shields.io/badge/CONTRIBUTING-Guidelines-blue.svg)](../../CONTRIBUTING.md)
# Islandora Audio
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.2-8892BF.svg?style=flat-square)](https://php.net/)
[![Contribution Guidelines](http://img.shields.io/badge/CONTRIBUTING-Guidelines-blue.svg)](./CONTRIBUTING.md)
[![LICENSE](https://img.shields.io/badge/license-GPLv2-blue.svg?style=flat-square)](./LICENSE)
## Introduction
Islandora Video module for Drupal 8.2.x
Provides actions to convert audio with a [Homarus](https://github.com/Islandora/Crayfish/tree/dev/Homarus) (`ffmpeg`) server.
## Requirements
- `islandora` and `islandora_core_feature`
- A Homarus microservice
- A message broker (e.g. Activemq) for Islandora 8
- An instance of `islandora-connector-derivative` (from [Alpaca](https://github.com/Islandora/Alpaca/tree/dev/islandora-connector-derivative)) configured for Homarus
## Installation
## Maintainers
For a full digital repository solution (including a Homarus microservice), see our [installation documentation](https://islandora.github.io/documentation/installation/).
Current maintainers:
To download/enable just this module, use the following from the command line:
* [Danny Lamb](https://github.com/dannylamb)
```bash
$ composer require islandora/islandora
$ drush en islandora_core_feature
$ drush mim islandora_tags
$ drush en islandora_audio
```
## Documentation
Official documentation is available on the [Islandora 8 documentation site](https://islandora.github.io/documentation/).
## Development
If you would like to contribute, please get involved by attending our weekly [Tech Call](https://github.com/Islandora-CLAW/CLAW/wiki). We love to hear from you!
If you would like to contribute, please get involved by attending our weekly [Tech Call](https://github.com/Islandora/documentation/wiki). We love to hear from you!
If you would like to contribute code to the project, you need to be covered by an Islandora Foundation [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). Please see the [Contributors](http://islandora.ca/resources/contributors) pages on Islandora.ca for more information.
If you would like to contribute code to the project, you need to be covered by an Islandora Foundation [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or [Corporate Contributor Licencse Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). Please see the [Contributors](http://islandora.ca/resources/contributors) pages on Islandora.ca for more information.
We recommend using the [islandora-playbook](https://github.com/Islandora-Devops/islandora-playbook) to get started.
## License

3
modules/islandora_audio/config/schema/islandora_audio.info.yml → modules/islandora_audio/config/schema/islandora_audio.schema.yml

@ -8,6 +8,9 @@ action.configuration.generate_audio_derivative:
event:
type: text
label: 'Event Type'
destination_media_type:
type: text
label: 'Destination media type'
source_term_uri:
type: text
label: 'Source term uri'

1
modules/islandora_audio/tests/src/Functional/GenerateAudioDerivativeTest.php

@ -46,6 +46,7 @@ class GenerateAudioDerivativeTest extends GenerateDerivativeTestBase {
$this->getSession()->getPage()->fillField('edit-label', "Generate audio test derivative");
$this->getSession()->getPage()->fillField('edit-id', "generate_audio_test_derivative");
$this->getSession()->getPage()->fillField('edit-queue', "generate-audio-test-derivative");
$this->getSession()->getPage()->fillField('edit-destination-media-type', $this->testMediaType->label());
$this->getSession()->getPage()->fillField("edit-source-term", $this->preservationMasterTerm->label());
$this->getSession()->getPage()->fillField("edit-derivative-term", $this->serviceFileTerm->label());
$this->getSession()->getPage()->fillField('edit-mimetype', "audio/mpeg");

73
modules/islandora_breadcrumbs/CONTRIBUTING.md

@ -0,0 +1,73 @@
# Welcome!
If you are reading this document then you are interested in contributing to Islandora 8. All contributions are welcome: use-cases, documentation, code, patches, bug reports, feature requests, etc. You do not need to be a programmer to speak up!
We also have an IRC channel -- #islandora -- on freenode.net. Feel free to hang out there, ask questions, and help others out if you can.
Please note that this project operates under the [Islandora Community Code of Conduct](http://islandora.ca/codeofconduct). By participating in this project you agree to abide by its terms.
## Workflows
The group meets each Wednesday at 1:00 PM Eastern. Meeting notes and announcements are posted to the [Islandora community list](https://groups.google.com/forum/#!forum/islandora) and the [Islandora developers list](https://groups.google.com/forum/#!forum/islandora-dev). You can view meeting agendas, notes, and call-in information [here](https://github.com/Islandora/documentation/wiki#islandora-8-tech-calls). Anybody is welcome to join the calls, and add items to the agenda.
### Use cases
If you would like to submit a use case to the Islandora 8 project, please submit an issue [here](https://github.com/Islandora/documentation/issues/new) using the [Use Case template](https://github.com/Islandora/documentation/wiki/Use-Case-template), prepending "Use Case:" to the title of the issue.
### Documentation
You can contribute documentation in two different ways. One way is to create an issue [here](https://github.com/Islandora/documentation/issues/new), prepending "Documentation:" to the title of the issue. Another way is by pull request, which is the same process as [Contribute Code](https://github.com/Islandora/documentation/blob/master/CONTRIBUTING.md#contribute-code). All documentation resides in [`docs`](https://github.com/Islandora/documentation/tree/master/docs).
### Request a new feature
To request a new feature you should [open an issue in the Islandora 8 repository](https://github.com/Islandora/documentation/issues/new) or create a use case (see the _Use cases_ section above), and summarize the desired functionality. Prepend "Enhancement:" if creating an issue on the project repo, and "Use Case:" if creating a use case.
### Report a bug
To report a bug you should [open an issue in the Islandora 8 repository](https://github.com/Islandora/documentation/issues/new) that summarizes the bug. Prepend the label "Bug:" to the title of the issue.
In order to help us understand and fix the bug it would be great if you could provide us with:
1. The steps to reproduce the bug. This includes information about e.g. the Islandora version you were using along with the versions of stack components.
2. The expected behavior.
3. The actual, incorrect behavior.
Feel free to search the issue queue for existing issues (aka tickets) that already describe the problem; if there is such a ticket please add your information as a comment.
**If you want to provide a pull along with your bug report:**
That is great! In this case please send us a pull request as described in the section _Create a pull request_ below.
### Contribute code
Before you set out to contribute code you will need to have completed a [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or be covered by a [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). The signed copy of the license agreement should be sent to <mailto:community@islandora.ca>
_If you are interested in contributing code to Islandora but do not know where to begin:_
In this case you should [browse open issues](https://github.com/Islandora/documentation/issues) and check out [use cases](https://github.com/Islandora/documentation/labels/use%20case).
If you are contributing Drupal code, it must adhere to [Drupal Coding Standards](https://www.drupal.org/coding-standards); Travis CI will check for this on pull requests.
Contributions to the Islandora codebase should be sent as GitHub pull requests. See section _Create a pull request_ below for details. If there is any problem with the pull request we can work through it using the commenting features of GitHub.
* For _small patches_, feel free to submit pull requests directly for those patches.
* For _larger code contributions_, please use the following process. The idea behind this process is to prevent any wasted work and catch design issues early on.
1. [Open an issue](https://github.com/Islandora/documentation/issues), prepending "Enhancement:" in the title if a similar issue does not exist already. If a similar issue does exist, then you may consider participating in the work on the existing issue.
2. Comment on the issue with your plan for implementing the issue. Explain what pieces of the codebase you are going to touch and how everything is going to fit together.
3. Islandora committers will work with you on the design to make sure you are on the right track.
4. Implement your issue, create a pull request (see below), and iterate from there.
### Create a pull request
Take a look at [Creating a pull request](https://help.github.com/articles/creating-a-pull-request). In a nutshell you need to:
1. [Fork](https://help.github.com/articles/fork-a-repo) this repository to your personal or institutional GitHub account (depending on the CLA you are working under). Be cautious of which branches you work from though (you'll want to base your work off master, or for Drupal modules use the most recent version branch). See [Fork a repo](https://help.github.com/articles/fork-a-repo) for detailed instructions.
2. Commit any changes to your fork.
3. Send a [pull request](https://help.github.com/articles/creating-a-pull-request) using the [pull request template](https://github.com/Islandora/documentation/blob/master/.github/PULL_REQUEST_TEMPLATE.md) to the Islandora GitHub repository that you forked in step 1. If your pull request is related to an existing issue -- for instance, because you reported a [bug/issue](https://github.com/Islandora/documentation/issues) earlier -- prefix the title of your pull request with the corresponding issue number (e.g. `issue-123: ...`). Please also include a reference to the issue in the description of the pull. This can be done by using '#' plus the issue number like so '#123', also try to pick an appropriate name for the branch in which you're issuing the pull request from.
You may want to read [Syncing a fork](https://help.github.com/articles/syncing-a-fork) for instructions on how to keep your fork up to date with the latest changes of the upstream (official) repository.
## License Agreements
The Islandora Foundation requires that contributors complete a [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or be covered by a [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). The signed copy of the license agreement should be sent to <a href="mailto:community@islandora.ca?Subject=Contributor%20License%20Agreement" target="_top">community@islandora.ca</a>. This license is for your protection as a contributor as well as the protection of the Foundation and its users; it does not change your rights to use your own contributions for any other purpose. A list of current CLAs is kept [here](https://github.com/Islandora/islandora/wiki/Contributor-License-Agreements).

339
modules/islandora_breadcrumbs/LICENSE

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

42
modules/islandora_breadcrumbs/README.md

@ -0,0 +1,42 @@
# Islandora Breadcrumbs
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.2-8892BF.svg?style=flat-square)](https://php.net/)
[![Contribution Guidelines](http://img.shields.io/badge/CONTRIBUTING-Guidelines-blue.svg)](./CONTRIBUTING.md)
[![LICENSE](https://img.shields.io/badge/license-GPLv2-blue.svg?style=flat-square)](./LICENSE)
## Introduction
Provides breadcrumbs for Islandora content.
## Requirements
- `islandora` and `islandora_core_feature`
## Installation
For a full digital repository solution, see our [installation documentation](https://islandora.github.io/documentation/installation/).
To download/enable just this module, use the following from the command line:
```bash
$ composer require islandora/islandora
$ drush en islandora_core_feature
$ drush mim islandora_tags
$ drush en islandora_breadcrumbs
```
## Documentation
Official documentation is available on the [Islandora 8 documentation site](https://islandora.github.io/documentation/).
## Development
If you would like to contribute, please get involved by attending our weekly [Tech Call](https://github.com/Islandora/documentation/wiki). We love to hear from you!
If you would like to contribute code to the project, you need to be covered by an Islandora Foundation [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). Please see the [Contributors](http://islandora.ca/resources/contributors) pages on Islandora.ca for more information.
We recommend using the [islandora-playbook](https://github.com/Islandora-Devops/islandora-playbook) to get started.
## License
[GPLv2](http://www.gnu.org/licenses/gpl-2.0.txt)

73
modules/islandora_core_feature/CONTRIBUTING.md

@ -0,0 +1,73 @@
# Welcome!
If you are reading this document then you are interested in contributing to Islandora 8. All contributions are welcome: use-cases, documentation, code, patches, bug reports, feature requests, etc. You do not need to be a programmer to speak up!
We also have an IRC channel -- #islandora -- on freenode.net. Feel free to hang out there, ask questions, and help others out if you can.
Please note that this project operates under the [Islandora Community Code of Conduct](http://islandora.ca/codeofconduct). By participating in this project you agree to abide by its terms.
## Workflows
The group meets each Wednesday at 1:00 PM Eastern. Meeting notes and announcements are posted to the [Islandora community list](https://groups.google.com/forum/#!forum/islandora) and the [Islandora developers list](https://groups.google.com/forum/#!forum/islandora-dev). You can view meeting agendas, notes, and call-in information [here](https://github.com/Islandora/documentation/wiki#islandora-8-tech-calls). Anybody is welcome to join the calls, and add items to the agenda.
### Use cases
If you would like to submit a use case to the Islandora 8 project, please submit an issue [here](https://github.com/Islandora/documentation/issues/new) using the [Use Case template](https://github.com/Islandora/documentation/wiki/Use-Case-template), prepending "Use Case:" to the title of the issue.
### Documentation
You can contribute documentation in two different ways. One way is to create an issue [here](https://github.com/Islandora/documentation/issues/new), prepending "Documentation:" to the title of the issue. Another way is by pull request, which is the same process as [Contribute Code](https://github.com/Islandora/documentation/blob/master/CONTRIBUTING.md#contribute-code). All documentation resides in [`docs`](https://github.com/Islandora/documentation/tree/master/docs).
### Request a new feature
To request a new feature you should [open an issue in the Islandora 8 repository](https://github.com/Islandora/documentation/issues/new) or create a use case (see the _Use cases_ section above), and summarize the desired functionality. Prepend "Enhancement:" if creating an issue on the project repo, and "Use Case:" if creating a use case.
### Report a bug
To report a bug you should [open an issue in the Islandora 8 repository](https://github.com/Islandora/documentation/issues/new) that summarizes the bug. Prepend the label "Bug:" to the title of the issue.
In order to help us understand and fix the bug it would be great if you could provide us with:
1. The steps to reproduce the bug. This includes information about e.g. the Islandora version you were using along with the versions of stack components.
2. The expected behavior.
3. The actual, incorrect behavior.
Feel free to search the issue queue for existing issues (aka tickets) that already describe the problem; if there is such a ticket please add your information as a comment.
**If you want to provide a pull along with your bug report:**
That is great! In this case please send us a pull request as described in the section _Create a pull request_ below.
### Contribute code
Before you set out to contribute code you will need to have completed a [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or be covered by a [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). The signed copy of the license agreement should be sent to <mailto:community@islandora.ca>
_If you are interested in contributing code to Islandora but do not know where to begin:_
In this case you should [browse open issues](https://github.com/Islandora/documentation/issues) and check out [use cases](https://github.com/Islandora/documentation/labels/use%20case).
If you are contributing Drupal code, it must adhere to [Drupal Coding Standards](https://www.drupal.org/coding-standards); Travis CI will check for this on pull requests.
Contributions to the Islandora codebase should be sent as GitHub pull requests. See section _Create a pull request_ below for details. If there is any problem with the pull request we can work through it using the commenting features of GitHub.
* For _small patches_, feel free to submit pull requests directly for those patches.
* For _larger code contributions_, please use the following process. The idea behind this process is to prevent any wasted work and catch design issues early on.
1. [Open an issue](https://github.com/Islandora/documentation/issues), prepending "Enhancement:" in the title if a similar issue does not exist already. If a similar issue does exist, then you may consider participating in the work on the existing issue.
2. Comment on the issue with your plan for implementing the issue. Explain what pieces of the codebase you are going to touch and how everything is going to fit together.
3. Islandora committers will work with you on the design to make sure you are on the right track.
4. Implement your issue, create a pull request (see below), and iterate from there.
### Create a pull request
Take a look at [Creating a pull request](https://help.github.com/articles/creating-a-pull-request). In a nutshell you need to:
1. [Fork](https://help.github.com/articles/fork-a-repo) this repository to your personal or institutional GitHub account (depending on the CLA you are working under). Be cautious of which branches you work from though (you'll want to base your work off master, or for Drupal modules use the most recent version branch). See [Fork a repo](https://help.github.com/articles/fork-a-repo) for detailed instructions.
2. Commit any changes to your fork.
3. Send a [pull request](https://help.github.com/articles/creating-a-pull-request) using the [pull request template](https://github.com/Islandora/documentation/blob/master/.github/PULL_REQUEST_TEMPLATE.md) to the Islandora GitHub repository that you forked in step 1. If your pull request is related to an existing issue -- for instance, because you reported a [bug/issue](https://github.com/Islandora/documentation/issues) earlier -- prefix the title of your pull request with the corresponding issue number (e.g. `issue-123: ...`). Please also include a reference to the issue in the description of the pull. This can be done by using '#' plus the issue number like so '#123', also try to pick an appropriate name for the branch in which you're issuing the pull request from.
You may want to read [Syncing a fork](https://help.github.com/articles/syncing-a-fork) for instructions on how to keep your fork up to date with the latest changes of the upstream (official) repository.
## License Agreements
The Islandora Foundation requires that contributors complete a [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or be covered by a [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). The signed copy of the license agreement should be sent to <a href="mailto:community@islandora.ca?Subject=Contributor%20License%20Agreement" target="_top">community@islandora.ca</a>. This license is for your protection as a contributor as well as the protection of the Foundation and its users; it does not change your rights to use your own contributions for any other purpose. A list of current CLAs is kept [here](https://github.com/Islandora/islandora/wiki/Contributor-License-Agreements).

339
modules/islandora_core_feature/LICENSE

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

41
modules/islandora_core_feature/README.md

@ -0,0 +1,41 @@
# Islandora Core Feature
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.2-8892BF.svg?style=flat-square)](https://php.net/)
[![Contribution Guidelines](http://img.shields.io/badge/CONTRIBUTING-Guidelines-blue.svg)](./CONTRIBUTING.md)
[![LICENSE](https://img.shields.io/badge/license-GPLv2-blue.svg?style=flat-square)](./LICENSE)
## Introduction
Core configuration required by Islandora.
## Requirements
- `islandora`
## Installation
For a full digital repository solution, see our [installation documentation](https://islandora.github.io/documentation/installation/).
To download/enable just this module, use the following from the command line:
```bash
$ composer require islandora/islandora
$ drush en islandora_core_feature
$ drush mim islandora_tags
```
## Documentation
Official documentation is available on the [Islandora 8 documentation site](https://islandora.github.io/documentation/).
## Development
If you would like to contribute, please get involved by attending our weekly [Tech Call](https://github.com/Islandora/documentation/wiki). We love to hear from you!
If you would like to contribute code to the project, you need to be covered by an Islandora Foundation [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). Please see the [Contributors](http://islandora.ca/resources/contributors) pages on Islandora.ca for more information.
We recommend using the [islandora-playbook](https://github.com/Islandora-Devops/islandora-playbook) to get started.
## License
[GPLv2](http://www.gnu.org/licenses/gpl-2.0.txt)

17
modules/islandora_core_feature/config/install/core.base_field_override.media.audio.changed.yml

@ -1,17 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.audio
id: media.audio.changed
field_name: changed
entity_type: media
bundle: audio
label: Changed
description: 'The time the media item was last edited.'
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings: { }
field_type: changed

17
modules/islandora_core_feature/config/install/core.base_field_override.media.audio.created.yml

@ -1,17 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.audio
id: media.audio.created
field_name: created
entity_type: media
bundle: audio
label: 'Authored on'
description: 'The time the media item was created.'
required: false
translatable: false
default_value: { }
default_value_callback: 'Drupal\media\Entity\Media::getRequestTime'
settings: { }
field_type: created

19
modules/islandora_core_feature/config/install/core.base_field_override.media.audio.name.yml

@ -1,19 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.audio
id: media.audio.name
field_name: name
entity_type: media
bundle: audio
label: Name
description: ''
required: true
translatable: true
default_value:
-
value: ''
default_value_callback: ''
settings: { }
field_type: string

19
modules/islandora_core_feature/config/install/core.base_field_override.media.audio.path.yml

@ -1,19 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.audio
module:
- path
id: media.audio.path
field_name: path
entity_type: media
bundle: audio
label: 'URL alias'
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings: { }
field_type: path

21
modules/islandora_core_feature/config/install/core.base_field_override.media.audio.status.yml

@ -1,21 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.audio
id: media.audio.status
field_name: status
entity_type: media
bundle: audio
label: Published
description: ''
required: false
translatable: false
default_value:
-
value: 1
default_value_callback: ''
settings:
on_label: 'On'
off_label: 'Off'
field_type: boolean

36
modules/islandora_core_feature/config/install/core.base_field_override.media.audio.thumbnail.yml

@ -1,36 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.audio
module:
- image
id: media.audio.thumbnail
field_name: thumbnail
entity_type: media
bundle: audio
label: Thumbnail
description: 'The thumbnail of the media item.'
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
file_extensions: 'png gif jpg jpeg'
alt_field: true
alt_field_required: true
title_field: false
title_field_required: false
max_resolution: ''
min_resolution: ''
default_image:
uuid: null
alt: ''
title: ''
width: null
height: null
file_directory: '[date:custom:Y]-[date:custom:m]'
max_filesize: ''
handler: default
handler_settings: { }
field_type: image

19
modules/islandora_core_feature/config/install/core.base_field_override.media.audio.uid.yml

@ -1,19 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.audio
id: media.audio.uid
field_name: uid
entity_type: media
bundle: audio
label: 'Authored by'
description: 'The user ID of the author.'
required: false
translatable: false
default_value: { }
default_value_callback: 'Drupal\media\Entity\Media::getCurrentUserId'
settings:
handler: default
handler_settings: { }
field_type: entity_reference

17
modules/islandora_core_feature/config/install/core.base_field_override.media.file.changed.yml

@ -1,17 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.file
id: media.file.changed
field_name: changed
entity_type: media
bundle: file
label: Changed
description: 'The time the media item was last edited.'
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings: { }
field_type: changed

17
modules/islandora_core_feature/config/install/core.base_field_override.media.file.created.yml

@ -1,17 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.file
id: media.file.created
field_name: created
entity_type: media
bundle: file
label: 'Authored on'
description: 'The time the media item was created.'
required: false
translatable: false
default_value: { }
default_value_callback: 'Drupal\media\Entity\Media::getRequestTime'
settings: { }
field_type: created

19
modules/islandora_core_feature/config/install/core.base_field_override.media.file.name.yml

@ -1,19 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.file
id: media.file.name
field_name: name
entity_type: media
bundle: file
label: Name
description: ''
required: true
translatable: true
default_value:
-
value: ''
default_value_callback: ''
settings: { }
field_type: string

19
modules/islandora_core_feature/config/install/core.base_field_override.media.file.path.yml

@ -1,19 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.file
module:
- path
id: media.file.path
field_name: path
entity_type: media
bundle: file
label: 'URL alias'
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings: { }
field_type: path

21
modules/islandora_core_feature/config/install/core.base_field_override.media.file.status.yml

@ -1,21 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.file
id: media.file.status
field_name: status
entity_type: media
bundle: file
label: Published
description: ''
required: false
translatable: false
default_value:
-
value: 1
default_value_callback: ''
settings:
on_label: 'On'
off_label: 'Off'
field_type: boolean

36
modules/islandora_core_feature/config/install/core.base_field_override.media.file.thumbnail.yml

@ -1,36 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.file
module:
- image
id: media.file.thumbnail
field_name: thumbnail
entity_type: media
bundle: file
label: Thumbnail
description: 'The thumbnail of the media item.'
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
file_extensions: 'png gif jpg jpeg'
alt_field: true
alt_field_required: true
title_field: false
title_field_required: false
max_resolution: ''
min_resolution: ''
default_image:
uuid: null
alt: ''
title: ''
width: null
height: null
file_directory: '[date:custom:Y]-[date:custom:m]'
max_filesize: ''
handler: default
handler_settings: { }
field_type: image

19
modules/islandora_core_feature/config/install/core.base_field_override.media.file.uid.yml

@ -1,19 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.file
id: media.file.uid
field_name: uid
entity_type: media
bundle: file
label: 'Authored by'
description: 'The user ID of the author.'
required: false
translatable: false
default_value: { }
default_value_callback: 'Drupal\media\Entity\Media::getCurrentUserId'
settings:
handler: default
handler_settings: { }
field_type: entity_reference

17
modules/islandora_core_feature/config/install/core.base_field_override.media.image.changed.yml

@ -1,17 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.image
id: media.image.changed
field_name: changed
entity_type: media
bundle: image
label: Changed
description: 'The time the media item was last edited.'
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings: { }
field_type: changed

17
modules/islandora_core_feature/config/install/core.base_field_override.media.image.created.yml

@ -1,17 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.image
id: media.image.created
field_name: created
entity_type: media
bundle: image
label: 'Authored on'
description: 'The time the media item was created.'
required: false
translatable: false
default_value: { }
default_value_callback: 'Drupal\media\Entity\Media::getRequestTime'
settings: { }
field_type: created

19
modules/islandora_core_feature/config/install/core.base_field_override.media.image.name.yml

@ -1,19 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.image
id: media.image.name
field_name: name
entity_type: media
bundle: image
label: Name
description: ''
required: true
translatable: true
default_value:
-
value: ''
default_value_callback: ''
settings: { }
field_type: string

19
modules/islandora_core_feature/config/install/core.base_field_override.media.image.path.yml

@ -1,19 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.image
module:
- path
id: media.image.path
field_name: path
entity_type: media
bundle: image
label: 'URL alias'
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings: { }
field_type: path

21
modules/islandora_core_feature/config/install/core.base_field_override.media.image.status.yml

@ -1,21 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.image
id: media.image.status
field_name: status
entity_type: media
bundle: image
label: Published
description: ''
required: false
translatable: false
default_value:
-
value: 1
default_value_callback: ''
settings:
on_label: 'On'
off_label: 'Off'
field_type: boolean

36
modules/islandora_core_feature/config/install/core.base_field_override.media.image.thumbnail.yml

@ -1,36 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.image
module:
- image
id: media.image.thumbnail
field_name: thumbnail
entity_type: media
bundle: image
label: Thumbnail
description: 'The thumbnail of the media item.'
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
file_extensions: 'png gif jpg jpeg'
alt_field: true
alt_field_required: true
title_field: false
title_field_required: false
max_resolution: ''
min_resolution: ''
default_image:
uuid: null
alt: ''
title: ''
width: null
height: null
file_directory: '[date:custom:Y]-[date:custom:m]'
max_filesize: ''
handler: default
handler_settings: { }
field_type: image

19
modules/islandora_core_feature/config/install/core.base_field_override.media.image.uid.yml

@ -1,19 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.image
id: media.image.uid
field_name: uid
entity_type: media
bundle: image
label: 'Authored by'
description: 'The user ID of the author.'
required: false
translatable: false
default_value: { }
default_value_callback: 'Drupal\media\Entity\Media::getCurrentUserId'
settings:
handler: default
handler_settings: { }
field_type: entity_reference

17
modules/islandora_core_feature/config/install/core.base_field_override.media.video.changed.yml

@ -1,17 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.video
id: media.video.changed
field_name: changed
entity_type: media
bundle: video
label: Changed
description: 'The time the media item was last edited.'
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings: { }
field_type: changed

17
modules/islandora_core_feature/config/install/core.base_field_override.media.video.created.yml

@ -1,17 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.video
id: media.video.created
field_name: created
entity_type: media
bundle: video
label: 'Authored on'
description: 'The time the media item was created.'
required: false
translatable: false
default_value: { }
default_value_callback: 'Drupal\media\Entity\Media::getRequestTime'
settings: { }
field_type: created

19
modules/islandora_core_feature/config/install/core.base_field_override.media.video.name.yml

@ -1,19 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.video
id: media.video.name
field_name: name
entity_type: media
bundle: video
label: Name
description: ''
required: true
translatable: true
default_value:
-
value: ''
default_value_callback: ''
settings: { }
field_type: string

19
modules/islandora_core_feature/config/install/core.base_field_override.media.video.path.yml

@ -1,19 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.video
module:
- path
id: media.video.path
field_name: path
entity_type: media
bundle: video
label: 'URL alias'
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings: { }
field_type: path

21
modules/islandora_core_feature/config/install/core.base_field_override.media.video.status.yml

@ -1,21 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.video
id: media.video.status
field_name: status
entity_type: media
bundle: video
label: Published
description: ''
required: false
translatable: false
default_value:
-
value: 1
default_value_callback: ''
settings:
on_label: 'On'
off_label: 'Off'
field_type: boolean

36
modules/islandora_core_feature/config/install/core.base_field_override.media.video.thumbnail.yml

@ -1,36 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.video
module:
- image
id: media.video.thumbnail
field_name: thumbnail
entity_type: media
bundle: video
label: Thumbnail
description: 'The thumbnail of the media item.'
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
file_extensions: 'png gif jpg jpeg'
alt_field: true
alt_field_required: true
title_field: false
title_field_required: false
max_resolution: ''
min_resolution: ''
default_image:
uuid: null
alt: ''
title: ''
width: null
height: null
file_directory: '[date:custom:Y]-[date:custom:m]'
max_filesize: ''
handler: default
handler_settings: { }
field_type: image

19
modules/islandora_core_feature/config/install/core.base_field_override.media.video.uid.yml

@ -1,19 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.video
id: media.video.uid
field_name: uid
entity_type: media
bundle: video
label: 'Authored by'
description: 'The user ID of the author.'
required: false
translatable: false
default_value: { }
default_value_callback: 'Drupal\media\Entity\Media::getCurrentUserId'
settings:
handler: default
handler_settings: { }
field_type: entity_reference

42
modules/islandora_core_feature/config/install/core.entity_view_display.media.audio.source.yml

@ -1,42 +0,0 @@
langcode: en
status: true
dependencies:
config:
- core.entity_view_mode.media.source
- field.field.media.audio.field_file_size
- field.field.media.audio.field_media_audio_file
- field.field.media.audio.field_media_of
- field.field.media.audio.field_media_use
- field.field.media.audio.field_mime_type
- media.type.audio
enforced:
module:
- islandora_core_feature
module:
- file
id: media.audio.source
targetEntityType: media
bundle: audio
mode: source
content:
field_media_audio_file:
type: file_audio
weight: 0
label: visually_hidden
settings:
controls: true
multiple_file_display_type: tags
autoplay: false
loop: false
third_party_settings: { }
region: content
hidden:
created: true
field_file_size: true
field_media_of: true
field_media_use: true
field_mime_type: true
langcode: true
name: true
thumbnail: true
uid: true

40
modules/islandora_core_feature/config/install/core.entity_view_display.media.file.source.yml

@ -1,40 +0,0 @@
langcode: en
status: true
dependencies:
config:
- core.entity_view_mode.media.source
- field.field.media.file.field_file_size
- field.field.media.file.field_media_file
- field.field.media.file.field_media_of
- field.field.media.file.field_media_use
- field.field.media.file.field_mime_type
- media.type.file
enforced:
module:
- islandora_core_feature
module:
- file
id: media.file.source
targetEntityType: media
bundle: file
mode: source
content:
field_media_file:
label: hidden
settings:
use_description_as_link_text: true
third_party_settings: { }
type: file_default
weight: 0
region: content
hidden:
created: true
field_file_size: true
field_gemini_uri: true
field_media_of: true
field_media_use: true
field_mime_type: true
langcode: true
name: true
thumbnail: true
uid: true

45
modules/islandora_core_feature/config/install/core.entity_view_display.media.image.source.yml

@ -1,45 +0,0 @@
langcode: en
status: true
dependencies:
config:
- core.entity_view_mode.media.source
- field.field.media.image.field_file_size
- field.field.media.image.field_height
- field.field.media.image.field_media_image
- field.field.media.image.field_media_of
- field.field.media.image.field_media_use
- field.field.media.image.field_mime_type
- field.field.media.image.field_width
- media.type.image
enforced:
module:
- islandora_core_feature
module:
- islandora
id: media.image.source
targetEntityType: media
bundle: image
mode: source
content:
field_media_image:
label: visually_hidden
settings:
image_style: ''
image_link: content
third_party_settings: { }
type: islandora_image
weight: 0
region: content
hidden:
created: true
field_file_size: true
field_gemini_uri: true
field_height: true
field_media_of: true
field_media_use: true
field_mime_type: true
field_width: true
langcode: true
name: true
thumbnail: true
uid: true

45
modules/islandora_core_feature/config/install/core.entity_view_display.media.video.source.yml

@ -1,45 +0,0 @@
langcode: en
status: true
dependencies:
config:
- core.entity_view_mode.media.source
- field.field.media.video.field_file_size
- field.field.media.video.field_media_of
- field.field.media.video.field_media_use
- field.field.media.video.field_media_video_file
- field.field.media.video.field_mime_type
- media.type.video
enforced:
module:
- islandora_core_feature
module:
- file
id: media.video.source
targetEntityType: media
bundle: video
mode: source
content:
field_media_video_file:
type: file_video
weight: 0
label: visually_hidden
settings:
muted: false
width: 640
height: 480
controls: true
autoplay: false
loop: false
multiple_file_display_type: tags
third_party_settings: { }
region: content
hidden:
created: true
field_file_size: true
field_media_of: true
field_media_use: true
field_mime_type: true
langcode: true
name: true
thumbnail: true
uid: true

25
modules/islandora_core_feature/config/install/field.field.media.audio.field_file_size.yml

@ -1,25 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_file_size
- media.type.audio
enforced:
module:
- islandora_core_feature
id: media.audio.field_file_size
field_name: field_file_size
entity_type: media
bundle: audio
label: 'File size'
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
min: null
max: null
prefix: ''
suffix: ''
field_type: integer

29
modules/islandora_core_feature/config/install/field.field.media.audio.field_media_audio_file.yml

@ -1,29 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_media_audio_file
- media.type.audio
enforced:
module:
- islandora_core_feature
module:
- file
id: media.audio.field_media_audio_file
field_name: field_media_audio_file
entity_type: media
bundle: audio
label: 'Audio file'
description: ''
required: true
translatable: false
default_value: { }
default_value_callback: ''
settings:
file_extensions: 'mp3 wav aac'
file_directory: '[date:custom:Y]-[date:custom:m]'
max_filesize: ''
description_field: false
handler: 'default:file'
handler_settings: { }
field_type: file

23
modules/islandora_core_feature/config/install/field.field.media.audio.field_media_of.yml

@ -1,23 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_media_of
- media.type.audio
enforced:
module:
- islandora_core_feature
id: media.audio.field_media_of
field_name: field_media_of
entity_type: media
bundle: audio
label: 'Media of'
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
handler: 'default:node'
handler_settings: { }
field_type: entity_reference

28
modules/islandora_core_feature/config/install/field.field.media.audio.field_media_use.yml

@ -1,28 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_media_use
- media.type.audio
- taxonomy.vocabulary.islandora_media_use
id: media.audio.field_media_use
field_name: field_media_use
entity_type: media
bundle: audio
label: 'Media Use'
description: 'Defined by Portland Common Data Model: Use Extension https://pcdm.org/2015/05/12/use. ''Original File'' will trigger creation of derivatives.'
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
handler: 'default:taxonomy_term'
handler_settings:
target_bundles:
islandora_media_use: islandora_media_use
sort:
field: name
direction: asc
auto_create: false
auto_create_bundle: ''
field_type: entity_reference

21
modules/islandora_core_feature/config/install/field.field.media.audio.field_mime_type.yml

@ -1,21 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_mime_type
- media.type.audio
enforced:
module:
- islandora_core_feature
id: media.audio.field_mime_type
field_name: field_mime_type
entity_type: media
bundle: audio
label: 'MIME type'
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings: { }
field_type: string

25
modules/islandora_core_feature/config/install/field.field.media.file.field_file_size.yml

@ -1,25 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_file_size
- media.type.file
enforced:
module:
- islandora_core_feature
id: media.file.field_file_size
field_name: field_file_size
entity_type: media
bundle: file
label: 'File size'
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
min: null
max: null
prefix: ''
suffix: ''
field_type: integer

30
modules/islandora_core_feature/config/install/field.field.media.file.field_media_file.yml

@ -1,30 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_media_file
- media.type.file
enforced:
module:
- media
- islandora_core_feature
module:
- file
id: media.file.field_media_file
field_name: field_media_file
entity_type: media
bundle: file
label: File
description: ''
required: true
translatable: false
default_value: { }
default_value_callback: ''
settings:
file_directory: '[date:custom:Y]-[date:custom:m]'
file_extensions: 'txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp ods odt fodt fods fodp fodg key numbers pages tiff tif jp2'
max_filesize: ''
description_field: false
handler: 'default:file'
handler_settings: { }
field_type: file

23
modules/islandora_core_feature/config/install/field.field.media.file.field_media_of.yml

@ -1,23 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_media_of
- media.type.file
enforced:
module:
- islandora_core_feature
id: media.file.field_media_of
field_name: field_media_of
entity_type: media
bundle: file
label: 'Media of'
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
handler: 'default:node'
handler_settings: { }
field_type: entity_reference

28
modules/islandora_core_feature/config/install/field.field.media.file.field_media_use.yml

@ -1,28 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_media_use
- media.type.file
- taxonomy.vocabulary.islandora_media_use
id: media.file.field_media_use
field_name: field_media_use
entity_type: media
bundle: file
label: 'Media Use'
description: 'Defined by Portland Common Data Model: Use Extension https://pcdm.org/2015/05/12/use. ''Original File'' will trigger creation of derivatives.'
required: false
translatable: true
default_value: { }
default_value_callback: ''
settings:
handler: 'default:taxonomy_term'
handler_settings:
target_bundles:
islandora_media_use: islandora_media_use
sort:
field: name
direction: asc
auto_create: false
auto_create_bundle: ''
field_type: entity_reference

21
modules/islandora_core_feature/config/install/field.field.media.file.field_mime_type.yml

@ -1,21 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_mime_type
- media.type.file
enforced:
module:
- islandora_core_feature
id: media.file.field_mime_type
field_name: field_mime_type
entity_type: media
bundle: file
label: 'MIME type'
description: 'MIME type of the underlying file'
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings: { }
field_type: string

25
modules/islandora_core_feature/config/install/field.field.media.image.field_file_size.yml

@ -1,25 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_file_size
- media.type.image
enforced:
module:
- islandora_core_feature
id: media.image.field_file_size
field_name: field_file_size
entity_type: media
bundle: image
label: 'File size'
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
min: null
max: null
prefix: ''
suffix: ''
field_type: integer

25
modules/islandora_core_feature/config/install/field.field.media.image.field_height.yml

@ -1,25 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_height
- media.type.image
enforced:
module:
- islandora_core_feature
id: media.image.field_height
field_name: field_height
entity_type: media
bundle: image
label: Height
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
min: null
max: null
prefix: ''
suffix: ''
field_type: integer

41
modules/islandora_core_feature/config/install/field.field.media.image.field_media_image.yml

@ -1,41 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_media_image
- media.type.image
enforced:
module:
- media
- islandora_core_feature
module:
- image
id: media.image.field_media_image
field_name: field_media_image
entity_type: media
bundle: image
label: Image
description: ''
required: true
translatable: false
default_value: { }
default_value_callback: ''
settings:
alt_field: true
alt_field_required: true
title_field: false
title_field_required: false
max_resolution: ''
min_resolution: ''
default_image:
uuid: null
alt: ''
title: ''
width: null
height: null
file_directory: '[date:custom:Y]-[date:custom:m]'
file_extensions: 'png gif jpg jpeg'
max_filesize: ''
handler: 'default:file'
handler_settings: { }
field_type: image

23
modules/islandora_core_feature/config/install/field.field.media.image.field_media_of.yml

@ -1,23 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_media_of
- media.type.image
enforced:
module:
- islandora_core_feature
id: media.image.field_media_of
field_name: field_media_of
entity_type: media
bundle: image
label: 'Media of'
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
handler: 'default:node'
handler_settings: { }
field_type: entity_reference

28
modules/islandora_core_feature/config/install/field.field.media.image.field_media_use.yml

@ -1,28 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_media_use
- media.type.image
- taxonomy.vocabulary.islandora_media_use
id: media.image.field_media_use
field_name: field_media_use
entity_type: media
bundle: image
label: 'Media Use'
description: 'Defined by Portland Common Data Model: Use Extension https://pcdm.org/2015/05/12/use. ''Original File'' will trigger creation of derivatives.'
required: false
translatable: true
default_value: { }
default_value_callback: ''
settings:
handler: 'default:taxonomy_term'
handler_settings:
target_bundles:
islandora_media_use: islandora_media_use
sort:
field: name
direction: asc
auto_create: false
auto_create_bundle: ''
field_type: entity_reference

21
modules/islandora_core_feature/config/install/field.field.media.image.field_mime_type.yml

@ -1,21 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_mime_type
- media.type.image
enforced:
module:
- islandora_core_feature
id: media.image.field_mime_type
field_name: field_mime_type
entity_type: media
bundle: image
label: 'MIME type'
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings: { }
field_type: string

25
modules/islandora_core_feature/config/install/field.field.media.image.field_width.yml

@ -1,25 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_width
- media.type.image
enforced:
module:
- islandora_core_feature
id: media.image.field_width
field_name: field_width
entity_type: media
bundle: image
label: Width
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
min: null
max: null
prefix: ''
suffix: ''
field_type: integer

25
modules/islandora_core_feature/config/install/field.field.media.video.field_file_size.yml

@ -1,25 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_file_size
- media.type.video
enforced:
module:
- islandora_core_feature
id: media.video.field_file_size
field_name: field_file_size
entity_type: media
bundle: video
label: 'File size'
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
min: null
max: null
prefix: ''
suffix: ''
field_type: integer

23
modules/islandora_core_feature/config/install/field.field.media.video.field_media_of.yml

@ -1,23 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_media_of
- media.type.video
enforced:
module:
- islandora_core_feature
id: media.video.field_media_of
field_name: field_media_of
entity_type: media
bundle: video
label: 'Media of'
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings:
handler: 'default:node'
handler_settings: { }
field_type: entity_reference

28
modules/islandora_core_feature/config/install/field.field.media.video.field_media_use.yml

@ -1,28 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_media_use
- media.type.video
- taxonomy.vocabulary.islandora_media_use
id: media.video.field_media_use
field_name: field_media_use
entity_type: media
bundle: video
label: 'Media Use'
description: 'Defined by Portland Common Data Model: Use Extension https://pcdm.org/2015/05/12/use. ''Original File'' will trigger creation of derivatives.'
required: false
translatable: true
default_value: { }
default_value_callback: ''
settings:
handler: 'default:taxonomy_term'
handler_settings:
target_bundles:
islandora_media_use: islandora_media_use
sort:
field: name
direction: asc
auto_create: false
auto_create_bundle: ''
field_type: entity_reference

29
modules/islandora_core_feature/config/install/field.field.media.video.field_media_video_file.yml

@ -1,29 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_media_video_file
- media.type.video
enforced:
module:
- islandora_core_feature
module:
- file
id: media.video.field_media_video_file
field_name: field_media_video_file
entity_type: media
bundle: video
label: 'Video file'
description: ''
required: true
translatable: false
default_value: { }
default_value_callback: ''
settings:
file_extensions: mp4
file_directory: '[date:custom:Y]-[date:custom:m]'
max_filesize: ''
description_field: false
handler: 'default:file'
handler_settings: { }
field_type: file

21
modules/islandora_core_feature/config/install/field.field.media.video.field_mime_type.yml

@ -1,21 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.media.field_mime_type
- media.type.video
enforced:
module:
- islandora_core_feature
id: media.video.field_mime_type
field_name: field_mime_type
entity_type: media
bundle: video
label: 'MIME type'
description: ''
required: false
translatable: false
default_value: { }
default_value_callback: ''
settings: { }
field_type: string

22
modules/islandora_core_feature/config/install/field.field.taxonomy_term.islandora_display.field_external_uri.yml

@ -1,22 +0,0 @@
langcode: en
status: true
dependencies:
config:
- field.storage.taxonomy_term.field_external_uri
- taxonomy.vocabulary.islandora_display
module:
- link
id: taxonomy_term.islandora_display.field_external_uri
field_name: field_external_uri
entity_type: taxonomy_term
bundle: islandora_display
label: 'External URI'
description: ''
required: false
translatable: true
default_value: { }
default_value_callback: ''
settings:
title: 1
link_type: 17
field_type: link

21
modules/islandora_core_feature/config/install/field.storage.media.field_original_name.yml

@ -0,0 +1,21 @@
langcode: en
status: true
dependencies:
enforced:
module:
- islandora_core_feature
module:
- media
id: media.field_original_name
field_name: field_original_name
entity_type: media
type: string_long
settings:
case_sensitive: false
module: core
locked: false
cardinality: 1
translatable: true
indexes: { }
persist_with_no_fields: false
custom_storage: false

19
modules/islandora_core_feature/config/install/field.storage.node.field_display_hints.yml

@ -1,19 +0,0 @@
langcode: en
status: true
dependencies:
module:
- node
- taxonomy
id: node.field_display_hints
field_name: field_display_hints
entity_type: node
type: entity_reference
settings:
target_type: taxonomy_term
module: core
locked: false
cardinality: 1
translatable: true
indexes: { }
persist_with_no_fields: false
custom_storage: false

17
modules/islandora_core_feature/config/install/language.content_settings.media.audio.yml

@ -1,17 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.audio
module:
- content_translation
third_party_settings:
content_translation:
enabled: true
bundle_settings:
untranslatable_fields_hide: '0'
id: media.audio
target_entity_type_id: media
target_bundle: audio
default_langcode: site_default
language_alterable: true

17
modules/islandora_core_feature/config/install/language.content_settings.media.file.yml

@ -1,17 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.file
module:
- content_translation
third_party_settings:
content_translation:
enabled: true
bundle_settings:
untranslatable_fields_hide: '0'
id: media.file
target_entity_type_id: media
target_bundle: file
default_langcode: site_default
language_alterable: true

17
modules/islandora_core_feature/config/install/language.content_settings.media.image.yml

@ -1,17 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.image
module:
- content_translation
third_party_settings:
content_translation:
enabled: true
bundle_settings:
untranslatable_fields_hide: '0'
id: media.image
target_entity_type_id: media
target_bundle: image
default_langcode: site_default
language_alterable: true

17
modules/islandora_core_feature/config/install/language.content_settings.media.video.yml

@ -1,17 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.video
module:
- content_translation
third_party_settings:
content_translation:
enabled: true
bundle_settings:
untranslatable_fields_hide: '0'
id: media.video
target_entity_type_id: media
target_bundle: video
default_langcode: site_default
language_alterable: true

15
modules/islandora_core_feature/config/install/language.content_settings.taxonomy_term.islandora_media_use.yml

@ -1,15 +0,0 @@
langcode: en
status: true
dependencies:
config:
- taxonomy.vocabulary.islandora_media_use
module:
- content_translation
third_party_settings:
content_translation:
enabled: true
id: taxonomy_term.islandora_media_use
target_entity_type_id: taxonomy_term
target_bundle: islandora_media_use
default_langcode: site_default
language_alterable: false

15
modules/islandora_core_feature/config/install/language.content_settings.taxonomy_term.islandora_models.yml

@ -1,15 +0,0 @@
langcode: en
status: true
dependencies:
config:
- taxonomy.vocabulary.islandora_models
module:
- content_translation
third_party_settings:
content_translation:
enabled: true
id: taxonomy_term.islandora_models
target_entity_type_id: taxonomy_term
target_bundle: islandora_models
default_langcode: site_default
language_alterable: false

18
modules/islandora_core_feature/config/install/media.type.audio.yml

@ -1,18 +0,0 @@
langcode: en
status: true
dependencies:
enforced:
module:
- islandora_core_feature
id: audio
label: Audio
description: 'A locally hosted audio file.'
source: audio_file
queue_thumbnail_downloads: false
new_revision: true
source_configuration:
source_field: field_media_audio_file
field_map:
name: name
mimetype: field_mime_type
filesize: field_file_size

18
modules/islandora_core_feature/config/install/media.type.file.yml

@ -1,18 +0,0 @@
langcode: en
status: true
dependencies:
enforced:
module:
- islandora_core_feature
id: file
label: File
description: 'Use local files for reusable media.'
source: file
queue_thumbnail_downloads: false
new_revision: true
source_configuration:
source_field: field_media_file
field_map:
name: name
mimetype: field_mime_type
filesize: field_file_size

20
modules/islandora_core_feature/config/install/media.type.image.yml

@ -1,20 +0,0 @@
langcode: en
status: true
dependencies:
enforced:
module:
- islandora_core_feature
id: image
label: Image
description: 'Use local images for reusable media.'
source: image
queue_thumbnail_downloads: false
new_revision: true
source_configuration:
source_field: field_media_image
field_map:
name: name
mimetype: field_mime_type
filesize: field_file_size
width: field_width
height: field_height

18
modules/islandora_core_feature/config/install/media.type.video.yml

@ -1,18 +0,0 @@
langcode: en
status: true
dependencies:
enforced:
module:
- islandora_core_feature
id: video
label: Video
description: 'A locally hosted video file.'
source: video_file
queue_thumbnail_downloads: false
new_revision: true
source_configuration:
source_field: field_media_video_file
field_map:
name: name
mimetype: field_mime_type
filesize: field_file_size

48
modules/islandora_core_feature/config/install/rdf.mapping.media.audio.yml

@ -1,48 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.audio
enforced:
module:
- islandora_core_feature
module:
- media
id: media.audio
targetEntityType: media
bundle: audio
types:
- 'pcdm:File'
fieldMappings:
name:
properties:
- 'dc:title'
- 'rdf:label'
created:
properties:
- 'schema:dateCreated'
datatype_callback:
callable: 'Drupal\rdf\CommonDataConverter::dateIso8601Value'
changed:
properties:
- 'schema:dateModified'
datatype_callback:
callable: 'Drupal\rdf\CommonDataConverter::dateIso8601Value'
uid:
properties:
- 'schema:author'
mapping_type: rel
field_mime_type:
properties:
- 'ebucore:hasMimeType'
field_media_of:
properties:
- 'pcdm:fileOf'
mapping_type: rel
field_tags:
properties:
- 'schema:additionalType'
mapping_type: rel
field_file_size:
properties:
- 'premis:hasSize'

48
modules/islandora_core_feature/config/install/rdf.mapping.media.file.yml

@ -1,48 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.file
enforced:
module:
- islandora_core_feature
module:
- media
id: media.file
targetEntityType: media
bundle: file
types:
- 'pcdm:File'
fieldMappings:
name:
properties:
- 'dc:title'
- 'rdf:label'
created:
properties:
- 'schema:dateCreated'
datatype_callback:
callable: 'Drupal\rdf\CommonDataConverter::dateIso8601Value'
changed:
properties:
- 'schema:dateModified'
datatype_callback:
callable: 'Drupal\rdf\CommonDataConverter::dateIso8601Value'
uid:
properties:
- 'schema:author'
mapping_type: rel
field_mime_type:
properties:
- 'ebucore:hasMimeType'
field_media_of:
properties:
- 'pcdm:fileOf'
mapping_type: rel
field_tags:
properties:
- 'schema:additionalType'
mapping_type: rel
field_file_size:
properties:
- 'premis:hasSize'

54
modules/islandora_core_feature/config/install/rdf.mapping.media.image.yml

@ -1,54 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.image
enforced:
module:
- islandora_core_feature
module:
- media
id: media.image
targetEntityType: media
bundle: image
types:
- 'pcdm:File'
fieldMappings:
name:
properties:
- 'dc:title'
- 'rdf:label'
created:
properties:
- 'schema:dateCreated'
datatype_callback:
callable: 'Drupal\rdf\CommonDataConverter::dateIso8601Value'
changed:
properties:
- 'schema:dateModified'
datatype_callback:
callable: 'Drupal\rdf\CommonDataConverter::dateIso8601Value'
uid:
properties:
- 'schema:author'
mapping_type: rel
field_mime_type:
properties:
- 'ebucore:hasMimeType'
field_media_of:
properties:
- 'pcdm:fileOf'
mapping_type: rel
field_tags:
properties:
- 'schema:additionalType'
mapping_type: rel
field_width:
properties:
- 'ebucore:width'
field_height:
properties:
- 'ebucore:height'
field_file_size:
properties:
- 'premis:hasSize'

48
modules/islandora_core_feature/config/install/rdf.mapping.media.video.yml

@ -1,48 +0,0 @@
langcode: en
status: true
dependencies:
config:
- media.type.video
enforced:
module:
- islandora_core_feature
module:
- media
id: media.video
targetEntityType: media
bundle: video
types:
- 'pcdm:File'
fieldMappings:
name:
properties:
- 'dc:title'
- 'rdf:label'
created:
properties:
- 'schema:dateCreated'
datatype_callback:
callable: 'Drupal\rdf\CommonDataConverter::dateIso8601Value'
changed:
properties:
- 'schema:dateModified'
datatype_callback:
callable: 'Drupal\rdf\CommonDataConverter::dateIso8601Value'
uid:
properties:
- 'schema:author'
mapping_type: rel
field_mime_type:
properties:
- 'ebucore:hasMimeType'
field_media_of:
properties:
- 'pcdm:fileOf'
mapping_type: rel
field_tags:
properties:
- 'schema:additionalType'
mapping_type: rel
field_file_size:
properties:
- 'premis:hasSize'

30
modules/islandora_core_feature/config/install/rdf.mapping.taxonomy_term.islandora_display.yml

@ -1,30 +0,0 @@
langcode: en
status: true
dependencies:
config:
- taxonomy.vocabulary.islandora_display
enforced:
module:
- islandora_core_feature
module:
- taxonomy
id: taxonomy_term.islandora_display
targetEntityType: taxonomy_term
bundle: islandora_display
types:
- 'schema:Thing'
fieldMappings:
name:
properties:
- 'dc:title'
description:
properties:
- 'dc:description'
field_external_uri:
properties:
- 'owl:sameAs'
changed:
properties:
- 'schema:dateModified'
datatype_callback:
callable: 'Drupal\rdf\CommonDataConverter::dateIso8601Value'

30
modules/islandora_core_feature/config/install/rdf.mapping.taxonomy_term.islandora_media_use.yml

@ -1,30 +0,0 @@
langcode: en
status: true
dependencies:
config:
- taxonomy.vocabulary.islandora_media_use
enforced:
module:
- islandora_core_feature
module:
- taxonomy
id: taxonomy_term.islandora_media_use
targetEntityType: taxonomy_term
bundle: islandora_media_use
types:
- 'schema:Thing'
fieldMappings:
name:
properties:
- 'dc:title'
description:
properties:
- 'dc:description'
field_external_uri:
properties:
- 'owl:sameAs'
changed:
properties:
- 'schema:dateModified'
datatype_callback:
callable: 'Drupal\rdf\CommonDataConverter::dateIso8601Value'

30
modules/islandora_core_feature/config/install/rdf.mapping.taxonomy_term.islandora_models.yml

@ -1,30 +0,0 @@
langcode: en
status: true
dependencies:
config:
- taxonomy.vocabulary.islandora_models
enforced:
module:
- islandora_core_feature
module:
- taxonomy
id: taxonomy_term.islandora_models
targetEntityType: taxonomy_term
bundle: islandora_models
types:
- 'schema:Thing'
fieldMappings:
name:
properties:
- 'dc:title'
description:
properties:
- 'dc:description'
field_external_uri:
properties:
- 'owl:sameAs'
changed:
properties:
- 'schema:dateModified'
datatype_callback:
callable: 'Drupal\rdf\CommonDataConverter::dateIso8601Value'

8
modules/islandora_core_feature/config/install/taxonomy.vocabulary.islandora_display.yml

@ -1,8 +0,0 @@
langcode: en
status: true
dependencies: { }
name: 'Islandora Display'
vid: islandora_display
description: 'Terms used to alter how a repository item is viewed. ie. basic image vs large image'
hierarchy: 0
weight: 0

1
modules/islandora_core_feature/config/install/taxonomy.vocabulary.islandora_media_use.yml

@ -4,5 +4,4 @@ dependencies: { }
name: 'Islandora Media Use'
vid: islandora_media_use
description: 'Terms to define how a media object is to be used.'
hierarchy: 0
weight: 0

1
modules/islandora_core_feature/config/install/taxonomy.vocabulary.islandora_models.yml

@ -4,5 +4,4 @@ dependencies: { }
name: 'Islandora Models'
vid: islandora_models
description: 'Types of repository objects'
hierarchy: 0
weight: 0

255
modules/islandora_core_feature/config/install/views.view.members.yml

@ -1,255 +0,0 @@
langcode: en
status: true
dependencies:
config:
- core.entity_view_mode.node.teaser
enforced:
module:
- islandora_core_feature
module:
- node
- user
id: members
label: Members
module: views
description: 'Displays members for content.'
tag: ''
base_table: node_field_data
base_field: nid
core: 8.x
display:
default:
display_plugin: default
id: default
display_title: Master
position: 0
display_options:
access:
type: perm
options:
perm: 'access content'
cache:
type: tag
options: { }
query:
type: views_query
options:
disable_sql_rewrite: false
distinct: false
replica: false
query_comment: ''
query_tags: { }
exposed_form:
type: basic
options:
submit_button: Apply
reset_button: false
reset_button_label: Reset
exposed_sorts_label: 'Sort by'
expose_sort_order: true
sort_asc_label: Asc
sort_desc_label: Desc
pager:
type: mini
options:
items_per_page: 10
offset: 0
id: 0
total_pages: null
expose:
items_per_page: false
items_per_page_label: 'Items per page'
items_per_page_options: '5, 10, 25, 50'
items_per_page_options_all: false
items_per_page_options_all_label: '- All -'
offset: false
offset_label: Offset
tags:
previous: ‹‹
next: ››
style:
type: default
options:
grouping: { }
row_class: ''
default_row_class: true
uses_fields: false
row:
type: 'entity:node'
options:
relationship: none
view_mode: teaser
fields:
title:
id: title
table: node_field_data
field: title
entity_type: node
entity_field: title
label: ''
alter:
alter_text: false
make_link: false
absolute: false
trim: false
word_boundary: false
ellipsis: false
strip_tags: false
html: false
hide_empty: false
empty_zero: false
settings:
link_to_entity: true
plugin_id: field
relationship: none
group_type: group
admin_label: ''
exclude: false
element_type: ''
element_class: ''
element_label_type: ''
element_label_class: ''
element_label_colon: true
element_wrapper_type: ''
element_wrapper_class: ''
element_default_classes: true
empty: ''
hide_alter_empty: true
click_sort_column: value
type: string
group_column: value
group_columns: { }
group_rows: true
delta_limit: 0
delta_offset: 0
delta_reversed: false
delta_first_last: false
multi_type: separator
separator: ', '
field_api_classes: false
filters:
status:
id: status
table: node_field_data
field: status
relationship: none
group_type: group
admin_label: ''
operator: '='
value: '1'
group: 1
exposed: false
expose:
operator_id: ''
label: ''
description: ''
use_operator: false
operator: ''
identifier: ''
required: false
remember: false
multiple: false
remember_roles:
authenticated: authenticated
is_grouped: false
group_info:
label: ''
description: ''
identifier: ''
optional: true
widget: select
multiple: false
remember: false
default_group: All
default_group_multiple: { }
group_items: { }
entity_type: node
entity_field: status
plugin_id: boolean
sorts:
created:
id: created
table: node_field_data
field: created
order: DESC
entity_type: node
entity_field: created
plugin_id: date
relationship: none
group_type: group
admin_label: ''
exposed: false
expose:
label: ''
granularity: second
header: { }
footer: { }
empty: { }
relationships: { }
arguments:
field_member_of_target_id:
id: field_member_of_target_id
table: node__field_member_of
field: field_member_of_target_id
relationship: none
group_type: group
admin_label: ''
default_action: default
exception:
value: all
title_enable: false
title: All
title_enable: false
title: ''
default_argument_type: node
default_argument_options: { }
default_argument_skip_url: false
summary_options:
base_path: ''
count: true
items_per_page: 25
override: false
summary:
sort_order: asc
number_of_records: 0
format: default_summary
specify_validation: false
validate:
type: none
fail: 'not found'
validate_options: { }
break_phrase: false
not: false
plugin_id: numeric
display_extenders: { }
filter_groups:
operator: AND
groups: { }
title: Children
cache_metadata:
max-age: -1
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url
- url.query_args
- 'user.node_grants:view'
- user.permissions
tags: { }
block_1:
display_plugin: block
id: block_1
display_title: Block
position: 2
display_options:
display_extenders: { }
cache_metadata:
max-age: -1
contexts:
- 'languages:language_content'
- 'languages:language_interface'
- url
- url.query_args
- 'user.node_grants:view'
- user.permissions
tags: { }

4
modules/islandora_core_feature/config/install/views.view.reorder_children.yml

@ -249,9 +249,9 @@ display:
position: 1
display_options:
display_extenders: { }
path: node/%node/reorder
path: node/%node/members/reorder
menu:
type: tab
type: none
title: 'Reorder Children'
description: ''
expanded: false

26
modules/islandora_core_feature/islandora_core_feature.features.yml

@ -1,14 +1,16 @@
bundle: islandora
excluded:
- core.entity_view_display.node.article.default
- core.entity_view_display.node.article.rss
- core.entity_view_display.node.article.teaser
- core.entity_view_display.taxonomy_term.islandora_display.default
- core.entity_view_display.taxonomy_term.islandora_media_use.default
- core.entity_view_display.taxonomy_term.islandora_models.default
- field.field.node.article.field_tags
- core.entity_form_display.taxonomy_term.islandora_display.default
- core.entity_form_display.taxonomy_term.islandora_media_use.default
- core.entity_form_display.taxonomy_term.islandora_models.default
- taxonomy.vocabulary.islandora_access
required: true
- language.content_settings.taxonomy_term.islandora_media_use
- language.content_settings.taxonomy_term.islandora_models
required:
- features.bundle.islandora
- field.storage.media.field_file_size
- field.storage.media.field_height
- field.storage.media.field_media_of
- field.storage.media.field_media_use
- field.storage.media.field_mime_type
- field.storage.media.field_width
- field.storage.node.field_member_of
- field.storage.node.field_model
- field.storage.node.field_weight
- field.storage.taxonomy_term.field_external_uri

4
modules/islandora_core_feature/islandora_core_feature.info.yml

@ -4,7 +4,6 @@ type: module
core: 8.x
dependencies:
- basic_auth
- comment
- content_translation
- eva
- features
@ -20,13 +19,10 @@ dependencies:
- media
- migrate_plus
- node
- path
- rdf
- rest
- serialization
- system
- taxonomy
- text
- user
- views
package: Islandora

73
modules/islandora_iiif/CONTRIBUTING.md

@ -0,0 +1,73 @@
# Welcome!
If you are reading this document then you are interested in contributing to Islandora 8. All contributions are welcome: use-cases, documentation, code, patches, bug reports, feature requests, etc. You do not need to be a programmer to speak up!
We also have an IRC channel -- #islandora -- on freenode.net. Feel free to hang out there, ask questions, and help others out if you can.
Please note that this project operates under the [Islandora Community Code of Conduct](http://islandora.ca/codeofconduct). By participating in this project you agree to abide by its terms.
## Workflows
The group meets each Wednesday at 1:00 PM Eastern. Meeting notes and announcements are posted to the [Islandora community list](https://groups.google.com/forum/#!forum/islandora) and the [Islandora developers list](https://groups.google.com/forum/#!forum/islandora-dev). You can view meeting agendas, notes, and call-in information [here](https://github.com/Islandora/documentation/wiki#islandora-8-tech-calls). Anybody is welcome to join the calls, and add items to the agenda.
### Use cases
If you would like to submit a use case to the Islandora 8 project, please submit an issue [here](https://github.com/Islandora/documentation/issues/new) using the [Use Case template](https://github.com/Islandora/documentation/wiki/Use-Case-template), prepending "Use Case:" to the title of the issue.
### Documentation
You can contribute documentation in two different ways. One way is to create an issue [here](https://github.com/Islandora/documentation/issues/new), prepending "Documentation:" to the title of the issue. Another way is by pull request, which is the same process as [Contribute Code](https://github.com/Islandora/documentation/blob/master/CONTRIBUTING.md#contribute-code). All documentation resides in [`docs`](https://github.com/Islandora/documentation/tree/master/docs).
### Request a new feature
To request a new feature you should [open an issue in the Islandora 8 repository](https://github.com/Islandora/documentation/issues/new) or create a use case (see the _Use cases_ section above), and summarize the desired functionality. Prepend "Enhancement:" if creating an issue on the project repo, and "Use Case:" if creating a use case.
### Report a bug
To report a bug you should [open an issue in the Islandora 8 repository](https://github.com/Islandora/documentation/issues/new) that summarizes the bug. Prepend the label "Bug:" to the title of the issue.
In order to help us understand and fix the bug it would be great if you could provide us with:
1. The steps to reproduce the bug. This includes information about e.g. the Islandora version you were using along with the versions of stack components.
2. The expected behavior.
3. The actual, incorrect behavior.
Feel free to search the issue queue for existing issues (aka tickets) that already describe the problem; if there is such a ticket please add your information as a comment.
**If you want to provide a pull along with your bug report:**
That is great! In this case please send us a pull request as described in the section _Create a pull request_ below.
### Contribute code
Before you set out to contribute code you will need to have completed a [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or be covered by a [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). The signed copy of the license agreement should be sent to <mailto:community@islandora.ca>
_If you are interested in contributing code to Islandora but do not know where to begin:_
In this case you should [browse open issues](https://github.com/Islandora/documentation/issues) and check out [use cases](https://github.com/Islandora/documentation/labels/use%20case).
If you are contributing Drupal code, it must adhere to [Drupal Coding Standards](https://www.drupal.org/coding-standards); Travis CI will check for this on pull requests.
Contributions to the Islandora codebase should be sent as GitHub pull requests. See section _Create a pull request_ below for details. If there is any problem with the pull request we can work through it using the commenting features of GitHub.
* For _small patches_, feel free to submit pull requests directly for those patches.
* For _larger code contributions_, please use the following process. The idea behind this process is to prevent any wasted work and catch design issues early on.
1. [Open an issue](https://github.com/Islandora/documentation/issues), prepending "Enhancement:" in the title if a similar issue does not exist already. If a similar issue does exist, then you may consider participating in the work on the existing issue.
2. Comment on the issue with your plan for implementing the issue. Explain what pieces of the codebase you are going to touch and how everything is going to fit together.
3. Islandora committers will work with you on the design to make sure you are on the right track.
4. Implement your issue, create a pull request (see below), and iterate from there.
### Create a pull request
Take a look at [Creating a pull request](https://help.github.com/articles/creating-a-pull-request). In a nutshell you need to:
1. [Fork](https://help.github.com/articles/fork-a-repo) this repository to your personal or institutional GitHub account (depending on the CLA you are working under). Be cautious of which branches you work from though (you'll want to base your work off master, or for Drupal modules use the most recent version branch). See [Fork a repo](https://help.github.com/articles/fork-a-repo) for detailed instructions.
2. Commit any changes to your fork.
3. Send a [pull request](https://help.github.com/articles/creating-a-pull-request) using the [pull request template](https://github.com/Islandora/documentation/blob/master/.github/PULL_REQUEST_TEMPLATE.md) to the Islandora GitHub repository that you forked in step 1. If your pull request is related to an existing issue -- for instance, because you reported a [bug/issue](https://github.com/Islandora/documentation/issues) earlier -- prefix the title of your pull request with the corresponding issue number (e.g. `issue-123: ...`). Please also include a reference to the issue in the description of the pull. This can be done by using '#' plus the issue number like so '#123', also try to pick an appropriate name for the branch in which you're issuing the pull request from.
You may want to read [Syncing a fork](https://help.github.com/articles/syncing-a-fork) for instructions on how to keep your fork up to date with the latest changes of the upstream (official) repository.
## License Agreements
The Islandora Foundation requires that contributors complete a [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or be covered by a [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). The signed copy of the license agreement should be sent to <a href="mailto:community@islandora.ca?Subject=Contributor%20License%20Agreement" target="_top">community@islandora.ca</a>. This license is for your protection as a contributor as well as the protection of the Foundation and its users; it does not change your rights to use your own contributions for any other purpose. A list of current CLAs is kept [here](https://github.com/Islandora/islandora/wiki/Contributor-License-Agreements).

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save