diff --git a/docs/alpaca/README.md b/docs/alpaca/README.md deleted file mode 120000 index d7acab9f4..000000000 --- a/docs/alpaca/README.md +++ /dev/null @@ -1 +0,0 @@ -../../Alpaca/README.md \ No newline at end of file diff --git a/docs/assets/Add content.jpg b/docs/assets/Add content.jpg new file mode 100644 index 000000000..a09bd5f03 Binary files /dev/null and b/docs/assets/Add content.jpg differ diff --git a/docs/assets/Add media.jpg b/docs/assets/Add media.jpg new file mode 100644 index 000000000..c51e8932c Binary files /dev/null and b/docs/assets/Add media.jpg differ diff --git a/docs/assets/Click media.jpg b/docs/assets/Click media.jpg new file mode 100644 index 000000000..ccbd97683 Binary files /dev/null and b/docs/assets/Click media.jpg differ diff --git a/docs/assets/Final loaded image.jpg b/docs/assets/Final loaded image.jpg new file mode 100644 index 000000000..18461ca87 Binary files /dev/null and b/docs/assets/Final loaded image.jpg differ diff --git a/docs/assets/Image option.png b/docs/assets/Image option.png new file mode 100644 index 000000000..5a9b938db Binary files /dev/null and b/docs/assets/Image option.png differ diff --git a/docs/assets/Under system select format.jpg b/docs/assets/Under system select format.jpg new file mode 100644 index 000000000..184eac1ed Binary files /dev/null and b/docs/assets/Under system select format.jpg differ diff --git a/docs/assets/add-content-collection.jpg b/docs/assets/add-content-collection.jpg new file mode 100644 index 000000000..a09bd5f03 Binary files /dev/null and b/docs/assets/add-content-collection.jpg differ diff --git a/docs/assets/add-content-loading-media.jpg b/docs/assets/add-content-loading-media.jpg new file mode 100644 index 000000000..a09bd5f03 Binary files /dev/null and b/docs/assets/add-content-loading-media.jpg differ diff --git a/docs/assets/add-media.jpg b/docs/assets/add-media.jpg new file mode 100644 index 000000000..c51e8932c Binary files /dev/null and b/docs/assets/add-media.jpg differ diff --git a/docs/assets/adding image.jpg b/docs/assets/adding image.jpg new file mode 100644 index 000000000..351d927e7 Binary files /dev/null and b/docs/assets/adding image.jpg differ diff --git a/docs/assets/adding-image.jpg b/docs/assets/adding-image.jpg new file mode 100644 index 000000000..351d927e7 Binary files /dev/null and b/docs/assets/adding-image.jpg differ diff --git a/docs/assets/click-media.jpg b/docs/assets/click-media.jpg new file mode 100644 index 000000000..ccbd97683 Binary files /dev/null and b/docs/assets/click-media.jpg differ diff --git a/docs/assets/collection-parent-node.jpg b/docs/assets/collection-parent-node.jpg new file mode 100644 index 000000000..4ee26208e Binary files /dev/null and b/docs/assets/collection-parent-node.jpg differ diff --git a/docs/assets/edit-photo-collection.jpg b/docs/assets/edit-photo-collection.jpg new file mode 100644 index 000000000..ab74f9663 Binary files /dev/null and b/docs/assets/edit-photo-collection.jpg differ diff --git a/docs/assets/final-loaded-image.jpg b/docs/assets/final-loaded-image.jpg new file mode 100644 index 000000000..18461ca87 Binary files /dev/null and b/docs/assets/final-loaded-image.jpg differ diff --git a/docs/assets/form-collection.jpg b/docs/assets/form-collection.jpg new file mode 100644 index 000000000..01f506531 Binary files /dev/null and b/docs/assets/form-collection.jpg differ diff --git a/docs/assets/image-option.png b/docs/assets/image-option.png new file mode 100644 index 000000000..5a9b938db Binary files /dev/null and b/docs/assets/image-option.png differ diff --git a/docs/assets/member-of-collection-selected.jpg b/docs/assets/member-of-collection-selected.jpg new file mode 100644 index 000000000..f6fef3096 Binary files /dev/null and b/docs/assets/member-of-collection-selected.jpg differ diff --git a/docs/assets/member-of-collection.jpg b/docs/assets/member-of-collection.jpg new file mode 100644 index 000000000..d17dccea9 Binary files /dev/null and b/docs/assets/member-of-collection.jpg differ diff --git a/docs/assets/members-tab.png b/docs/assets/members-tab.png new file mode 100644 index 000000000..7b3190931 Binary files /dev/null and b/docs/assets/members-tab.png differ diff --git a/docs/assets/repository item.jpg b/docs/assets/repository item.jpg new file mode 100644 index 000000000..372475e76 Binary files /dev/null and b/docs/assets/repository item.jpg differ diff --git a/docs/assets/repository-item-collection.jpg b/docs/assets/repository-item-collection.jpg new file mode 100644 index 000000000..33276b31f Binary files /dev/null and b/docs/assets/repository-item-collection.jpg differ diff --git a/docs/assets/repository-item.jpg b/docs/assets/repository-item.jpg new file mode 100644 index 000000000..372475e76 Binary files /dev/null and b/docs/assets/repository-item.jpg differ diff --git a/docs/assets/select-content-type-for-new-member.png b/docs/assets/select-content-type-for-new-member.png new file mode 100644 index 000000000..44db2f72e Binary files /dev/null and b/docs/assets/select-content-type-for-new-member.png differ diff --git a/docs/assets/snowfall-collection.jpg b/docs/assets/snowfall-collection.jpg new file mode 100644 index 000000000..72e5414a2 Binary files /dev/null and b/docs/assets/snowfall-collection.jpg differ diff --git a/docs/assets/system-collection.jpg b/docs/assets/system-collection.jpg new file mode 100644 index 000000000..690f18df9 Binary files /dev/null and b/docs/assets/system-collection.jpg differ diff --git a/docs/assets/under-system-select-format.jpg b/docs/assets/under-system-select-format.jpg new file mode 100644 index 000000000..184eac1ed Binary files /dev/null and b/docs/assets/under-system-select-format.jpg differ diff --git a/docs/chullo/README.md b/docs/chullo/README.md deleted file mode 120000 index 084e9a22f..000000000 --- a/docs/chullo/README.md +++ /dev/null @@ -1 +0,0 @@ -../../chullo/README.md \ No newline at end of file diff --git a/docs/crayfish-commons/README.md b/docs/crayfish-commons/README.md deleted file mode 120000 index ca3262580..000000000 --- a/docs/crayfish-commons/README.md +++ /dev/null @@ -1 +0,0 @@ -../../Crayfish-Commons/README.md \ No newline at end of file diff --git a/docs/crayfish/README.md b/docs/crayfish/README.md deleted file mode 120000 index 02d3b8553..000000000 --- a/docs/crayfish/README.md +++ /dev/null @@ -1 +0,0 @@ -../../Crayfish/README.md \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index b29899a63..b1c7088bb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,22 +1,7 @@ -# Islandora CLAW - -## Summary - Islandora is an open-source repository framework, that combines a Drupal front-end with a Fedora repository. It is a solution for institutions who want an extremely flexible and configurable preservation repository without creating a lot of custom code. -Islandora CLAW integrates [Drupal](https://www.drupal.org/) (currently, Drupal 8) and Duraspace's [Fedora Repository](https://wiki.duraspace.org/display/FF/Fedora+Repository+Home) project (currently, Fedora 5). Islandora CLAW is currently in beta. (todo: release section?) - -Islandora CLAW allows you to create nodes, media, files, and taxonomy terms in Drupal, which are converted to RDF -and pushed into a Fedora repository. It allows you to configure derivatives, automatic processes that transform files to other types for display or preservation, or extract additional metadata. - -## Installation +Islandora 8 integrates [Drupal](https://www.drupal.org/) (currently, Drupal 8) and Duraspace's [Fedora Repository](https://wiki.duraspace.org/display/FF/Fedora+Repository+Home) project (currently, Fedora 5). -Islandora CLAW is installed through an Ansible Playbook called [claw-playbook](https://github.com/Islandora-Devops/claw-playbook). -With Git, Vagrant, and Ansible installed, you can spin up a local development environment with -```bash -git clone https://github.com/Islandora-Devops/claw-playbook -cd claw-playbook -vagrant up -``` -See the Installation section for more information. +Islandora 8 allows you to create nodes, media, files, and taxonomy terms in Drupal, which are converted to RDF +and pushed into a Fedora repository. It also allows you to connect repository content with microservices, small webapps that transform files to other types for display or preservation, or to extract additional metadata. diff --git a/docs/installation.md b/docs/installation.md new file mode 100644 index 000000000..9dec2b361 --- /dev/null +++ b/docs/installation.md @@ -0,0 +1,8 @@ +Islandora 8 is installed through an Ansible Playbook called [claw-playbook](https://github.com/Islandora-Devops/claw-playbook). +With Git, Vagrant, and Ansible installed, you can spin up a local development environment with +```bash +git clone https://github.com/Islandora-Devops/claw-playbook +cd claw-playbook +vagrant up +``` +See the claw-playbook README for more information. diff --git a/docs/islandora/README.md b/docs/islandora/README.md deleted file mode 120000 index 406c65014..000000000 --- a/docs/islandora/README.md +++ /dev/null @@ -1 +0,0 @@ -../../islandora/README.md \ No newline at end of file diff --git a/docs/jsonld/README.md b/docs/jsonld/README.md deleted file mode 120000 index 39563e9a9..000000000 --- a/docs/jsonld/README.md +++ /dev/null @@ -1 +0,0 @@ -../../jsonld/README.md \ No newline at end of file diff --git a/docs/syn/README.md b/docs/syn/README.md deleted file mode 120000 index 48a38d98f..000000000 --- a/docs/syn/README.md +++ /dev/null @@ -1 +0,0 @@ -../../Syn/README.md \ No newline at end of file diff --git a/docs/technical-documentation/migrate-7x.md b/docs/technical-documentation/migrate-7x.md new file mode 100644 index 000000000..2af2546b5 --- /dev/null +++ b/docs/technical-documentation/migrate-7x.md @@ -0,0 +1,3 @@ + + +For tools to migrate into Islandora 8 from an existing Islandora 7 instance, please see [migrate_7x_claw](https://github.com/Islandora-devops/migrate_7x_claw) diff --git a/docs/technical-documentation/migrate-csv.md b/docs/technical-documentation/migrate-csv.md new file mode 100644 index 000000000..c0ed49f78 --- /dev/null +++ b/docs/technical-documentation/migrate-csv.md @@ -0,0 +1 @@ +For a full tutorial on migrating from CSV, including sample content, please see [migrate_islandora_csv](https://github.com/Islandora-CLAW/migrate_islandora_csv) diff --git a/docs/technical-documentation/testing-notes.md b/docs/technical-documentation/testing-notes.md index fc3a20d8f..7f6327c0b 100644 --- a/docs/technical-documentation/testing-notes.md +++ b/docs/technical-documentation/testing-notes.md @@ -1,16 +1,24 @@ -## How to look up a [Gemini](https://github.com/Islandora-CLAW/Crayfish/tree/master/Gemini) entry for a node? -To locate a particular Gemini entry for a node, you need to know the uuid of the node. You can get the uuid for the node by looking at the devel tab in Drupal or you can get it from json representation: `http://localhost:8000/node/2?_format=json`. +## How to look up a Gemini entry for a node? -You can look up Gemini entries for node using the Gemini service via curl or a REST client such as POSTman. +Gemini is a service that maps Drupal URIs to their corresponding Fedora URIs. Each entry is keyed on the UUID assigned by Drupal. + +To get the UUID of a node, taxonomy term, or media entity (see Note below) in Drupal, you can look in the Devel tab or in the JSON representation, e.g.: `http://localhost:8000/node/2?_format=json`. + +Then, you can look up the entry for that UUID using the Gemini service. It's a REST interface, so you can use a REST client such as POSTman, or a command-line tool such as `curl`: ``` -curl -H "Authorization:Bearer islandora" http://localhost:8000/gemini/uuid_value +curl -H "Authorization:Bearer islandora" http://localhost:8000/gemini/[uuid_value] ``` -Alternatively, you can login to MySQL database, select the gemini database and issue the following query: +Alternatively, you can login to your SQL database, choose the gemini database, and issue the following query: + ` select * from Gemini where uuid="uuid_value"; ` +Note: Media objects for files in Fedora aren't indexed in Gemini because they are not reliable. See [Github Issue #1079](https://github.com/Islandora-CLAW/CLAW/issues/1079). + ## How to look up a file metadata in Fedora? -Files in Fedora have the file URI in Gemini. However, Media for files in Fedora aren't indexed in Gemini because they are not reliable. To look up file metadata, go to `file_uri + /fcr:metadata`. +Files in Fedora have their file URIs in Gemini. To see file metadata in Fedora, go to `file_uri + /fcr:metadata`. + +For more information about the Gemini service, see the [Gemini README](https://github.com/Islandora-CLAW/Crayfish/tree/master/Gemini). diff --git a/docs/user-documentation/add-member-to-collection.md b/docs/user-documentation/add-member-to-collection.md deleted file mode 100644 index 9d938cf46..000000000 --- a/docs/user-documentation/add-member-to-collection.md +++ /dev/null @@ -1,13 +0,0 @@ -# Add a Member to a Collection - -To add a member to a collection, please follow these steps: - -1. Click the '+Add Content' button -2. Select 'Repository Item' -3. Complete the form. At a minimum, an item requires a title and a Content Model type at System > Model (e.g.`Image') -4. To associate an item with a Collection, please start typing the name of the Collection in the `Member Of' field. The Collection should appear in a dropdown list which can then be selected. -5. Click the 'Save' button at the end of the form - -You will now see the Drupal node of the item you just created. You will see a field 'Member of' which links to the Collection node which now contains this item. If you click on the name of the Collection you will view the Collection node and see the item listed under `Members'. - -Please note that this item does not yet contain any media. Please proceed to [Make Media (and upload a file)](https://islandora-claw.github.io/CLAW/docs/user-documentation/loading-media.md) diff --git a/docs/user-documentation/collections.md b/docs/user-documentation/collections.md index 3896f263b..ab2c58e1a 100644 --- a/docs/user-documentation/collections.md +++ b/docs/user-documentation/collections.md @@ -1,7 +1,68 @@ -!!! todo - * You might want to use collections to organize, describe, and help with navigation. - * A collection is just another node - * All nodes can be members of other nodes. - * You can edit a node’s Member relationships in… - * If you remove something from a collection does it get deleted? - * The ‘everything is a collection’ setting is is configurable, but where? +Collections are groups of repository content that can be described themselves. Repository content is aggregated in a collection by setting the `field_member_of` +entity reference field to point to a collection. Generally speaking, anything can behave as a collection, and anything with `field_member_of` can be a member of a collection. +However, collections are 'officially' designated as such by applying the "Collection" taxonomy term to an item's `field_model` field. By default, Islandora 8 has a context configured to handle collections by looking for that term. + +!!! Tip "Collections and Deleting" + Collections and their members are + independent of each other, and removing something from a collection does not delete it. **Similarly, deleting a + collection does not delete its members.** + +## Creating a Collection + +From the front page, click on Add content. This is under Tools. + +![Click on add content, under tools](../assets/add-content-collection.jpg) + +Then click on 'Repository Item' to give your collection the default metadata profile for Islandora 8. + +![Click on Repository Item](../assets/repository-item-collection.jpg) + +Fill out the form. + +Near the end of the form, under System, select Collection from the Model drop down list. + +![Near end of form, under System, select collection](../assets/system-collection.jpg) + +Click Save when done. + +![The collection has been created. Now let's add some members to this collection.](../assets/collection-parent-node.jpg) + +The collection has been created. Now let's add some members to this collection. + +## Add Existing Items to a Collection + +To populate a collection with existing items, return to any existing content and click on its Edit tab. This brings up the form for this item. + +![To populate a collection with existing items, return to any existing content and click on its Edit tab.](../assets/edit-photo-collection.jpg) + +Scroll down to the bottom and the System section. In the Member of section, start typing in the name of the collection this item should belong to. Select the name of the collection +you want from the autocomplete. + +![Scroll down to the bottom and the System section. In the Member of section, start typing in the name of the collection this item should belong to.](../assets/member-of-collection.jpg) + +The correct collection is now selected. Click Save when ready. + +![The correct collection is now selected. Click Save when ready.](../assets/member-of-collection-selected.jpg) + +To confirm, return to the collection and verify the new item appears in the collection's 'Members' block. + +![To confirm, return to the collection and verify the new item appears in the collection's 'Members' block.](../assets/snowfall-collection.jpg) + +## Add a New Item as a Member of a Collection + +To create an item and add it as a member to a collection in one step, visit a collection and click on its `Members` tab. From the +`Members` tab, you can manage the members of a collection and perform actions on them. + +![From the 'Members' tab, you can manage the members of a collection and perform bulk operations on them.](../assets/members-tab.png) + +Click on the `+Add member` button, and then select 'Repository Item' to give your new item a Content Type. Only content types that +have the `field_member_of` field will be available from this list. + +![Click on the '+Add member' button, and then select 'Repository Item' to give your new item a Content Type.](../assets/select-content-type-for-new-member.png) + +You are taken to the creation form for a Repository Item, but if you scroll down to the `System` section, you should see the widget +for 'Member Of' is already filled out for you with the appropriate collection. + +![You should see the widget for 'Member Of' is already filled out for you with the appropriate collection.](../assets/member-of-collection-selected.jpg) + +Click 'Save' at the end of the form to create the new item and add it as a member to the collection. diff --git a/docs/user-documentation/content_types.md b/docs/user-documentation/content_types.md index d684c0499..86198a679 100644 --- a/docs/user-documentation/content_types.md +++ b/docs/user-documentation/content_types.md @@ -1,8 +1,10 @@ # Create / Update a Content Type -!!! tip The screenshots and pre-existing data in this documentation assume that you are using the [Islandora Demo](https://github.com/Islandora-CLAW/islandora_demo) configuration. +!!! info + The screenshots and pre-existing data in this documentation assume that you are using the [Islandora Demo](https://github.com/Islandora-CLAW/islandora_demo) configuration. -!!! tip This page will address how to create and modify ingest forms (or rather, content types) via the GUI. For help working with forms via the API, please check out the [Further Reading](#further-reading) section for links to more advanced Drupal documentation. +!!! info + This page will address how to create and modify ingest forms (or rather, content types) via the GUI. For help working with forms via the API, please check out the [Further Reading](#further-reading) section for links to more advanced Drupal documentation. Since objects in Islandora 8 are stored in Drupal as Nodes, we use the standard Drupal Content Types system to create and edit our ‘ingest forms’ [Content Types in Drupal 8](https://www.drupal.org/docs/8/administering-drupal-8-site/managing-content-0/working-with-content-types-and-fields). Islandora 8 forms are Drupal forms, and if you are already familiar with Drupal Field UI, you’re already well equipped to create and modify your own ingest forms in Islandora 8. @@ -12,7 +14,7 @@ This page will address how to create and modify ingest forms (or rather, content If you have deployed your Islandora 8 with the Islandora Demo configuration, you will already have a Repository Item content type available, with pre-configured fields. In the Admin menu, go to Structure >> Content Types and find the Repository Item content type. Select *Manage Fields*. -![a screenshot of the Add Content Type page](/docs/assets/islandora8_managefields.png) +![a screenshot of the Add Content Type page](../assets/islandora8_managefields.png) You will see a list of the fields that are already available in the *Repository Item* content type. @@ -28,21 +30,24 @@ Let’s add a new field where a user can indicate if the repository item needs t 1. Then configure how the field is described (including its display label and the help text for when it appears on a form) and constraints on its use. In this case, the field will be required for this Content Type, and will be set to “on” by default. In the "Default Value" section, click the checkbox next to "Needs Review" to indicate all new repository items need review by default. 1. Click "Save settings." -![a screenshot of the field settings page](/docs/assets/islandora8_fieldsettings.png) +![a screenshot of the field settings page](../assets/islandora8_fieldsettings.png) The new field has been added: -![a screenshot of a "Needs Review?" field in the Drupal field UI](/docs/assets/islandora8_newfield.png) +![a screenshot of a "Needs Review?" field in the Drupal field UI](../assets/islandora8_newfield.png) And it appears in the ingest form when we try to create a new repository object. To test this, go to Content >> Add content >> Repository item: -![a screenshot of a "Needs Review?" field appearing at the bottom of a new node form](/docs/assets/islandora8_newfieldinform.png) +![a screenshot of a "Needs Review?" field appearing at the bottom of a new node form](../assets/islandora8_newfieldinform.png) -!!! tip New fields, with the exception of Typed Relation fields, are not automatically indexed in Fedora and the triple-store. Update the Content Type's RDF Mapping to enable indexing the field (see below). +!!! tip "RDF Mappings" + New fields, with the exception of Typed Relation fields, are not automatically indexed in Fedora and the triple-store. Update the Content Type's RDF Mapping to enable indexing the field (see below). -!!! tip New fields will not automatically be searchable. They need to be added to the SOLR index configuration. See the ['Setup and Configure Search'](searching.md) page for more information. +!!! tip "Search" + New fields will not automatically be searchable. They need to be added to the SOLR index configuration. See the ['Setup and Configure Search'](searching.md) page for more information. -!!! tip To add new behavior based on the results of this new field, check out [link to Context docs](docs/user-documentation/searching.md) +!!! tip "Context" + To add new behavior based on the results of this new field, check out [link to Context docs](searching.md) ### Change the Form Display @@ -57,7 +62,7 @@ When creating a new Repository Item, the new field appears at the top, as a set Finally, let’s change how the results of this field are displayed. Initially the new field shows up at the bottom of repository object pages: -![a screenshot of a "Needs Review?" field in the node display](/docs/assets/islandora8_fieldindisplay.png) +![a screenshot of a "Needs Review?" field in the node display](../assets/islandora8_fieldindisplay.png) In the Admin menu, return to Structure > Content Types and find the Repository Item content type again. Select Manage display from the dropdown menu. diff --git a/docs/user-documentation/create-collection.md b/docs/user-documentation/create-collection.md deleted file mode 100644 index b3de3a425..000000000 --- a/docs/user-documentation/create-collection.md +++ /dev/null @@ -1,10 +0,0 @@ -# Creating a Collection - -To create a collection, please follow these steps: - -1. Click the '+Add Content' button -2. Select 'Repository Item' -3. Fill in the metadata you would like. At a minimum, a Collection requires a title and the selection of 'Collection' under System > Model. It's also recommended to choose 'Collection' as the Resource Type, and fill out a Description and Date Created -4. Click the 'Save' button at the end of the form - -You will now see the Drupal node of the Collection you just created. The `Members' heading will have no content following it. Please proceed to [Add a Member to a Collection](https://islandora-claw.github.io/CLAW/) \ No newline at end of file diff --git a/docs/user-documentation/creating-an-object.md b/docs/user-documentation/creating-an-object.md new file mode 100644 index 000000000..051bbef84 --- /dev/null +++ b/docs/user-documentation/creating-an-object.md @@ -0,0 +1,50 @@ +To create a new item in your Islandora 8 digital repository, we start by creating a node. +A node holds the descriptive metadata for content, as well as grouping together an original file and +all of the derivatives files generated from it. To create a new node, click on Add content. +This is under Tools. + +![Click on add content](../assets/add-content-loading-media.jpg) + +Then click on Repository Item. This will assign the default metadata profile to your item. + +![Click on repository item](../assets/repository-item.jpg) + +Fill out the form. We're going to create an image, so under System, select "Image" from the "Model" +drop down box. Selecting different models will impact how Islandora handles content, dictating +important behaviours such as display and derivative generation. + +![Under system select appropriate model, or format](../assets/under-system-select-format.jpg) + +When done, click Save. + +## Upload an Original File + +Congratulations, you have created a Node! But alas, it has no files. To upload a file, click on the +node's Media tab. + +![When done, click on Media](../assets/click-media.jpg) + +Then click on Add Media (a blue button). + +![Click on Add Media](../assets/add-media.jpg) + +We want to add an image, so clicking on "Image" is appropriate in most circumstances. Drupal considers +any type of image that can be viewed natively in the browser as an "Image". For other image types that +require special viewers, such as Tiffs, you have to choose "File" + +![Click on image option](../assets/image-option.png) + +You are now presented with the form for the technical metadata of the file. There are three required +parts of the form: + +1. The media's name. +1. The file to upload. +1. The usage of the file, which dictates how Islandora interprets the file. To trigger derivative +generation, select "Original File" from the drop down box. + +![You are now presented with the form for the technical metadata of the file.](../assets/adding-image.jpg) + +Click save when done, and the file will be uploaded (to Fedora by default). Now return to the node +you created and you should see the image along with its descriptive metadata. + +![The file is now loaded, return to the main site to view](../assets/final-loaded-image.jpg) diff --git a/docs/user-documentation/datastreams.md b/docs/user-documentation/datastreams.md index df83a70c5..74ff7bc26 100644 --- a/docs/user-documentation/datastreams.md +++ b/docs/user-documentation/datastreams.md @@ -1,23 +1,47 @@ -## Media in Islandora 8 +Drupal 8 recognizes files (such as images, audio files, video files, etc.) but wraps each file in an intermediate structure called a +"media" to allow us to attach fields to files. It is in a media's fields that we store information about the media's file, such as file +size, width and height (for images), alt text (for images), creation date, and so on. -Islandora 8's equivalent of Islandora 7.x datastreams are "media". Drupal 8 recognizes files (such as images, audio files, video files, etc.) but wraps each file in an intermediate structure called a "media" to allow us to attach fields (including Drupal tags) to files. It is in a media's fields that we store information about the media's file, such as file size, width and height (for images), alt text (for images), creation date, and so on. +!!! note "Compared to Islandora 7" + In Islandora 7, this sort of technical metadata would have been stored in a single RELS-INT datastream. + In Islandora 8, each datastream holds its own technical metadata using media entities. -Just as an Islandora 7.x object can have any number of datastreams, and Islandora 8 object can have any number of media associated with it. Unlike in Islandora 7.x, which used unique datastream IDs to indicate the function of a file ("OBJ", "TN", etc.), Islandora 8 uses Drupal tags from the "Media Use" vocabulary to indicate a file's function. The values for this vocabulary show up in the media edit form like any other Drupal vocabulary: +## Media Ownership -![Media tab](../assets/media_use_vocabulary_media_form.png) +Islandora 8 objects can have any number of media associated with them. Media advertise which object they belong to using a special field, +"Media Of". By editing this field, you can change what node owns the media, and therefore, where it gets displayed or managed. + +!!! note "Compared to Islandora 7" + The direction of the relationship between objects and datastreams is reversed when compared to Islandora 7. Generally speaking, + objects are unaware of their datastreams, and it's a Drupal view that lists datastreams for an object. -Because the Media Use vocabulary is an ordinary Drupal vocabulary, Islandora 8 site administrators can add their own tags, and in turn, these local tags can be used to identify media that have some custom local purpose. In fact, the Media Use vocabulary has some tags that identify files that have no real use in Islandora 8 but that are migrated from Islandora 7.x. The "Audit Trail", "Collection Policy", "Dublin Core File", "MODS File", and "RELS-EXT File" all fall into this category. These media are attached to an Islandora 8 object during migrations from Islandora 7.x, so that the content you created in Islandora 7.x can be identified after it has been migrated to Islandora 8, despite the differences between the two platforms. +## Media Usage -### Derivatives +Islandora 8 media express their intended use with a special "Media Use" field, which accepts taxonomy terms from the "Media Usage" +vocabulary. Because the Media Usage vocabulary is an ordinary Drupal vocabulary, Islandora 8 site administrators can add their own +terms, and in turn, these local terms can be used to identify media that have some custom local purpose. + +![Media tab](../assets/media_use_vocabulary_media_form.png) -Islandora 8 generates derivatives much like Islandora 7 does. Just as Islandora 7.x's derivatives get assigned datastream IDs, Islandora 8's derivatives are assigned values from the Media Use vocabulary. For example, a thumbnail generated from am image is assigned the "Thumbnail image" tag. The derivatives are listed along with the rest of an Islandora 8 object's media, within the "Media" tab in the object: +!!! note "Compared to Islandora 7" + Terms from the Media Usage vocabulary are very similar to DSIDs in Islandora 7. The only difference is that a DSID is immutable, + but a media's usage can be changed at any time through the media's edit form. -![Media tab](../assets/media_tab.png) +## Derivatives -For this image, we can see that a "Service File" and a "Thumbnail Image" derivatives have been generated and added to the object's list of media: +Islandora generates derivatives based on Media Usage for a Media and the Model of the node that owns it. All of this is configurable +using context. + +By default, derivatives are generated from "Original Files". When an Original File is uploaded, if the node that +owns it has an "Image" model, image derivatives are created. If it's a "Video", then video derivatives are generated, etc... ![Media tab](../assets/islandora_8_derivatives_sample.png) -### Media revisions +Within an node's media tab, you can see all of its media, including derivatives, listed along with their usage. For example, from the +Original File, a lower quality "Service File" and a smaller "Thumbnail Image" file were generated. + +For more information on how to set configure derivatives, see the section on context. + +## Media revisions To be completed on resolution of https://github.com/Islandora-CLAW/CLAW/issues/1035. diff --git a/docs/user-documentation/metadata.md b/docs/user-documentation/metadata.md index c180935aa..051c88d35 100644 --- a/docs/user-documentation/metadata.md +++ b/docs/user-documentation/metadata.md @@ -2,9 +2,8 @@ > TL;DR: In Islandora 8 metadata values are stored in _fields_ attached to _entities_ (objects) which are then serialized as JSON-LD before being submitted to Fedora and/or indexed in a triple-store. -> !!! note "Drupal 8 terminology": -> -> In Drupal 8, Fields can be attached to _entity sub-types_ (e.g. Content types, Vocabularies) or _entities_ (Users, Files). For more on Fields, see ["2.3 Content Entities and Fields"](https://www.drupal.org/docs/user_guide/en/planning-data-types.html) and ["6.3 Adding Basic Fields to a Content Type"](https://www.drupal.org/docs/user_guide/en/structure-fields.html) in the Official Guide. +!!! note "Drupal 8 Terminology" + In Drupal 8, Fields can be attached to _entity sub-types_ (e.g. Content types, Vocabularies) or _entities_ (Users, Files). For more on Fields, see ["2.3 Content Entities and Fields"](https://www.drupal.org/docs/user_guide/en/planning-data-types.html) and ["6.3 Adding Basic Fields to a Content Type"](https://www.drupal.org/docs/user_guide/en/structure-fields.html) in the Official Guide. As described in the [objects section](objects.md), Islandora 8 digital objects are comprised of _nodes_ for descriptive metadata, _media_ for technical metadata, and _files_ for the binary objects. This section describes how descriptive metadata is managed in Islandora 8. @@ -16,14 +15,14 @@ For example, the 'islandora_demo' module provides a _Repository Item_ content ty ![Screenshot of the "Manage fields" page for the "Repository Item" content type from islandora_demo.](../assets/metadata_content_type_screenshot.png) -> !!! tip: The included title field is limited to 255 characters; if your content has longer titles it is encouraged to create a separate long_title field to store the full title and reserve the default title field for a display title. +!!! tip "Titles" + The included title field is limited to 255 characters; if your content has longer titles it is encouraged to create a separate long_title field to store the full title and reserve the default title field for a display title. -> !!! tip "7.x Migration Note: What about my XML?" -> -> In 7.x, metadata were (usually) stored within XML datastreams such as MODS or DC. In Islandora 8 we are breaking out -individual metadata elements into fields instead of using an attached XML document. The Metadata Interest Group is developing a default mapping which will provide a basic, yet customizable, transform between MODS metadata and Drupal fields in Islandora Demo. -> -> It is still possible to attach an XML file to a Islandora 8 object as a Media (see Datastreams), however there is no mechanism in Islandora 8 for editing XML in a user-friendly way. +!!! tip "7.x Migration Note: What about my XML?" + In 7.x, metadata were (usually) stored within XML datastreams such as MODS or DC. In Islandora 8 we are breaking out + individual metadata elements into fields instead of using an attached XML document. The Metadata Interest Group is developing a default mapping which will provide a basic, yet customizable, transform between MODS metadata and Drupal fields in Islandora Demo. + + It is still possible to attach an XML file to a Islandora 8 object as a Media (see Datastreams), however there is no mechanism in Islandora 8 for editing XML in a user-friendly way. A specific instance of a content type is called a _node_. In other words, a _node_ is the descriptive metadata for a particular digital object and the _content type_ is the node's metadata profile. Once a node is created, it cannot change its content type. To change a digital object's metadata profile (content type) a repository manager would need to create a new descriptive record (node) using the new metadata profile and then update the corresponding media records to point to the new descriptive record. diff --git a/docs/user-documentation/objects.md b/docs/user-documentation/objects.md index ea0deb80e..adb03f707 100644 --- a/docs/user-documentation/objects.md +++ b/docs/user-documentation/objects.md @@ -1,12 +1,20 @@ -## What is an Islandora 8 object? +As we learned in Intro, objects in an Islandora repository are represented as nodes in Drupal. +Because of this, their metadata profile, display, form (and much more) are configurable through +the Drupal UI. This gives repository administrators a huge degree of control over their repository +without any need for coding. Much more so than ever before. And since we're using a core Drupal +solution for modeling our objects, compatibility with third-party modules is virtually guaranteed. +This opens up a plethora of solutions from the Drupal community that will save you untold time +and effort when implementing your repository with Islandora. -### Object structure and properties +## Properties -Islandora 7 has the concept of an "object" that is based on the Fedora 3.x object model: an object has properties such as an owner, date created, date modified, and status, and each object contains a set of files (known as "datastreams") identified by datastream IDs, such as RELS-EXT, DC, MODS, and OBJ. The relationships between the object and its datastreams is highly constrained: datastreams cannot exist without a parent object, and each object can have only one DC datastream, one RELS-EXT datastream, and so on. - -In Islandora 8, we can also talk about "objects", but the underlying relationships between a collection of properties and its associated files differ substantially from those that make up an Islandora 7.x object. An object in Islandora 8 is a Drupal node, along with associated "media" (which is Drupal 8's name for files and their properties; media are described in detail [elsewhere](datastreams.md).) For example, an Islandora 8 object created by the Drupal user "admin" (user ID 1) on February 24, 2019, has the following properties: +Nodes have some basic properties that are common to all nodes, regardless of content type. These +properties are not fields. This means that +they cannot changed or removed. Their name, what type of data they hold, etc... are all baked in. +Here's an example of the basic properties you'll see on a node: ``` +nid: 1 uid: 1 title: "I am an Islandora 8 object" created: 1550703004 @@ -16,52 +24,72 @@ type: islandora_object status: 1 ``` -These are Drupal node properties, which all Drupal nodes have (although not all Drupal nodes have a type of "islandora_object", some have a type of "page" or "article" or "some_custom_content_type"). These node properties directly correspond to an Islandora 7.x object's properties: +As you can see, it's all system data used at the Drupal level to track the basics. -Islandora 7.x object properties | Islandora 8.x node/object properties +Property | Value ------------ | ------------- -owner | uid -dc.title | title -PID | uuid -content model | a tag from the Islandora Models vocabulary -status | status - -Islandora's 7.x's content models do not exist in Islandora 8. The primary way that Islandora 8 identifies what we think of as a content model in Islandora 7.x is using taxonomy terms from the "Islandora Models" vocabulary. To indicate that an Islandora 8 object is an image, video, etc, the user selects a model from a select list: - -![Media tab](../assets/object_model_tags.png) - -One implication of assigning a "content model" using a Drupal vocabulary is that in Islandora 7.x, an object's content model is immutable, but since it is possible to change the value of a taxonomy term assigned to a node, in Islandora 8, an object's model can be changed easily. - -### Drupal Content Types as Islandora Metadata Profiles - -In addition to the basic node properties identified above, Islandora 8 objects (like all Drupal nodes) can have fields, which is where most of what we would think of as descriptive metadata is stored. Since a specific set of fields is assigned to a Drupal content type, we can create different "metadata profiles", or in other words groups of required and optional fields, as different Drupal content types. For example, you might have a content type for a set of repository objects that have very specialized metadata requirements but another content type for generic repository objects that share a more general set of metadata fields. The section on [metadata](metadata.md) describes in more detail how fields on Islandora objects work. - -### Media - -If Drupal nodes are the Islandora 8 equivalent of Islandora 7.x objects, "media" are the equivalent of Islandora 7.x datastreams. In Drupal 8, media are wrappers around files (images, audio files, video files, XML files, etc.) that provide information about the files, such as their MIME type, size, created data, etc. Like Drupal nodes, media can have fields and tags. One important set of tags defined by Islandora is the "Media Use" vocabulary, and it is this vocabulary that defines what is the closest to what we know in Islandora 7.x as datastream IDs. Tags from this vocabulary include "Original File" (analogous to Islandora 7.x' OBJ datastream ID), "Preservation master", "Thumbnail" (analogous to the TN datastream ID), "FITS File", and "Extracted text" (analogous to the OCR datastream ID). - -Unlike Islandora 7.x objects, Islandora 8 objects do not know what media are attached to themselves; instead, each media knows what Drupal node it is associated with. In other words, the relationship between nodes and media is defined from the media's perspective, not the node's perspective. From an admin user's perspective, all the media associated with an Islandora 8 object are listed in the object's "Media" tab, which appears alongside its "View", "Edit", and "Delete" tabs: - -![Media tab](../assets/media_tab.png) - - -From a general user's perspective, the media in Islandora 8 are rendered within the parent node just like they are rendered within the parent object in Islandora 7.x. Additional information about media in Islandora 8 is available [elsewhere](datastreams.md). - -### Fedora - -Islandora 7.x basically inherits its object model from Fedora 3.x. In 7.x, Fedora stores all properties and content associated with an object - not only its owner, dc.title, status, PID, and status, but also any content files such as OBJ, DC, MODS, and RELS-EXT. In Islandora 7.x, Fedora is the authoritative, primary source for all aspects of an object. Fedora 3.x is not an optional component of an Islandora 7.x repository, it is the primary datastore. - -In Islandora 8, using Fedora is optional. That's right, optional. Drupal, and not Fedora, is the primary source of all aspects of an Islandora 8 object, and, with some variations, Drupal, not Fedora, is the primary datastore in an Islandora repository. If Fedora is present in an Islandora 8 repository, content in it is a tightly syncronized copy of object properties and files managed by Drupal. - -Even though Fedora is optional in Islandora 8, most repositories will use it since it provides its own set of services that are worth taking advantage of, such as: - -* flexible, and configurable, disk storage architecture -* fixity digest generation -* Memento versioning -* integration with RDF/Linked Data triplestores -* Integration with Microservices via API-X -* WebAC Policies for access control - -In Islandora repositories that use Fedora, all properties about Drupal nodes are mirrored in Fedora as RDF properties. But, even if an Islandora instance does not use Fedora, Drupal can provide an object's properties as RDF (again, Drupal is the primary source of data in Islandora 8). In addition, the Drupal media associated with Islandora 8 objects are persisted to Fedora, although exactly which media is configurable within the Islandora 8 admin interface. Just as Drupal out of the box has a public and private filesystem, Islandora adds a third filesystem to Drupal called, not surprisingly, "fedora", and it is to this filesystem that media are persisted. We will provide more information about Fedora's role in an Islandora 8 repository in the [metadata](metadata.md) and [media](media.md) sections. - - +nid | The local ID for a node +uuid | The global ID for any entity +title | The title for a node +created | Timestamp of when node was created +changed | Timestamp of when a node was last updated +type | Content type (e.g. which group of fields are present on the node) +status | Published, unpublished, etc... + +!!! note "Compared to Islandora 7" + These node properties directly correspond to following Islandora 7.x object properties: + + Islandora 7 | Islandora 8 + ----------- | ----------- + owner | uid + dc.title | title + PID | uuid + status | status + +## Fields + +In addition to the basic node properties identified above, Islandora objects (like all Drupal nodes) can have fields. +Most of what we would think of as descriptive metadata is stored as fields. Since a specific set of required and optional +fields is assigned to a node by giving it a content type, we can think of content types as metadata profiles for our objects. +For example, you might have a content type for a set of repository objects that have very specialized metadata requirements but +another content type for generic repository objects that share a more general set of metadata fields. +The section on [metadata](metadata.md) describes in more detail how fields on Islandora objects work. + +Islandora has a notion of a _content model_, which is used to identify what type of content is +being represented by a node (e.g. an image, a video, a collection of other items, etc...). This is done +using a special field, "Model", which accepts taxonomy terms from the "Islandora Models" vocabulary. +By applying a term from the Islandora Models vocabulary to a node, Islandora will become aware +of how to handle the node in response to certain events, like choosing a viewer or generating derivatives. + +![Model tags](../assets/object_model_tags.png) + +!!! note "Compared to Islandora 7" + Content models in Islandora 7 were immutable, and contained restrictions as to what + types of datastreams could be associated with an object. Islandora 8 imposes no such + restrictions. Content models can be changed at any time, and they in no way dictate what + types of media can be associated with a node. + +## Members + +Islandora has a notion of _membership_, which is used to create a parent/child relationship between +two nodes. Any two nodes can be related in this way, though typically, the parent node has a content +model of Collection. Membership (to a Collection or otherwise) is denoted using another special +field, "Member Of". The "Member Of" field can hold multiple references, so it is possible for a +single child to belong to multiple parents. + +!!! Note "Compared to Islandora 7" + In Islandora 7, there was a distinction between belonging to a collection and belonging to + a compound object. In Islandora 8, this distinction is not present, essentially making every object + a compound object. + +For any node, its "Members" tab can be used to see all its members. You can also perform Actions in +bulk on members using the check boxes and the Actions drop down. + +![Members tab](../assets/members-tab.png) + +## Media + +All nodes can contain any number of media. The media for any node can be managed using the "Media" tab when viewing a node. Much like +the "Members" tab, Actions can be performed in bulk using the check boxes and Actions drop down. + +![Media tab](../assets/islandora_8_derivatives_sample.png) diff --git a/docs/user-documentation/user-intro.md b/docs/user-documentation/user-intro.md index 82b6746a9..c2944c797 100644 --- a/docs/user-documentation/user-intro.md +++ b/docs/user-documentation/user-intro.md @@ -1,10 +1,45 @@ -# Introduction to Islandora CLAW +This _User Documentation_ section is aimed at site admins and repository managers who need to understand and configure their Islandora. +It will go in depth on how Islandora allows you to use the various features of Drupal to construct and display repository items. -This _User Documentation_ section is aimed at site admins and repository managers who need to understand and configure their Islandora. It will go in depth on how Islandora allows you to use the various features of Drupal to construct and display repository items. +Islandora, like Drupal, provides tools to create a site, but does not force you to conform to any specific site structure, +organization, or navigation. There is a hope that we can provide something useful out of the box, while also allowing the +full suite of Drupal configuration options. This out-of-the-box configuration is the Islandora Demo module. -Islandora, like Drupal, provides tools to create a site, but does not force you to conform to any specific site structure, organization, or navigation. There is a hope that we can provide something useable out of the box, while also allowing the full suite of Drupal configuration options. This out-of-the-box configuration is the Islandora Demo module. +It is recommended to be familiar with the basics of Drupal, including content types, fields, users, and views. +The [Official Drupal 8 User Guide](https://www.drupal.org/docs/8) and the +[Community Guide to Drupal 8](https://www.drupal.org/docs/user_guide/en/index.html) are a good place to start. + +## Object Modeling + +In Islandora, when we say _object_, we mean a collection of properties describing something. +And when we say _datastream_, we mean a file that is a digital representation of an object. +Content in our repositories is stored as an object that is associated with any number of datastreams. +In Drupal terms, that makes everything an _entity_, where + +- An object is a _node_ (a.k.a. _content_). +- Nodes have properties that can be configured called _fields_. +- Fields for nodes are grouped together as _content types_. +- Datastreams are _media_, which are _files_ that can have their own fields and _media types_. +- Metadata used to categorize entities are _taxonomy terms_, which also have their own fields and _vocabularies_. +They can represent everything from simple labels to more complex concepts such as people, places, and subjects. + +## Fedora + +Islandora 7.x basically inherits its object model from Fedora 3.x. In 7.x, Fedora stores all properties and content associated with an object - not only its owner, dc.title, status, PID, and status, but also any content files such as OBJ, DC, MODS, and RELS-EXT. In Islandora 7.x, Fedora is the authoritative, primary source for all aspects of an object. Fedora 3.x is not an optional component of an Islandora 7.x repository, it is the primary datastore. + +In Islandora 8, using Fedora is optional. That's right, optional. Drupal, and not Fedora, is the primary source of all aspects of an Islandora 8 object, and, with some variations, Drupal, not Fedora, is the primary datastore in an Islandora repository. If Fedora is present in an Islandora 8 repository, content in it is a tightly syncronized copy of object properties and files managed by Drupal. + +Even though Fedora is optional in Islandora 8, most repositories will use it since it provides its own set of services that are worth taking advantage of, such as: + +* flexible, and configurable, disk storage architecture +* fixity digest generation +* Memento versioning +* integration with RDF/Linked Data triplestores +* Integration with Microservices via API-X +* WebAC Policies for access control + +In Islandora repositories that use Fedora, all properties about Drupal nodes are mirrored in Fedora as RDF properties. But, even if an Islandora instance does not use Fedora, Drupal can provide an object's properties as RDF (again, Drupal is the primary source of data in Islandora 8). In addition, the Drupal media associated with Islandora 8 objects are persisted to Fedora, although exactly which media is configurable within the Islandora 8 admin interface. Just as Drupal out of the box has a public and private filesystem, Islandora adds a third filesystem to Drupal called, not surprisingly, "fedora", and it is to this filesystem that media are persisted. We will provide more information about Fedora's role in an Islandora 8 repository in the [metadata](metadata.md) and [media](datastreams.md) sections. -It is recommended to be familiar with the basics of Drupal, including content types, fields, users, and views. The [Official Drupal 8 User Guide](https://www.drupal.org/docs/8) and the [Community Guide to Drupal 8](https://www.drupal.org/docs/user_guide/en/index.html) are a good place to start. ## Architecture diff --git a/mkdocs.yml b/mkdocs.yml index 58db2b9c3..923a3da9d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -26,40 +26,38 @@ extra: nav: - Summary: 'index.md' + - Installation: 'installation.md' - User Documentation: - - 'Intro': 'user-documentation/user-intro.md' - - 'Objects are Nodes': 'user-documentation/objects.md' - - 'Metadata are Fields': 'user-documentation/metadata.md' - - 'Datastreams are Media': 'user-documentation/datastreams.md' - - 'Derivatives': 'user-documentation/derivatives.md' - - 'Organizing your Collections': 'user-documentation/collections.md' - - 'Managing Users': 'user-documentation/users.md' - - 'Access Control': 'user-documentation/access-control.md' - - 'Objects in Fedora/RDF': 'user-documentation/fedora-rdf.md' - - 'Solr': 'user-documentation/solr.md' - - 'Introduction to Islandora CLAW [old]': 'user-documentation/intro-to-claw.md' - - 'Islandora CLAW for 1.x Users [old]': 'user-documentation/CLAWfor1x.md' - - 'Introduction to Linked Data for CLAW [old]': 'user-documentation/intro-to-ld-for-claw.md' - - 'Getting Started with Islandora CLAW [old]': 'user-documentation/getting-started-with-islandora-claw.md' - - Technical Documentation: - - 'Structure': 'technical-documentation/structure.md' - - 'Components': - - 'Alpaca': 'alpaca/README.md' - - 'Chullo': 'chullo/README.md' - - 'Crayfish': 'crayfish/README.md' - - 'Crayfish Commons': 'crayfish-commons/README.md' - - 'Syn': 'syn/README.md' - - 'Islandora (Drupal Module)': 'islandora/README.md' - - 'Jsonld (Drupal Module)': 'jsonld/README.md' - - 'Minimum Viable Product': 'mvp/mvp_doc.md' - - 'How to build documenation': 'technical-documentation/docs-build.md' - - 'Syncing Drupal Project': 'technical-documentation/drupal-project.md' + - 'Introduction': 'user-documentation/user-intro.md' + - 'Nodes': 'user-documentation/objects.md' + - 'Media': 'user-documentation/datastreams.md' + - 'Make an Image': 'user-documentation/creating-an-object.md' + - 'Collections': 'user-documentation/collections.md' + - 'Metadata': 'user-documentation/metadata.md' + - 'Content Types': 'user-documentation/content_types.md' + - 'Searching': 'user-documentation/searching.md' + - 'Context': 'user-documentation/context.md' + - 'Views': 'user-documentation/create_update_views.md' + - 'Users': 'user-documentation/users.md' + - 'Blocks': 'user-documentation/placing-blocks.md' + - REST Documentation: + - 'Introduction': 'technical-documentation/using-rest-endpoints.md' + - 'GET': 'technical-documentation/rest-get.md' + - 'POST/PUT': 'technical-documentation/rest-create.md' + - 'PATCH': 'technical-documentation/rest-patch.md' + - 'DELETE': 'technical-documentation/rest-delete.md' + - 'Signposting': 'technical-documentation/rest-signposting.md' + - Developer Documentation: + - 'Installing Modules': 'technical-documentation/install-enable-drupal-modules.md' + - 'Running Tests': 'technical-documentation/running-automated-tests.md' + - 'Flysystem': 'technical-documentation/flysystem.md' - 'Versioning Policy': 'technical-documentation/versioning.md' + - 'Documentation Style Guide': 'technical-documentation/docs_style_guide.md' + - 'How to Build Documentation': 'technical-documentation/docs-build.md' + - 'Testing Notes': 'technical-documentation/testing-notes.md' + - Migration: + - 'CSV': 'technical-documentation/migrate-csv.md' + - 'Islandora 7': 'technical-documentation/migrate-7x.md' - Contributing: - 'How to contribute': 'contributing/CONTRIBUTING.md' - 'Committers': 'contributing/committers.md' - - 'Hacking on Islandora': 'contributing/hacking-on-islandora.md' - - Migration: - - 'Migration': 'migration/migration.md' - - 'Fedora namespace predicates': 'migration/fedora-namespace-predicates.md' - - 'Islandora namespace predicates': 'migration/islandora-namespace-predicates.md'