From 1551ad2089d5178a275a6ca3c270f0d2385f8e3d Mon Sep 17 00:00:00 2001 From: Rosie Le Faive Date: Fri, 8 Apr 2022 11:05:06 -0300 Subject: [PATCH 01/18] Edit Editing Docs for Islandora 8 audit. --- docs/contributing/editing-docs.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/contributing/editing-docs.md b/docs/contributing/editing-docs.md index 6a2077be1..5bdcb161b 100644 --- a/docs/contributing/editing-docs.md +++ b/docs/contributing/editing-docs.md @@ -1,7 +1,7 @@ # Editing Documentation ## Overview -These documentation pages are written and maintained by volunteers from the Islandora community, and new contributions are always welcomed. The documentation that you see here is formatted in the easy to use [MarkDown](http://en.wikipedia.org/wiki/Markdown) markup language, which can add formatting such as links, headings, and bolded text. Then the documentation HTML site is built using [mkdocs](https://www.mkdocs.org/) from the MarkDown files hosted in the Islandora [documentation](https://github.com/Islandora/documentation) GitHub repo. This documentation is rebuilt automatically upon changes being committed to GitHub, so you will see changes reflected here within a few minutes of making an edit. +These documentation pages are written and maintained by volunteers from the Islandora community, and new contributions are always welcomed. The documentation that you see here is formatted in the easy-to-use [MarkDown](http://en.wikipedia.org/wiki/Markdown) markup language, which can add formatting such as links, headings, and bolded text. Then the documentation HTML site is built using [mkdocs](https://www.mkdocs.org/) from the MarkDown files hosted in the Islandora [documentation](https://github.com/Islandora/documentation) GitHub repo. This documentation is rebuilt automatically upon changes being committed to GitHub, so you will see changes reflected here within a few minutes of making an edit. The [Islandora Documentation Interest Group](https://github.com/islandora-interest-groups/Islandora-Documentation-Interest-Group) holds regular meetings to discuss how to improve and expand Islandora's documentation. If you are interested in becoming involved, all are welcome to join. If you just want to make a contribution to the existing documentation, that process is outlined here. @@ -10,15 +10,17 @@ The [Islandora Documentation Interest Group](https://github.com/islandora-intere To edit documentation in Islandora, you must: - have a [GitHub](https://github.com/) account. - - NOTE: Github accounts are free and only require a valid email address. -- have a very basic familiarity with GitHub terms such as [fork](https://guides.github.com/activities/forking/), [branch](https://guides.github.com/activities/hello-world/#branch), and [pull request](https://guides.github.com/activities/hello-world/#pr). -- be a member of the Islandora [GitHub Organization](https://github.com/orgs/Islandora/people). - - This is only needed if you want to commit changes directly to the documentation. Non-members may still make pull requests. To request an invite, email community@islandora.ca or ask on the Islandora Slack. -- have a basic familiarity with [Markdown](http://en.wikipedia.org/wiki/Markdown), or a good [MarkDown cheat sheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet). + - Github accounts are free and only require a valid email address. +- have a very basic familiarity with Git terms such as [fork](https://guides.github.com/activities/forking/), [branch](https://guides.github.com/activities/hello-world/#branch), and [pull request](https://guides.github.com/activities/hello-world/#pr). +- optionally, be a member of the Islandora [GitHub Organization](https://github.com/orgs/Islandora/people). + - To request an invite, email community@islandora.ca or ask on the Islandora Slack. + - This is only needed if you want to commit changes directly to the documentation. Non-members may still make pull requests. +- be willing to learn with [Markdown](http://en.wikipedia.org/wiki/Markdown) - a good [MarkDown cheat sheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) can help. - for example, you may use MarkDown syntax to create links and section headings. - follow the [Islandora Documentation Style Guide](docs_style_guide.md). - have either an individual [Contributor License Agreement](https://github.com/Islandora/islandora/wiki/Contributor-License-Agreements) (CLA) on file with the Islandora Foundation, or work for an organization that has a corporate Contributor License Agreement on file with the Islandora Foundation. - for information on how to fill out and submit a Contributor License Agreement (CLA) for yourself and/or your organization visit the [License Agreements](https://islandora.github.io/documentation/contributing/CONTRIBUTING/#license-agreements) section of the "How to contribute" documentation page. +- by participating in the Islandora Community, you are agreeing to act according to the [Islandora Code of Conduct](https://www.islandora.ca/code-of-conduct). ## How to edit documentation using a web browser @@ -39,7 +41,7 @@ If you _are_ a member of the Islandora GitHub organization, you will be able to ![start a new branch and PR](../assets/editing-docs-branch.png) - You will be taken to the [pull request template](https://github.com/Islandora/documentation/blob/main/.github/PULL_REQUEST_TEMPLATE.md) which will prompt you to fill out some basic information about what you have changed, and why. Replace all relevant instances of _Replace this text_ with your own text. - - You will have the option to tag _Interested Parties_, or people you would like to review your work, by writing in their GitHub account name after the `@` symbol. If you don't have anyone specific in mind, you may tag `@Islandora/8-x-committers` to alert all Islandora 8 Committers that there is a new pull request for their review. + - You will have the option to tag _Interested Parties_, or people you would like to review your work, by writing in their GitHub account name after the `@` symbol. If you don't have anyone specific in mind, you may tag `@Islandora/8-x-committers` to alert all Islandora Committers that there is a new pull request for their review. ![start a new branch and PR](../assets/editing-docs-PR.png) From 7c908e8a3759a8a75399ba8d508d73250e3629b7 Mon Sep 17 00:00:00 2001 From: Rosie Le Faive Date: Fri, 8 Apr 2022 11:05:48 -0300 Subject: [PATCH 02/18] Audit navigation for islandora 8 --- mkdocs.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 2464b258e..d7b832372 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,7 +1,7 @@ -site_name: Islandora 8 +site_name: Islandora site_dir: site docs_dir: docs -site_description: Documentation for Islandora 8 +site_description: Documentation for Islandora dev_addr: 'localhost:8111' repo_url: https://github.com/Islandora/documentation @@ -60,9 +60,9 @@ nav: # also see user-intro.md#architecture for the cheeseburger/bento box analogy # Conceptual/ reference, all user roles/ sys admins/ developers: # procedural information should be moved out installation guides - - 'Modelling content in Islandora 8 vs. 7': 'user-documentation/objects_to_resource_nodes.md' + - 'Modelling content in Islandora vs. Legacy': 'user-documentation/objects_to_resource_nodes.md' # conceptual, all user roles - # moved from User documentation > Content in Islandora 8 + # moved from User documentation > Content in Islandora - Islandora Defaults: 'reference/islandora_defaults_reference.md' - Installation: # Procedural, different user roles: clarify who the audience is for a @@ -130,7 +130,7 @@ nav: # conceptual, repository managers - 'Versioning': 'user-documentation/versioning.md' # conceptual/ reference, repository managers/ developers - - Content in Islandora 8: + - Content in Islandora: # largely conceptual, repository managers and to some extent curators # currently duplicates a section also present under "User documentation", # develop into procedural documentation for repository From d01532f35ded51ea0c1844afc49550fc8b522941 Mon Sep 17 00:00:00 2001 From: Rosie Le Faive Date: Fri, 8 Apr 2022 14:28:39 -0300 Subject: [PATCH 03/18] Style Markdown properly. --- docs/contributing/contributing-workflow.md | 2 +- docs/contributing/editing-docs.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/contributing/contributing-workflow.md b/docs/contributing/contributing-workflow.md index a50160b66..8adb88c8a 100644 --- a/docs/contributing/contributing-workflow.md +++ b/docs/contributing/contributing-workflow.md @@ -33,7 +33,7 @@ We operate under the [Islandora Community Code of Conduct](https://www.islandora - If there is an urgent need for the pull request to be addressed quickly, indicate the need in the pull request template or a comment. - Complexity should also be taken into account when evaluating how quickly to merge a pull request. Changes that affect core modules or make extensive changes should receive more review and testing. - All interested parties should be satisfied before something is merged; no hard numbers. If you know who is likely to be interested, tag them. Tag the creator of the issue if possible. Make a reasonable effort. -- If a pull request languishes without response when one is needed, tag @Islandora/8-x-committers (or @Islandora-Devops/committers if you’re working on install code) with a reminder and/or put the issue on the agenda for the next Islandora 8 Tech Call +- If a pull request languishes without response when one is needed, tag @Islandora/8-x-committers (or @Islandora-Devops/committers if you’re working on install code) with a reminder and/or put the issue on the agenda for the next Islandora Tech Call - All contributions to GitHub must be accompanied by either an Individual Contributor License or a Corporate Contributor License covering the contributor. #### Development Workflow: diff --git a/docs/contributing/editing-docs.md b/docs/contributing/editing-docs.md index 5bdcb161b..e835e3a87 100644 --- a/docs/contributing/editing-docs.md +++ b/docs/contributing/editing-docs.md @@ -1,7 +1,7 @@ # Editing Documentation ## Overview -These documentation pages are written and maintained by volunteers from the Islandora community, and new contributions are always welcomed. The documentation that you see here is formatted in the easy-to-use [MarkDown](http://en.wikipedia.org/wiki/Markdown) markup language, which can add formatting such as links, headings, and bolded text. Then the documentation HTML site is built using [mkdocs](https://www.mkdocs.org/) from the MarkDown files hosted in the Islandora [documentation](https://github.com/Islandora/documentation) GitHub repo. This documentation is rebuilt automatically upon changes being committed to GitHub, so you will see changes reflected here within a few minutes of making an edit. +These documentation pages are written and maintained by volunteers from the Islandora community, and new contributions are always welcomed. The documentation that you see here is formatted in the easy-to-use [Markdown](http://en.wikipedia.org/wiki/Markdown) markup language, which can add formatting such as links, headings, and bolded text. Then the documentation HTML site is built using [mkdocs](https://www.mkdocs.org/) from the Markdown files hosted in the Islandora [documentation](https://github.com/Islandora/documentation) GitHub repo. This documentation is rebuilt automatically upon changes being committed to GitHub, so you will see changes reflected here within a few minutes of making an edit. The [Islandora Documentation Interest Group](https://github.com/islandora-interest-groups/Islandora-Documentation-Interest-Group) holds regular meetings to discuss how to improve and expand Islandora's documentation. If you are interested in becoming involved, all are welcome to join. If you just want to make a contribution to the existing documentation, that process is outlined here. @@ -15,8 +15,8 @@ To edit documentation in Islandora, you must: - optionally, be a member of the Islandora [GitHub Organization](https://github.com/orgs/Islandora/people). - To request an invite, email community@islandora.ca or ask on the Islandora Slack. - This is only needed if you want to commit changes directly to the documentation. Non-members may still make pull requests. -- be willing to learn with [Markdown](http://en.wikipedia.org/wiki/Markdown) - a good [MarkDown cheat sheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) can help. - - for example, you may use MarkDown syntax to create links and section headings. +- be willing to learn with [Markdown](http://en.wikipedia.org/wiki/Markdown) - a good [Markdown cheat sheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) can help. + - for example, you may use Markdown syntax to create links and section headings. - follow the [Islandora Documentation Style Guide](docs_style_guide.md). - have either an individual [Contributor License Agreement](https://github.com/Islandora/islandora/wiki/Contributor-License-Agreements) (CLA) on file with the Islandora Foundation, or work for an organization that has a corporate Contributor License Agreement on file with the Islandora Foundation. - for information on how to fill out and submit a Contributor License Agreement (CLA) for yourself and/or your organization visit the [License Agreements](https://islandora.github.io/documentation/contributing/CONTRIBUTING/#license-agreements) section of the "How to contribute" documentation page. From 17c26343f9116e92a840c9852f01c9a5e071fbef Mon Sep 17 00:00:00 2001 From: Rosie Le Faive Date: Fri, 8 Apr 2022 14:43:53 -0300 Subject: [PATCH 04/18] minor edits to rest-create. --- docs/technical-documentation/rest-create.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/technical-documentation/rest-create.md b/docs/technical-documentation/rest-create.md index a760b742f..a4ddbf389 100644 --- a/docs/technical-documentation/rest-create.md +++ b/docs/technical-documentation/rest-create.md @@ -14,9 +14,9 @@ These are defined under [Authorization](./using-rest-endpoints.md#authorization) ![REST configuration](../assets/rest-node-configuration.png) -The above setup shows that you can perform a POST request against a node at the `/node` endpoint with a body in the JSON format. +The above setup shows a configuration where the JSON format is enabled for GETE, PATCH, DELETE, and POST, with auththentication types "basic_auth" and "jwt_auth" enabled for each method. Thus, with this configuration, you can perform a POST request against a node at the `/node` endpoint with a body in the JSON format. -To create a node you need to provide two elements in your message body. The node type and any _required_ field values. +To create a node, you need to provide two elements in your message body: the node type and any required field values. For the islandora_defaults included Repository Item these are: @@ -26,7 +26,7 @@ For the islandora_defaults included Repository Item these are: A good way to make your first POST request is to perform a GET request against an existing node and erase all the extra content. -You can find more information about [GET requests here](./rest-get.md) +You can find more information about [GET requests here](./rest-get.md). Again we are using the json format. @@ -44,7 +44,7 @@ Look for the **type** element ] ``` -In our example "islandora_object" is the type of the default "Repository Item", if you have created a new type you will have a different target_id. +In our example "islandora_object" is the machine name of the content type "Repository Item". If you have created a new type you will have a different target_id. You will not need the `target_uuid`. @@ -73,7 +73,7 @@ Lastly look for the **field_model** element You can find the models by browsing the taxonomy terms available at `http://localhost:8000/admin/structure/taxonomy/manage/islandora_models/overview` -In my example installation 24 is an "Image", but let's create a collection which is 23. +In my example installation, term 24 is an "Image", but let's create a collection which is term 23. **Note**: Taxonomy terms may vary between instances and you should verify the correct number for your installation. @@ -143,15 +143,15 @@ The parts of the above request are: ## Files and Media -Drupal is supposed to have a way to upload files, but this seems to require the use of an X-CSRF-Token, which can only be retrieved using Cookie authentication and even then does not allow you to upload. +The Drupal REST UI is supposed to have a way to upload files, but this seems to require the use of an X-CSRF-Token, which can only be retrieved using Cookie authentication and even then does not allow you to upload. -Consequently there is a REST endpoint not listed in the REST UI, because it is not configurable and is part of the Islandora 8 system. +However there is a special REST endpoint created by Islandora, which is less configurable and is not part of the above-mentioned REST UI. This endpoint is available at `http://localhost:8000/node/{node id}/media/{media type}/{media use}` It only accepts PUT requests. If the media and file don't exist they are created, if they exist the file is updated with the new body. -The node and taxonomy term are used to search (via an [entity query](https://api.drupal.org/api/drupal/core!lib!Drupal.php/function/Drupal%3A%3AentityQuery/8.6.x)) for a media. If this media exists the body of the file is replaced with the new content, otherwise a new file is created to hold the contents. +The node id and taxonomy term id are used to search (via an [entity query](https://api.drupal.org/api/drupal/core!lib!Drupal.php/function/Drupal%3A%3AentityQuery/8.6.x)) for a matching media. If this media exists the body of the file is replaced with the new content, otherwise a new file and media are created to hold the content. The tokens to this URI are as follows: @@ -161,7 +161,7 @@ The tokens to this URI are as follows: You can find the media use taxonomy terms at `http://localhost:8000/admin/structure/taxonomy/manage/islandora_media_use/overview` -So the body of the request is the actual binary file to upload. +The body of the request is the actual binary file to upload. 🍎 For example: From 29e5f9a89bcc384bf9349bf941568be03551bcff Mon Sep 17 00:00:00 2001 From: Rosie Le Faive Date: Fri, 8 Apr 2022 17:15:26 -0300 Subject: [PATCH 05/18] Rename Islandora 8 a few more places. --- .../adding_format_jsonld.md | 4 ++-- .../checking-coding-standards.md | 4 ++-- docs/technical-documentation/diagram.md | 23 +++++++++---------- docs/technical-documentation/migrate-7x.md | 2 +- docs/technical-documentation/migrate-csv.md | 16 ++++++------- .../migration-islandora-workbench.md | 2 +- .../migration-migrate-api.md | 10 ++++---- .../migration-rest-api.md | 4 ++-- docs/technical-documentation/rest-create.md | 2 +- 9 files changed, 33 insertions(+), 34 deletions(-) diff --git a/docs/technical-documentation/adding_format_jsonld.md b/docs/technical-documentation/adding_format_jsonld.md index c1b55339a..2dd5165e6 100644 --- a/docs/technical-documentation/adding_format_jsonld.md +++ b/docs/technical-documentation/adding_format_jsonld.md @@ -7,7 +7,7 @@ be something like `http://localhost:8000/node/1` and not `http://localhost:8000/ ## Pre-1.0 installations. -If you are using a __very__ early version of Islandora 8 (pre-release), then you may have URIs with `_format=jsonld` at the end of them. +If you are using a __very__ early version of Islandora "8" (pre-release), then you may have URIs with `_format=jsonld` at the end of them. If you update to newer code, you will need to ensure that your site is configured to add `?_format=jsonld` back to the URLs if you want to maintain consistency. @@ -21,7 +21,7 @@ To turn the `?_format` parameter back on: - Go to `admin/config/search/jsonld` and confirm the *"Remove jsonld parameter from @ids"* checkbox is **unchecked**. - Add `strip_format_jsonld: false` to your Milliner config. If you deployed using the default Islandora-playbook this file would be located at `/var/www/html/Crayfish/Milliner/cfg/config.yaml`. -If you are using [Islandora-playbook](https://github.com/Islandora-Devops/Islandora-playbook) and are provisioning new environments for your older Islandora 8, you'll want to lock down the variables in your inventory that control this config. +If you are using [Islandora-playbook](https://github.com/Islandora-Devops/Islandora-playbook) and are provisioning new environments for your older Islandora, you'll want to lock down the variables in your inventory that control this config. - `crayfish_milliner_strip_format_jsonld: true` - `webserver_app_jsonld_remove_format: 1` diff --git a/docs/technical-documentation/checking-coding-standards.md b/docs/technical-documentation/checking-coding-standards.md index c3decb559..afb376f52 100644 --- a/docs/technical-documentation/checking-coding-standards.md +++ b/docs/technical-documentation/checking-coding-standards.md @@ -11,6 +11,6 @@ In both cases: * the path to the coding standard file can be relative to where you are running it from, e.g. when in `web`: `--standard=../vendor/drupal/coder/coder_sniffer/Drupal` * you can specify a single file to check, or a directory path; in the latter case, all files in that directory will be checked. -Islandora 8 runs `phpcs` in its Travis continuous integration environment, and there, it specifies which files to ignore and which files to check. It is a good idea for developers to specify the same options when running `phpcs` locally, prior to opening a pull request. For example (running `phpcs` from the within Drupal's `web` directory), you should use the following `--ignore` and `--extensions` options: +Islandora runs `phpcs` in its Github continuous integration environment, and there, it specifies which files to ignore and which files to check. It is a good idea for developers to specify the same options when running `phpcs` locally, prior to opening a pull request. For example (running `phpcs` from the within Drupal's `web` directory), you should use the following `--ignore` and `--extensions` options: -`../vendor/bin/phpcs --standard=../vendor/drupal/coder/coder_sniffer/Drupal --ignore=*.md --extensions=php,module,inc,install,test,profile,theme,css,info modules/contrib/my_module` \ No newline at end of file +`../vendor/bin/phpcs --standard=../vendor/drupal/coder/coder_sniffer/Drupal --ignore=*.md --extensions=php,module,inc,install,test,profile,theme,css,info modules/contrib/my_module` diff --git a/docs/technical-documentation/diagram.md b/docs/technical-documentation/diagram.md index 34a7f64f5..4b7049bf5 100644 --- a/docs/technical-documentation/diagram.md +++ b/docs/technical-documentation/diagram.md @@ -1,4 +1,4 @@ -# Islandora 8 Architecture Diagram +# Islandora Architecture Diagram ![Detailed diagram of the Islandora platform and its components](../assets/diagram.png) @@ -10,13 +10,12 @@ Diagram prepared by [Bethany Seeger](https://github.com/bseeger) based on work d The following components are microservices developed and maintained by the Islandora community. They are bundled under [Islandora Crayfish](https://github.com/Islandora/Crayfish): -* [FITS](https://github.com/roblib/CrayFits) - A Symfony 4 Microservice to retrieve FITS data and persist it as a Drupal media node. Works with [Islandora FITS](https://github.com/roblib/islandora_fits) -* [Gemini](https://github.com/Islandora/Crayfish/tree/dev/Gemini) - A path mapping service for Islandora 8. Gemini is what links content created in Drupal to data stored in Fedora. +* [FITS](https://github.com/roblib/CrayFits) - A Symfony 4 Microservice to generate FITS data and persist it as a Drupal media node. Works with [Islandora FITS](https://github.com/roblib/islandora_fits) * [Homarus](https://github.com/Islandora/Crayfish/tree/dev/Homarus) - Provides [FFmpeg](https://www.ffmpeg.org/) as a microservice for generating video and audio derivatives. * [Houdini](https://github.com/Islandora/Crayfish/tree/dev/Houdini) - [ImageMagick](https://www.imagemagick.org/script/index.php) as a microservice for generating image-based derivatives, including thumbnails. -* [Hypercube](https://github.com/Islandora/Crayfish/tree/dev/Hypercube) - [Tesseract](https://github.com/tesseract-ocr) as a microservice for OCR. +* [Hypercube](https://github.com/Islandora/Crayfish/tree/dev/Hypercube) - [Tesseract](https://github.com/tesseract-ocr) as a microservice for optical character recognition (OCR). * [Milliner](https://github.com/Islandora/Crayfish/tree/dev/Milliner) - A microservice that converts Drupal entities into Fedora resources. -* [Recast](https://github.com/Islandora/Crayfish/tree/dev/Recast) - A microservice that remaps Drupal URIs to add Fedora to Fedora links based on associated Drupal URIs in RDF. +* [Recast](https://github.com/Islandora/Crayfish/tree/dev/Recast) - A microservice that remaps Drupal URIs to add Fedora-to-Fedora links based on associated Drupal URIs in RDF. ### Other Open Source @@ -24,15 +23,15 @@ The following components are microservices developed and maintained by the Islan The following components are deployed with Islandora, but are developed and maintained by other open source projects: -* [Apache](https://www.apache.org/) - The Apache HTTP Server, colloquially called Apache, is a free and open-source cross-platform web server software. Provides the environment in which Islandora 8 and its components run. +* [Apache](https://www.apache.org/) - The Apache HTTP Server, colloquially called Apache, is a free and open-source cross-platform web server software. Provides the environment in which Islandora and its components run. * [ActiveMQ](https://activemq.apache.org/) - Apache ActiveMQ is an open source message broker written in Java together with a full Java Message Service client. * [Karaf](https://karaf.apache.org/) - A modular open source OSGi runtime environment. * [Tomcat](http://tomcat.apache.org/) - an open-source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and WebSocket technologies. Tomcat provides a "pure Java" HTTP web server environment in which Java code can run. - * [Solr](https://lucene.apache.org/solr/) - An open-source enterprise-search platform. Solr is the default search and discover layer of Islandora 8, and a key component in some methods for [migration from Islandora 7 to 8](https://github.com/Islandora-devops/migrate_7x_claw) + * [Solr](https://lucene.apache.org/solr/) - An open-source enterprise-search platform. Solr is the default search and discover layer of Islandora, and a key component in some methods for [migration to Isslandora from Islandora Legacy](https://github.com/Islandora-devops/migrate_7x_claw) * [Blazegraph](https://blazegraph.com/) - Blazegraph is a triplestore and graph database. -* [Cantaloupe](https://cantaloupe-project.github.io/) - an open-source dynamic image server for on-demand generation of derivatives of high-resolution source images. Used in Islandora 8 to support [IIIF](https://iiif.io/) -* [Drupal](https://www.drupal.org/) - Drupal is an open source content management system, and the heart of Islandora 8. All user and site-building aspects of Islandora 8 are experienced through Drupal as a graphical user interface. -* [Fedora](https://wiki.lyrasis.org/display/FF/Fedora+Repository+Home) - A robust, modular, open source repository system for the management and dissemination of digital content. The default smart storage for Islandora 8. -* [Matomo](https://matomo.org/) - Matomo, formerly Piwik, is a free and open source web analytics application. It provides usage statistics and a rich dashboard for Islandora 8. -* [MySQL](https://www.mysql.com/) - MySQL is an open-source relational database management system. Used as a Drupal database in Islandora 8, it can be easily replaced with other database management systems such as [PostgreSQL](https://www.postgresql.org/) +* [Cantaloupe](https://cantaloupe-project.github.io/) - an open-source dynamic image server for on-demand generation of derivatives of high-resolution source images. Used in Islandora to support [IIIF](https://iiif.io/) +* [Drupal](https://www.drupal.org/) - Drupal is an open source content management system, and the heart of Islandora. All user and site-building aspects of Islandora are experienced through Drupal as a graphical user interface. +* [Fedora](https://wiki.lyrasis.org/display/FF/Fedora+Repository+Home) - A robust, modular, open source repository system for the management and dissemination of digital content. The default smart storage for Islandora. +* [Matomo](https://matomo.org/) - Matomo, formerly Piwik, is a free and open source web analytics application. It provides usage statistics and a rich dashboard for Islandora. +* [MySQL](https://www.mysql.com/) - MySQL is an open-source relational database management system. Used as a Drupal database in Islandora, it can be easily replaced with other database management systems such as [PostgreSQL](https://www.postgresql.org/) * Triplestore - See Blazegraph. diff --git a/docs/technical-documentation/migrate-7x.md b/docs/technical-documentation/migrate-7x.md index 2fde92f85..11d57addc 100644 --- a/docs/technical-documentation/migrate-7x.md +++ b/docs/technical-documentation/migrate-7x.md @@ -3,4 +3,4 @@ [![Islandora Webinar: Migrating from Islandora 7 to Islandora 8](https://img.youtube.com/vi/n0kLOB8ZdbM/0.jpg)](https://www.youtube.com/watch?v=n0kLOB8ZdbM) Nov 21, 2019 -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) +For tools to migrate into Islandora from an existing Islandora Legacy 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 index f01a8950f..220b57559 100644 --- a/docs/technical-documentation/migrate-csv.md +++ b/docs/technical-documentation/migrate-csv.md @@ -22,12 +22,12 @@ ## Summary -This tutorial introduces you to the Drupal 8 Migrate tools available to create Islandora content. Whether you will eventually use CSVs or other sources (such as XML or directly from a 7.x Islandora) this tutorial should be useful as it covers the basics and mechanics of migration. +This tutorial introduces you to the Drupal Migrate tools available to create Islandora content. Whether you will eventually use CSVs or other sources (such as XML or directly from a Legacy Islandora) this tutorial should be useful as it covers the basics and mechanics of migration. This tutorial uses the configurations and code available in the [migrate_islandora_csv](https://github.com/Islandora/migrate_islandora_csv) module which, when enabled, will create three example migrations ready for you to use with the Migrate API. Each migration comes from one of the files in the `config/install` folder. We'll walk through them in detail below. The module is also uses [Features](https://www.drupal.org/project/feature) which allows you to make changes to the configuration files and sync those changes into your Drupal site. !!! note "A note on using Features" - This tutorial (and Islandora in general) makes heavy use of Features, which is an easy way to ship and install Drupal configuration. However, after enabling a Feature module, the code in that module's directory is no longer "live", as the configuration now resides in the Drupal database. If you change code in the YAML files, it will not take effect until you re-import the Feature. There is a walkthrough in the "Configuration" section of the [Migrate 7.x to 8](https://github.com/Islandora-Devops/migrate_7x_claw) tutorial. + This tutorial (and Islandora in general) makes heavy use of Features, which is an easy way to ship and install Drupal configuration. However, after enabling a Feature module, the code in that module's directory is no longer "live", as the configuration now resides in the Drupal database. If you change code in the YAML files, it will not take effect until you re-import the Feature. There is a walkthrough in the "Configuration" section of the [Migrate 7.x to Islandora](https://github.com/Islandora-Devops/migrate_7x_claw) tutorial. Sample CSV and images are also included in the module as a convenience so they are easily available on the Drupal server running the migration. (This is not the recommended method for making files available to Drupal in a real migration.) @@ -37,20 +37,20 @@ When you are ready to create your actual migrations, the contents of this reposi ## Introduction -__Why CSV?__ CSV files (whether separated by commas, tabs, or other delimiters) are easy to understand and work with, and there's good tooling available for using them with Drupal 8's [Migrate API](https://www.drupal.org/docs/8/api/migrate-api/migrate-api-overview). The Drupal contrib module [migrate_source_csv](https://www.drupal.org/project/migrate_source_csv) provides a source plugin that reads from a CSV file, and [migrate_plus](https://www.drupal.org/project/migrate_plus/) provides more tools and flexibility for creating migrations, including the ability to create customized migrations using YAML and package them up as [Features](https://www.drupal.org/project/features/). +__Why CSV?__ CSV files (whether separated by commas, tabs, or other delimiters) are easy to understand and work with, and there's good tooling available for using them with Drupal's [Migrate API](https://www.drupal.org/docs/drupal-apis/migrate-api/migrate-api-overview). The Drupal contrib module [migrate_source_csv](https://www.drupal.org/project/migrate_source_csv) provides a source plugin that reads from a CSV file, and [migrate_plus](https://www.drupal.org/project/migrate_plus/) provides more tools and flexibility for creating migrations, including the ability to create customized migrations using YAML and package them up as [Features](https://www.drupal.org/project/features/). In this tutorial, we'll be inspecting each migration file in detail before running it. You'll start out by migrating the images themselves first, and then you'll create various Drupal entities to describe the files from the metadata in the CSV. It's not as scary as it sounds (especially since this module contains the data we'll be using in a `data` directory), but you will need a few things before beginning: -1. An instance of Islandora 8. Use [Islandora 8 playbook](https://github.com/Islandora-Devops/islandora-playbook) to spin up an environment pre-loaded with all the modules you need (except this one) +1. An instance of Islandora. Use [Islandora Playbook](https://github.com/Islandora-Devops/islandora-playbook) to spin up an environment pre-loaded with all the modules you need (except this one) 1. Some basic command line skills. You won't need to know much, but you'll have to `vagrant ssh` into the box, navigate into Drupal, and use `git` and `drush`, etc... If you can copy/paste into a terminal, you'll survive. -A big part of this tutorial relies on the [islandora_defaults](https://github.com/Islandora/islandora_defaults) and [controlled_access_terms_defaults](https://github.com/Islandora/controlled_access_terms/tree/8.x-1.x/modules/controlled_access_terms_defaults) features, which define the default metadata profile for Islandora (which we'll be migrating into). You're not required to use the `islandora_defaults` or `controlled_access_terms_defaults` for your repository, but for the purposes of demonstration, it saves you a lot of user interface administrivia so you can focus just on the learning how to migrate. By the time you are done with this exercise, you'll be able to easily apply your knowledge to migrate using any custom metadata profile you can build using Drupal. +A big part of this tutorial relies on the [islandora_defaults](https://github.com/Islandora/islandora_defaults) and [controlled_access_terms_defaults](https://github.com/Islandora/controlled_access_terms/tree/2.x/modules/controlled_access_terms_defaults) features, which define the default metadata profile for Islandora (which we'll be migrating into). You're not required to use the `islandora_defaults` or `controlled_access_terms_defaults` for your repository, but for the purposes of demonstration, it saves you a lot of user interface administrivia so you can focus just on the learning how to migrate. By the time you are done with this exercise, you'll be able to easily apply your knowledge to migrate using any custom metadata profile you can build using Drupal. ## Overview -The Migrate API is the main way to ingest batches of data into Drupal (and because Islandora 8 is Drupal, into Islandora). The Migrate module only provides the framework, it's up to you to create the rules that take data from a _source_, through a _process_ (i.e. a mapping) to a _destination_. A set of these rules is called a "migration". It has to be set up (as a Configuration Entity, either by importing a YAML file or by installing a Feature) and then it has to be run. +The Migrate API is the main way to ingest batches of data into Drupal (and because Islandora is Drupal, into Islandora). The Migrate module only provides the framework, it's up to you to create the rules that take data from a _source_, through a _process_ (i.e. a mapping) to a _destination_. A set of these rules is called a "migration". It has to be set up (as a Configuration Entity, either by importing a YAML file or by installing a Feature) and then it has to be run. -Once a migration has been run, it will have created (or updated) a bunch of Drupal entities of one type - whether that's taxonomy terms, nodes, files, etc. Since an Object in Islandora 8 is made up of several different Drupal entities that refer to each other, it's going to take multiple migrations to create an Islandora object, and it's important to perform these migrations in a sensible order. +Once a migration has been run, it will have created (or updated) a bunch of Drupal entities of one type - whether that's taxonomy terms, nodes, files, etc. Since an Object in Islandora is made up of several different Drupal entities that refer to each other, it's going to take multiple migrations to create an Islandora object, and it's important to perform these migrations in a sensible order. A basic Islandora object is at minimum: - a file, which holds the actual binary contents of an item @@ -812,4 +812,4 @@ But really the best thing to do is try and get your data into Islandora! We int In some repositories, these CSVs can be used to make bulk updates to metadata. Just make your changes to maintain the CSVs, then run the migration(s) again with the --update flag. This will not always be efficient, as you'll update every entity, even if it didn't change. But, by breaking down your CSVs per collection or object type, you could keep them small enough to use this process for a small repository. -There is also a tool for migrating directly from an Islandora 7.x to Islandora 8 ([migrate_7x_claw](https://github.com/Islandora-Devops/migrate_7x_claw)), using Solr, XPaths, and Fedora calls to pull files and objects directly into Islandora 8. It may be worth checking out, and/or using in conjunction with a CSV migration. +There is also a tool for migrating directly from a Legacy Islandora to Islandora ([migrate_7x_claw](https://github.com/Islandora-Devops/migrate_7x_claw)), using Solr, XPaths, and Fedora calls to pull files and objects directly into Islandora 8. It may be worth checking out, and/or using in conjunction with a CSV migration. diff --git a/docs/technical-documentation/migration-islandora-workbench.md b/docs/technical-documentation/migration-islandora-workbench.md index 88bed98cc..bb349a527 100644 --- a/docs/technical-documentation/migration-islandora-workbench.md +++ b/docs/technical-documentation/migration-islandora-workbench.md @@ -77,6 +77,6 @@ This [video](https://www.youtube.com/watch?v=hNS5ouqdcfk) (Dec 17, 2020) is a de #### Islandora Online: Islandora Migration Tools -This [video](https://www.youtube.com/watch?v=95Bnix-z1zY) (Aug 10, 2020) provides an overview of the **Islandora Workbench** and the two other options available to migrate data into an Islandora 8 installation. +This [video](https://www.youtube.com/watch?v=95Bnix-z1zY) (Aug 10, 2020) provides an overview of the **Islandora Workbench** and the two other options available to migrate data into an Islandora installation. [![Islandora Online: Islandora Migration Tools](https://img.youtube.com/vi/95Bnix-z1zY/0.jpg)](https://www.youtube.com/watch?v=95Bnix-z1zY) diff --git a/docs/technical-documentation/migration-migrate-api.md b/docs/technical-documentation/migration-migrate-api.md index 9f57ad91e..9d0bb6e61 100644 --- a/docs/technical-documentation/migration-migrate-api.md +++ b/docs/technical-documentation/migration-migrate-api.md @@ -1,10 +1,10 @@ ## Migrate API -Uses the Drupal 8 [Migrate API](https://www.drupal.org/docs/8/api/migrate-api/migrate-api-overview), which "provides services for migrating data from a source system to Drupal 8. +Uses the Drupal [Migrate API](https://www.drupal.org/docs/drupal-apis/migrate-api/migrate-api-overview), which "provides services for migrating data from a source system" to Drupal 8, 9, or 10. The "source system" can be almost anything: -- an Islandora 7 system +- an Islandora Legacy system - a group of scanned images and their metadata inside a CSV file - a web API @@ -30,7 +30,7 @@ Why use the Migrate API? - Documentation section on [migrate_islandora_csv](migrate-csv.md) - **migrate_7x_claw** - - - A tool to get all your Islandora 7 content migrated over + - A tool to get all your Islandora Legacy content migrated over - Documentation section on [migrate_7x_claw](migrate-7x) #### Recap of migrate_islandora_csv @@ -46,7 +46,7 @@ Why use the Migrate API? #### Recap of migrate_7x_claw -- Designed to migrate Islandora 7 data to Islandora 8. +- Designed to migrate Islandora Legacy data to Islandora. - DATASTREAMS - All of your datasteams, including the audit trail, are migrated - METADATA @@ -57,7 +57,7 @@ Why use the Migrate API? ##### To make migrate_7x_claw work you need - Access - - You need credentials to both your Islandora 7 and 8 installs. + - You need credentials to both your Islandora Legacy and Islandora installs. - Migrate API Knowledge - The tutorial for migrate_islandora_csv Is still relevant diff --git a/docs/technical-documentation/migration-rest-api.md b/docs/technical-documentation/migration-rest-api.md index 315eabc8c..0b32ec3ff 100644 --- a/docs/technical-documentation/migration-rest-api.md +++ b/docs/technical-documentation/migration-rest-api.md @@ -3,7 +3,7 @@ Why use the REST API? - **Works anywhere**: You don’t have to work on the Drupal server. Migrate from your laptop! -- **No PHP required**: Use any language that can make an http request. Even cURL will do just fine. +- **No PHP required**: Use any language that can make an HTTP request. Even cURL will do just fine. - **JSON**: Why use XML if you don’t have to? BONUS: It’s just Drupal’s REST API @@ -19,6 +19,6 @@ Just be aware, you are writing everything yourself! (In other words you are maki ### Videos -This [video](https://www.youtube.com/watch?v=95Bnix-z1zY) (Aug 10, 2020) provides an overview of the **REST API** and the two other options available to migrate data into an Islandora 8 installation. +This [video](https://www.youtube.com/watch?v=95Bnix-z1zY) (Aug 10, 2020) provides an overview of the **REST API** and the two other options available to migrate data into an Islandora installation. [![Islandora Online: Islandora Migration Tools](https://img.youtube.com/vi/95Bnix-z1zY/0.jpg)](https://www.youtube.com/watch?v=95Bnix-z1zY) diff --git a/docs/technical-documentation/rest-create.md b/docs/technical-documentation/rest-create.md index a4ddbf389..00d8a27a5 100644 --- a/docs/technical-documentation/rest-create.md +++ b/docs/technical-documentation/rest-create.md @@ -14,7 +14,7 @@ These are defined under [Authorization](./using-rest-endpoints.md#authorization) ![REST configuration](../assets/rest-node-configuration.png) -The above setup shows a configuration where the JSON format is enabled for GETE, PATCH, DELETE, and POST, with auththentication types "basic_auth" and "jwt_auth" enabled for each method. Thus, with this configuration, you can perform a POST request against a node at the `/node` endpoint with a body in the JSON format. +The above setup shows a configuration where the JSON format is enabled for GET, PATCH, DELETE, and POST, with auththentication types "basic_auth" and "jwt_auth" enabled for each method. Thus, with this configuration, you can perform a POST request against a node at the `/node` endpoint with a body in the JSON format. To create a node, you need to provide two elements in your message body: the node type and any required field values. From c7edf6acbf409c0489e67acdb73d441e6fb04dfa Mon Sep 17 00:00:00 2001 From: Rosie Le Faive Date: Fri, 8 Apr 2022 17:17:23 -0300 Subject: [PATCH 06/18] typo. --- docs/technical-documentation/diagram.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/technical-documentation/diagram.md b/docs/technical-documentation/diagram.md index 4b7049bf5..6e09a1117 100644 --- a/docs/technical-documentation/diagram.md +++ b/docs/technical-documentation/diagram.md @@ -27,7 +27,7 @@ The following components are deployed with Islandora, but are developed and main * [ActiveMQ](https://activemq.apache.org/) - Apache ActiveMQ is an open source message broker written in Java together with a full Java Message Service client. * [Karaf](https://karaf.apache.org/) - A modular open source OSGi runtime environment. * [Tomcat](http://tomcat.apache.org/) - an open-source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and WebSocket technologies. Tomcat provides a "pure Java" HTTP web server environment in which Java code can run. - * [Solr](https://lucene.apache.org/solr/) - An open-source enterprise-search platform. Solr is the default search and discover layer of Islandora, and a key component in some methods for [migration to Isslandora from Islandora Legacy](https://github.com/Islandora-devops/migrate_7x_claw) + * [Solr](https://lucene.apache.org/solr/) - An open-source enterprise-search platform. Solr is the default search and discover layer of Islandora, and a key component in some methods for [migration to Islandora from Islandora Legacy](https://github.com/Islandora-devops/migrate_7x_claw) * [Blazegraph](https://blazegraph.com/) - Blazegraph is a triplestore and graph database. * [Cantaloupe](https://cantaloupe-project.github.io/) - an open-source dynamic image server for on-demand generation of derivatives of high-resolution source images. Used in Islandora to support [IIIF](https://iiif.io/) * [Drupal](https://www.drupal.org/) - Drupal is an open source content management system, and the heart of Islandora. All user and site-building aspects of Islandora are experienced through Drupal as a graphical user interface. From f756cc606066048157178dcaf9bae4ac0507a080 Mon Sep 17 00:00:00 2001 From: Tom Misilo Date: Sun, 10 Apr 2022 17:56:30 -0500 Subject: [PATCH 07/18] Some Islandora 8 to Islandora reference changes Some Islandora Legacy changes were made in there as well when in the same context as "8" --- docs/alpaca/alpaca-technical-stack.md | 6 ++--- docs/concepts/accessibility.md | 2 +- docs/contributing/committers.md | 12 +++++----- .../templates/closeCommitterVote.txt | 2 +- .../templates/committerAnnounce.txt | 2 +- .../templates/committerInvite.txt | 6 ++--- .../templates/committerInviteCLA.txt | 4 ++-- docs/index.md | 2 +- docs/installation/component_overview.md | 4 ++-- docs/installation/docker-introduction.md | 2 +- .../installing_fedora_syn_and_blazegraph.md | 2 +- .../manual/installing_karaf_and_alpaca.md | 2 +- docs/installation/manual/introduction.md | 2 +- docs/installation/playbook.md | 2 +- .../islandora/drupal-bundle-configurations.md | 2 +- docs/placeholder.md | 2 +- .../technical-documentation/drupal-project.md | 2 +- docs/technical-documentation/flysystem.md | 2 +- .../install-enable-drupal-modules.md | 6 ++--- docs/technical-documentation/migrate-7x.md | 4 ++-- docs/technical-documentation/migrate-csv.md | 2 +- .../migration-migrate-api.md | 2 +- .../migration-overview.md | 4 ++-- .../updating_drupal.md | 8 +++---- .../using-rest-endpoints.md | 2 +- docs/tutorials/create_update_views.md | 4 ++-- docs/tutorials/how-to-create-collection.md | 2 +- docs/user-documentation/content_types.md | 8 +++---- docs/user-documentation/context.md | 12 +++++----- docs/user-documentation/extending.md | 22 +++++++++---------- docs/user-documentation/file_viewers.md | 4 ++-- docs/user-documentation/iiif.md | 6 ++--- .../intro-to-ld-for-islandora-8.md | 8 +++---- docs/user-documentation/media.md | 6 ++--- docs/user-documentation/metadata.md | 6 ++--- docs/user-documentation/multilingual.md | 8 +++---- .../objects_to_resource_nodes.md | 14 ++++++------ docs/user-documentation/paged-content.md | 2 +- .../recipes/alexa_search.md | 2 +- docs/user-documentation/resource-nodes.md | 16 +++++++------- docs/user-documentation/searching.md | 6 ++--- docs/user-documentation/usage-stats.md | 2 +- docs/user-documentation/user-intro.md | 6 ++--- docs/user-documentation/users.md | 4 ++-- docs/user-documentation/video-docs.md | 2 +- 45 files changed, 113 insertions(+), 113 deletions(-) diff --git a/docs/alpaca/alpaca-technical-stack.md b/docs/alpaca/alpaca-technical-stack.md index efa0a2045..059237c09 100644 --- a/docs/alpaca/alpaca-technical-stack.md +++ b/docs/alpaca/alpaca-technical-stack.md @@ -12,7 +12,7 @@ Apache Karaf is a container that can be used to deploy an array of applications ### Karaf - Bundle - Hello World Download a bundle to the [islandora-playbook](https://github.com/Islandora-Devops/isladora-playbook) (ex to `/home/ubuntu` directory). An example hello world bundle is [here](https://github.com/moghaddam/developmentor/blob/master/helloworld/target/helloworld-1.0.0.jar). -In the Islandora 8 playbook, you can login to Karaf using ssh. The password is karaf. You can also use the client here: `/opt/karaf/bin/client`. Karaf client allows the use of Linux commands such as `grep` in addition to Karaf commands. +In the Islandora playbook, you can login to Karaf using ssh. The password is karaf. You can also use the client here: `/opt/karaf/bin/client`. Karaf client allows the use of Linux commands such as `grep` in addition to Karaf commands. ``` ssh -p 8101 karaf@localhost @@ -136,7 +136,7 @@ public class HelloworldRouter extends RouteBuilder { ``` apply plugin: 'osgi' -description = 'Islandora 8 HelloWorld' +description = 'Islandora HelloWorld' dependencies { compile group: 'org.apache.camel', name: 'camel-core', version: camelVersion @@ -217,7 +217,7 @@ $ ./activemq start When ActiveMQ gets started, go to http://localhost:8161/admin/. You can login using admin:admin. -Note that ActiveMQ in Islandora 8 playbook does not have a UI. +Note that ActiveMQ in Islandora playbook does not have a UI. ## References * [OSGI for Beginners](http://www.theserverside.com/news/1363825/OSGi-for-Beginners) diff --git a/docs/concepts/accessibility.md b/docs/concepts/accessibility.md index 1017315b5..e8f98bc38 100644 --- a/docs/concepts/accessibility.md +++ b/docs/concepts/accessibility.md @@ -1,4 +1,4 @@ -Islandora 8's accessibility features are currently provided by Drupal 8 and contributed Drupal 8 modules. These pages within the Accessibility section of the Drupal documentation can provide guidance: +Islandoras accessibility features are currently provided by Drupal 8 and contributed Drupal 8 modules. These pages within the Accessibility section of the Drupal documentation can provide guidance: - [Drupal 8 Accessibility Features](https://www.drupal.org/docs/8/accessibility/drupal-8-accessibility-features) (included in core Drupal) - [Contributed Modules for Extending Accessibility in Drupal 8](https://www.drupal.org/docs/8/accessibility/contributed-modules-for-extending-accessibility-in-drupal-8) diff --git a/docs/contributing/committers.md b/docs/contributing/committers.md index e35176a98..0da75cd87 100644 --- a/docs/contributing/committers.md +++ b/docs/contributing/committers.md @@ -1,6 +1,6 @@ -# Islandora 8 Committers +# Islandora Committers -Islandora 8 is open source and released under MIT and GPLv2 licenses. The software and associated documentation is developed collectively by a community of contributors and committers. All interested community members are encouraged to contribute to the project. Contributors who demonstrate sustained engagement with the project through quality participation in meetings, mailing lists, documentation and code updates can be nominated by existing committers to also become a committers. It should be emphasized that committers need not be limited to software developers. Community members with skills in documentation and testing, for example, can also be committers. +Islandora is open source and released under MIT and GPLv2 licenses. The software and associated documentation is developed collectively by a community of contributors and committers. All interested community members are encouraged to contribute to the project. Contributors who demonstrate sustained engagement with the project through quality participation in meetings, mailing lists, documentation and code updates can be nominated by existing committers to also become a committers. It should be emphasized that committers need not be limited to software developers. Community members with skills in documentation and testing, for example, can also be committers. ## Rights @@ -25,7 +25,7 @@ Committers share the following responsibilities: ## Committers -The following is an alphabetized list of the current Islandora 8 committers: +The following is an alphabetized list of the current Islandora committers: | Name | Organization | Github username | |-----------------------------|---------------------------------------|----------------| @@ -53,7 +53,7 @@ The following is an alphabetized list of the current Islandora 8 committers: ## Emeritus Committers -The following is an alphabetized list of the prior Islandora 8 committers: +The following is an alphabetized list of the prior Islandora committers: | Name | Organization | |-----------------------------|-----------------------------------| @@ -98,8 +98,8 @@ Summary: If they accept, then do: -1. Add to the Islandora 8 Committer team of the Github Islandora organization. +1. Add to the Islandora Committer team of the Github Islandora organization. 2. Add to Committer team of GitHub Islandora-Labs organization 3. Add to islandora-committers google-group -4. Add to committers wiki page: Islandora 8 Committers (this page) +4. Add to committers wiki page: Islandora Committers (this page) 5. Announce the new committer ([template/committerAnnounce.txt](https://raw.githubusercontent.com/Islandora/documentation/main/docs/contributing/templates/committerAnnounce.txt)) diff --git a/docs/contributing/templates/closeCommitterVote.txt b/docs/contributing/templates/closeCommitterVote.txt index f2afe9ba4..5a418e461 100644 --- a/docs/contributing/templates/closeCommitterVote.txt +++ b/docs/contributing/templates/closeCommitterVote.txt @@ -1,5 +1,5 @@ To: islandora-committers@googlegroups.com -Subject: RESULT Vote new Islandora 8 Committer candidate: [Nominee] +Subject: RESULT Vote new Islandora Committer candidate: [Nominee] Body: ================================= diff --git a/docs/contributing/templates/committerAnnounce.txt b/docs/contributing/templates/committerAnnounce.txt index e381f8fff..93f860463 100644 --- a/docs/contributing/templates/committerAnnounce.txt +++ b/docs/contributing/templates/committerAnnounce.txt @@ -3,7 +3,7 @@ Subject: New committer: [New Committer] Body: ================================ -The Islandora 8 committers have asked [New Committer] to become a committer and we are pleased to announce that they have accepted. +The Islandora committers have asked [New Committer] to become a committer and we are pleased to announce that they have accepted. ### add specific details here ### diff --git a/docs/contributing/templates/committerInvite.txt b/docs/contributing/templates/committerInvite.txt index 904439fc8..4c92dc4b3 100644 --- a/docs/contributing/templates/committerInvite.txt +++ b/docs/contributing/templates/committerInvite.txt @@ -2,14 +2,14 @@ To: [Invitee] Subject: =================================== -Invitation to become Islandora 8 committer: [Invitee] +Invitation to become Islandora committer: [Invitee] =================================== Body: =================================== Hello [Invitee], -The Islandora 8 Committers Team hereby offers you committer privileges to the Islandora project. These privileges are offered on the understanding that you'll use them reasonably and with common sense. We like to work on trust rather than unnecessary constraints. +The Islandora Committers Team hereby offers you committer privileges to the Islandora project. These privileges are offered on the understanding that you'll use them reasonably and with common sense. We like to work on trust rather than unnecessary constraints. Being a committer does not require you to participate any more than you already do. It does tend to make one even more committed. You will probably find that you spend more time here. Of course, you can decline and instead remain as a contributor, participating as you do now. The specific rights and responsibilities of being an Islandora committer can be found here: http://islandora.github.io/documentation/contributing/committers/ @@ -17,5 +17,5 @@ http://islandora.github.io/documentation/contributing/committers/ This personal invitation is a chance for you to accept or decline in private. Either way, please let us know. Best regards, -(on behalf of the Islandora 8 Committers) +(on behalf of the Islandora Committers) =================================== diff --git a/docs/contributing/templates/committerInviteCLA.txt b/docs/contributing/templates/committerInviteCLA.txt index d1c0f36a0..55d12b2dc 100644 --- a/docs/contributing/templates/committerInviteCLA.txt +++ b/docs/contributing/templates/committerInviteCLA.txt @@ -2,14 +2,14 @@ To: [Invitee] Subject: =================================== -Invitation to become Islandora 8 committer: [Invitee] +Invitation to become Islandora committer: [Invitee] =================================== Body: =================================== Hello [Invitee], -The Islandora 8 Committers Team hereby offers you committer privileges to the Islandora project. These privileges are offered on the understanding that you'll use them reasonably and with common sense. We like to work on trust rather than unnecessary constraints. +The Islandora Committers Team hereby offers you committer privileges to the Islandora project. These privileges are offered on the understanding that you'll use them reasonably and with common sense. We like to work on trust rather than unnecessary constraints. Being a committer does not require you to participate any more than you already do. It does tend to make one even more committed. You will probably find that you spend more time here. Of course, you can decline and instead remain as a contributor, participating as you do now. The specific rights and responsibilities of being an Islandora committer can be found here: http://islandora.github.io/documentation/contributing/committers/ diff --git a/docs/index.md b/docs/index.md index cb570a6aa..f58cb0d8d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -16,7 +16,7 @@ Islandora: - **Offers digital preservation features** - Using a robust storage layer for preservation (Fedora), and generating technical metadata with FITS, are digital preservation tools provided out of the box in the default implementation. Community members have created additional features for doing [digital preservation using Islandora](https://github.com/mjordan/digital_preservation_using_islandora), which have not yet been contributed to "Core Islandora". - **Exposes data to harvesters** - Metadata about resources is available as linked data through the [JSON-LD serialization module](https://github.com/Islandora/jsonld), and can be made available through Drupal, Fedora, or a triplestore. Islandora also offers a [full configuration for exposing OAI-PMH](https://github.com/Islandora/islandora_defaults/tree/8.x-1.x/modules/islandora_oaipmh) to metadata harvesters, and [IIIF support](https://github.com/Islandora/islandora/tree/8.x-1.x/modules/islandora_iiif) for images. - **Offers flexibility** - As Islandora content is Drupal content, migrations and batch editing can be done through Drupal's built-in migrate framework and controlled vocabularies created using Drupal taxonomies. Contributed Drupal modules such as [Solr Search API](https://www.drupal.org/project/search_api_solr) enable in-site search, and [Matomo Analytics](https://www.drupal.org/project/matomo) provides usage metrics for site analytics. -- **Is a community** - A [dedicated, active community of users and developers](https://groups.google.com/forum/#!forum/islandora) is working to push new features, collaborate on improvements, design custom solutions, and create extended functionality. Some of these for Islandora 8 take the form of [Recipes](https://github.com/Islandora-Labs/Islandora-Cookbook). +- **Is a community** - A [dedicated, active community of users and developers](https://groups.google.com/forum/#!forum/islandora) is working to push new features, collaborate on improvements, design custom solutions, and create extended functionality. Some of these for Islandora take the form of [Recipes](https://github.com/Islandora-Labs/Islandora-Cookbook). ## Try Islandora diff --git a/docs/installation/component_overview.md b/docs/installation/component_overview.md index 9b8274b04..f44b382b3 100644 --- a/docs/installation/component_overview.md +++ b/docs/installation/component_overview.md @@ -1,13 +1,13 @@ # Component Overview -A functioning Islandora 8 Stack is made up of dozens of components working in synchronization with each other to store information in your repository, manage that information, and disseminate it intelligently to users. Whether running an installation using the provided Ansible playbook or installing the stack manually, it may be helpful to have a brief overview of all the components we're going to need, in the order we're going to install them, as well as a brief introduction to each component's installation and configuration process. +A functioning Islandora Stack is made up of dozens of components working in synchronization with each other to store information in your repository, manage that information, and disseminate it intelligently to users. Whether running an installation using the provided Ansible playbook or installing the stack manually, it may be helpful to have a brief overview of all the components we're going to need, in the order we're going to install them, as well as a brief introduction to each component's installation and configuration process. This list includes four different kinds of components: - Components which are hard-required (such as Drupal and the Islandora module) - Components for which defaults are provided but which can be swapped out (such as the software managing databases, or the repository's storage system) - Components that can't easily be swapped out but are not necessarily required (such as using Solr as the site's internal search engine) -- Components which do not have official alternatives and are not necessarily required, but will likely exist on the vast majority of Islandora 8 installations (such as Alpaca and Crayfish) +- Components which do not have official alternatives and are not necessarily required, but will likely exist on the vast majority of Islandora installations (such as Alpaca and Crayfish) ## The Webserver Stack - Apache, PHP, and MySQL/PostgreSQL diff --git a/docs/installation/docker-introduction.md b/docs/installation/docker-introduction.md index 66809a38e..ec76e1a59 100644 --- a/docs/installation/docker-introduction.md +++ b/docs/installation/docker-introduction.md @@ -2,7 +2,7 @@ ## What is ISLE? -ISLE, short for ISLandora Enterprise, is a community initiative to ease the installation and maintenance of Islandora by using Docker. It was originally started by the Islandora Collaboration Group for Islandora 7.x. When transitioning to Islandora 8, the project came under the purview of the Islandora Foundation. All documentation on this site assumes you're trying to install Islandora 8. [See here](https://islandora-collaboration-group.github.io/ISLE/) if you are looking for ISLE for Islandora 7. +ISLE, short for ISLandora Enterprise, is a community initiative to ease the installation and maintenance of Islandora by using Docker. It was originally started by the Islandora Collaboration Group for Islandora Legacy. When transitioning to Islandora, the project came under the purview of the Islandora Foundation. All documentation on this site assumes you're trying to install Islandora. [See here](https://islandora-collaboration-group.github.io/ISLE/) if you are looking for ISLE for Islandora Legacy. ## Why use ISLE? diff --git a/docs/installation/manual/installing_fedora_syn_and_blazegraph.md b/docs/installation/manual/installing_fedora_syn_and_blazegraph.md index b4da468c2..ff50078da 100644 --- a/docs/installation/manual/installing_fedora_syn_and_blazegraph.md +++ b/docs/installation/manual/installing_fedora_syn_and_blazegraph.md @@ -49,7 +49,7 @@ The Fedora configuration is going to come in a few different chunks that need to The basics of these configuration files have been pulled largely from the templates in [Islandora-Devops/ansible-role-fcrepo](https://github.com/islandora-devops/ansible-role-fcrepo); you may consider referencing the playbook’s templates directory for more details. -`i8_namespaces.cnd` is a list of namespaces used by Islandora 8 that may not necessarily be present in Fedora; we add them here to ensure we can use them in queries. +`i8_namespaces.cnd` is a list of namespaces used by Islandora that may not necessarily be present in Fedora; we add them here to ensure we can use them in queries. `/opt/fcrepo/config/i8_namespaces.cnd | tomcat:tomcat/644` ``` diff --git a/docs/installation/manual/installing_karaf_and_alpaca.md b/docs/installation/manual/installing_karaf_and_alpaca.md index b3e0f0308..f7667b78e 100644 --- a/docs/installation/manual/installing_karaf_and_alpaca.md +++ b/docs/installation/manual/installing_karaf_and_alpaca.md @@ -4,7 +4,7 @@ - [Apache ActiveMQ](https://activemq.apache.org/), a messaging server that will be used to handle communication between Alpaca and other components - [Apache Karaf](https://karaf.apache.org/), the Java application runtime that Alpaca will be deployed in -- [Islandora/Alpaca](https://github.com/Islandora/Alpaca), a suite of Java middleware applications that will handle communication between various components of Islandora 8 +- [Islandora/Alpaca](https://github.com/Islandora/Alpaca), a suite of Java middleware applications that will handle communication between various components of Islandora. ## ActiveMQ 5 diff --git a/docs/installation/manual/introduction.md b/docs/installation/manual/introduction.md index 6baa4f250..755b3bc4d 100644 --- a/docs/installation/manual/introduction.md +++ b/docs/installation/manual/introduction.md @@ -1,7 +1,7 @@ # Introduction !!! notice - The manual installation guide is not intended to describe *the* Islandora 8 installation but rather *an* Islandora 8 installation. The server created using this guide is not hardened, will not be easily scalable, and the components may not be configured in a way you consider easy to work with. A production instance of Islandora 8 should be installed and maintained by a professional with an understanding of Linux and server administration. + The manual installation guide is not intended to describe *the* Islandora installation but rather *an* Islandora installation. The server created using this guide is not hardened, will not be easily scalable, and the components may not be configured in a way you consider easy to work with. A production instance of Islandora should be installed and maintained by a professional with an understanding of Linux and server administration. This guide will contain generalized steps on installation and configuration of the various components, but will contain specific example commands for executing these steps on an Ubuntu 18.04 Server. diff --git a/docs/installation/playbook.md b/docs/installation/playbook.md index 314d5df4b..c826ed4b5 100644 --- a/docs/installation/playbook.md +++ b/docs/installation/playbook.md @@ -279,4 +279,4 @@ change this, set a new value for `ansible_port` in `inventory/vagrant/hosts`. If you run into any issues installing the environment, do not hesitate to email the [mailing list](mailto:islandora@googlegroups.com) to ask for help. If you think you've stumbled across a bug in the installer, please create an issue in the -[Islandora 8 issue queue](http://github.com/Islandora/documentation/issues) and give it an `ansible` tag. +[Islandora issue queue](http://github.com/Islandora/documentation/issues) and give it an `ansible` tag. diff --git a/docs/islandora/drupal-bundle-configurations.md b/docs/islandora/drupal-bundle-configurations.md index 214c4aef4..dc82c3ae9 100644 --- a/docs/islandora/drupal-bundle-configurations.md +++ b/docs/islandora/drupal-bundle-configurations.md @@ -1,6 +1,6 @@ ## Drupal Bundle Configurations -In Islandora 8, [content models](https://github.com/Islandora/islandora/wiki/Content-Models) are primarily created using content types (also known as node bundles) and media bundles. [Bundles](https://www.drupal.org/docs/8/api/entity-api/bundles) are defined by [YAML](http://befused.com/drupal/yaml) configuration files. [To create new content models](https://www.drupal.org/docs/8/api/entity-api/creating-a-custom-content-type-in-drupal-8), one would create the needed content types and media bundles via UI, then export the yml files related for those bundles using Configuration Synchronization (`http://localhost:8000/admin/config/development/configuration`) or [Features](https://www.drupal.org/project/features). An understanding about the structure of a bundle and various configuration files used to define it helps in creating and updating it. +In Islandora, [content models](https://github.com/Islandora/islandora/wiki/Content-Models) are primarily created using content types (also known as node bundles) and media bundles. [Bundles](https://www.drupal.org/docs/8/api/entity-api/bundles) are defined by [YAML](http://befused.com/drupal/yaml) configuration files. [To create new content models](https://www.drupal.org/docs/8/api/entity-api/creating-a-custom-content-type-in-drupal-8), one would create the needed content types and media bundles via UI, then export the yml files related for those bundles using Configuration Synchronization (`http://localhost:8000/admin/config/development/configuration`) or [Features](https://www.drupal.org/project/features). An understanding about the structure of a bundle and various configuration files used to define it helps in creating and updating it. Content types and media bundles can be thought of as web [forms](https://www.drupal.org/docs/user_guide/en/structure-widgets.html) consisting of fields. Drupal provides [widgets](https://www.drupal.org/docs/8/creating-custom-modules/create-a-custom-field-widget) to define the behavior of a field and field storage to define how the data is stored in the database. Drupal provides various [display modes](https://www.drupal.org/docs/8/api/entity-api/display-modes-view-modes-and-form-modes) to show the forms to user when they are editing (Manage form display) or viewing (Manage display). diff --git a/docs/placeholder.md b/docs/placeholder.md index 9bbbb09f2..bca5a7d42 100644 --- a/docs/placeholder.md +++ b/docs/placeholder.md @@ -1,7 +1,7 @@ # Placeholder page This page serves as a placeholder for functionality that still needs documentation. -Interested in contributing to the Islandora 8 documentation? Join the Community! +Interested in contributing to the Islandora documentation? Join the Community! The [Islandora community](https://islandora.ca/index.php/community) is an active group of users, managers, librarians, documenters, and developers from GLAM (and beyond!) institutions worldwide. We welcome discussion and contribution through various mailing lists, channels, interest groups, and calls. The Islandora community operates under the [Islandora Code Of Conduct](https://islandora.ca/codeofconduct). See our [Contributing Guidelines](contributing/CONTRIBUTING.md) for more information, or drop by a meeting of the [Documentation Interest Group](https://github.com/islandora-interest-groups/Islandora-Documentation-Interest-Group) for a helping hand. diff --git a/docs/technical-documentation/drupal-project.md b/docs/technical-documentation/drupal-project.md index a96ea995b..63839f1f1 100644 --- a/docs/technical-documentation/drupal-project.md +++ b/docs/technical-documentation/drupal-project.md @@ -1,6 +1,6 @@ # Introduction -Islandora 8 makes use of [drupal-project](https://github.com/drupal-composer/drupal-project), a composer template for Drupal projects. We augment it with Islandora specific changes, and need to occasionally pull in upstream changes. The process below outlines how we will do it in a consistent manner. +Islandora makes use of [drupal-project](https://github.com/drupal-composer/drupal-project), a composer template for Drupal projects. We augment it with Islandora specific changes, and need to occasionally pull in upstream changes. The process below outlines how we will do it in a consistent manner. # Pull in upstream changes diff --git a/docs/technical-documentation/flysystem.md b/docs/technical-documentation/flysystem.md index 5cfa4de70..cd75f966b 100644 --- a/docs/technical-documentation/flysystem.md +++ b/docs/technical-documentation/flysystem.md @@ -14,7 +14,7 @@ The Drupal Flysystem module uses [flysystem stream wrappers](https://github.com/ ### The Plugin and Adapter -Islandora 8 implements a [Flysystem adapter](https://github.com/Islandora/islandora/blob/8.x-1.x/src/Flysystem/Adapter/FedoraAdapter.php) and a [Drupal Flysystem plugin](https://github.com/Islandora/islandora/blob/8.x-1.x/src/Flysystem/Fedora.php). The Flysystem adapter acts as an intermediary between the Flysystem filesystem API and Fedora, translating requests and responses between them. The adapter interacts with Fedora using an instance of the [Chullo Fedora API](https://github.com/Islandora/chullo/blob/main/src/IFedoraApi.php) it receives from the Drupal Flysystem plugin. The Drupal Flysystem plugin's main responsibility is to instantiate the Chullo Fedora API object with the proper authentication and pass it to the Flysystem adapter. To authenticate with Fedora the plugin adds a [handler](http://docs.guzzlephp.org/en/stable/handlers-and-middleware.html) to the Chullo's [Guzzle](http://docs.guzzlephp.org) client which adds a [JWT](https://jwt.io/) authentication header to each request. +Islandora implements a [Flysystem adapter](https://github.com/Islandora/islandora/blob/8.x-1.x/src/Flysystem/Adapter/FedoraAdapter.php) and a [Drupal Flysystem plugin](https://github.com/Islandora/islandora/blob/8.x-1.x/src/Flysystem/Fedora.php). The Flysystem adapter acts as an intermediary between the Flysystem filesystem API and Fedora, translating requests and responses between them. The adapter interacts with Fedora using an instance of the [Chullo Fedora API](https://github.com/Islandora/chullo/blob/main/src/IFedoraApi.php) it receives from the Drupal Flysystem plugin. The Drupal Flysystem plugin's main responsibility is to instantiate the Chullo Fedora API object with the proper authentication and pass it to the Flysystem adapter. To authenticate with Fedora the plugin adds a [handler](http://docs.guzzlephp.org/en/stable/handlers-and-middleware.html) to the Chullo's [Guzzle](http://docs.guzzlephp.org) client which adds a [JWT](https://jwt.io/) authentication header to each request. The Fedora Flysystem adapter does not use Gemini to map the relationship between Drupal URIs and Fedora URIs, so they are indexed separately using the "files_in_fedora" Context which triggers the "Index Fedora File in Gemini" and "Delete Fedora File in Gemini" actions as appropriate. diff --git a/docs/technical-documentation/install-enable-drupal-modules.md b/docs/technical-documentation/install-enable-drupal-modules.md index 677e7a510..4638e1af5 100644 --- a/docs/technical-documentation/install-enable-drupal-modules.md +++ b/docs/technical-documentation/install-enable-drupal-modules.md @@ -1,8 +1,8 @@ ## Downloading and Enabling Drupal Modules and Themes -Islandora 8 can make use of majority of the Drupal 8 [modules](https://www.drupal.org/project/project_module) and [themes](https://www.drupal.org/project/project_theme). Common use cases have been documented in the [Islandora 8 Cookbook](https://github.com/Islandora-Labs/Islandora-Cookbook). There are several ways to download and install Drupal modules. Please refer to [this guide](https://www.drupal.org/docs/8/extending-drupal-8) on Drupal.org. +Islandora can make use of majority of the Drupal 8 [modules](https://www.drupal.org/project/project_module) and [themes](https://www.drupal.org/project/project_theme). Common use cases have been documented in the [Islandora Cookbook](https://github.com/Islandora-Labs/Islandora-Cookbook). There are several ways to download and install Drupal modules. Please refer to [this guide](https://www.drupal.org/docs/8/extending-drupal-8) on Drupal.org. -[Composer](https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies) is the recommended method to install and update drupal modules and themes in Islandora 8. +[Composer](https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies) is the recommended method to install and update drupal modules and themes in Islandora. ```shell $ composer require "/:" @@ -10,7 +10,7 @@ $ composer require "/:" $ composer require "islandora/islandora_defaults:1.0.0" ``` -In the [Islandora 8 playbook](https://github.com/Islandora-Devops/islandora-playbook), you can add a Drupal module's or theme's machine name to the `drupal_composer_dependencies` variable [here](https://github.com/Islandora-Devops/islandora-playbook/blob/dev/inventory/vagrant/group_vars/webserver/drupal.yml). +In the [Islandora playbook](https://github.com/Islandora-Devops/islandora-playbook), you can add a Drupal module's or theme's machine name to the `drupal_composer_dependencies` variable [here](https://github.com/Islandora-Devops/islandora-playbook/blob/dev/inventory/vagrant/group_vars/webserver/drupal.yml). To enable the Drupal module or theme, add the module machine name to the `drupal_enable_modules` variable as well. ![alt text](../assets/install-enable-drupal-modules_drupal_composer_dependencies.png?raw=true "drupal_composer_dependencies Screenshot") diff --git a/docs/technical-documentation/migrate-7x.md b/docs/technical-documentation/migrate-7x.md index 11d57addc..c8ba7afe0 100644 --- a/docs/technical-documentation/migrate-7x.md +++ b/docs/technical-documentation/migrate-7x.md @@ -1,6 +1,6 @@ -## Migrating from Islandora 7.x to Islandora 8 (YouTube Video) +## Migrating from Islandora Legacy to Islandora (YouTube Video) -[![Islandora Webinar: Migrating from Islandora 7 to Islandora 8](https://img.youtube.com/vi/n0kLOB8ZdbM/0.jpg)](https://www.youtube.com/watch?v=n0kLOB8ZdbM) +[![Islandora Webinar: Migrating from Islandora Legacy to Islandora](https://img.youtube.com/vi/n0kLOB8ZdbM/0.jpg)](https://www.youtube.com/watch?v=n0kLOB8ZdbM) Nov 21, 2019 For tools to migrate into Islandora from an existing Islandora Legacy 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 index 220b57559..d58b14310 100644 --- a/docs/technical-documentation/migrate-csv.md +++ b/docs/technical-documentation/migrate-csv.md @@ -812,4 +812,4 @@ But really the best thing to do is try and get your data into Islandora! We int In some repositories, these CSVs can be used to make bulk updates to metadata. Just make your changes to maintain the CSVs, then run the migration(s) again with the --update flag. This will not always be efficient, as you'll update every entity, even if it didn't change. But, by breaking down your CSVs per collection or object type, you could keep them small enough to use this process for a small repository. -There is also a tool for migrating directly from a Legacy Islandora to Islandora ([migrate_7x_claw](https://github.com/Islandora-Devops/migrate_7x_claw)), using Solr, XPaths, and Fedora calls to pull files and objects directly into Islandora 8. It may be worth checking out, and/or using in conjunction with a CSV migration. +There is also a tool for migrating directly from a Legacy Islandora to Islandora ([migrate_7x_claw](https://github.com/Islandora-Devops/migrate_7x_claw)), using Solr, XPaths, and Fedora calls to pull files and objects directly into Islandora. It may be worth checking out, and/or using in conjunction with a CSV migration. diff --git a/docs/technical-documentation/migration-migrate-api.md b/docs/technical-documentation/migration-migrate-api.md index 9d0bb6e61..b47f15046 100644 --- a/docs/technical-documentation/migration-migrate-api.md +++ b/docs/technical-documentation/migration-migrate-api.md @@ -68,4 +68,4 @@ Is still relevant ### Migrate API demo video -Check out this video that demonstrates the Drupal Migrate API migration process: [Islandora Webinar: Migrating from Islandora 7 to Islandora 8](migrate-7x.md) (Nov 21, 2019) +Check out this video that demonstrates the Drupal Migrate API migration process: [Islandora Webinar: Migrating from Islandora Legacy to Islandora](migrate-7x.md) (Nov 21, 2019) diff --git a/docs/technical-documentation/migration-overview.md b/docs/technical-documentation/migration-overview.md index 07c9968e7..cf220c840 100644 --- a/docs/technical-documentation/migration-overview.md +++ b/docs/technical-documentation/migration-overview.md @@ -1,6 +1,6 @@ -## Islandora 8 Migration Overview +## Islandora Migration Overview -This [video](https://www.youtube.com/watch?v=95Bnix-z1zY) (Aug 10, 2020) provides an overview of the various options available to migrate data into an Islandora 8 installation. +This [video](https://www.youtube.com/watch?v=95Bnix-z1zY) (Aug 10, 2020) provides an overview of the various options available to migrate data into an Islandora installation. [![Islandora Online: Islandora Migration Tools](https://img.youtube.com/vi/95Bnix-z1zY/0.jpg)](https://www.youtube.com/watch?v=95Bnix-z1zY) diff --git a/docs/technical-documentation/updating_drupal.md b/docs/technical-documentation/updating_drupal.md index 6cef104ff..938327224 100644 --- a/docs/technical-documentation/updating_drupal.md +++ b/docs/technical-documentation/updating_drupal.md @@ -5,7 +5,7 @@ This section describes how to update Drupal and its modules using Composer. If you installed Islandora using the Islandora Playbook, then your Drupal was installed by Composer, so it is considered best practice to continue using Composer for updates. The method on this section is not specific to Islandora, and does not (yet) include how to update Islandora Features. ### What is Composer -It is recommended by Drupal.org and the Islandora 8 community to use Composer with Drupal 8 for various tasks. +It is recommended by Drupal.org and the Islandora community to use Composer with Drupal 8 for various tasks. "[Composer](https://getcomposer.org/) is a [dependency manager](https://en.wikipedia.org/wiki/Package_manager) for PHP. Drupal core uses Composer to manage core dependencies like Symfony components and Guzzle." [[Source](https://www.drupal.org/docs/develop/using-composer/using-composer-with-drupal)] @@ -20,7 +20,7 @@ It is recommended by Drupal.org and the Islandora 8 community to use Composer wi ## Updating Drupal Core Over time new versions of Drupal “core” are released, and Islandora users are encouraged to install official Drupal core updates and security patches. On the other hand “alpha” and “beta" versions of Drupal core should only be installed by advanced users for testing purposes. -The Islandora community STRONGLY recommends that the "Composer" method of upgrading Drupal core be used with Islandora 8 as mentioned [here](https://www.drupal.org/docs/8/update/update-core-via-composer). +The Islandora community STRONGLY recommends that the "Composer" method of upgrading Drupal core be used with Islandora as mentioned [here](https://www.drupal.org/docs/8/update/update-core-via-composer). ### Here is an overview of the steps for updating Drupal core using Composer @@ -41,7 +41,7 @@ If there is no line starting with drupal/core, Composer isn't aware of any updat If you want to know all packages that will be updated by the update command, use the --dry-run option first. !!! note "Alternate syntax needed" - Islandora 8 is configured to use a fork of drupal-composer/drupal-project which requires a specific composer syntax used above compared to other Drupal 8 sites. In addition, if you are upgrading from 8.5 to 8.7, you need to replace "~8.5.x" with "^8.7.0" for drupal/core and webflo/drupal-core-require-dev in composer.json. [[Source](https://www.drupal.org/docs/8/update/update-core-via-composer#s-one-step-update-instruction)] + Islandora is configured to use a fork of drupal-composer/drupal-project which requires a specific composer syntax used above compared to other Drupal 8 sites. In addition, if you are upgrading from 8.5 to 8.7, you need to replace "~8.5.x" with "^8.7.0" for drupal/core and webflo/drupal-core-require-dev in composer.json. [[Source](https://www.drupal.org/docs/8/update/update-core-via-composer#s-one-step-update-instruction)] 3) Apply any required database updates using ``drush updatedb``, or use the web admin user interface. @@ -56,7 +56,7 @@ https://www.drupal.org/docs/8/update/update-core-via-composer#s-stepwise-update- ## Updating Drupal Modules -Islandora 8 uses several general Drupal modules and some specialized Islandora Drupal modules, and over time new versions of these modules are released. There are two approaches to updating Drupal modules in Islandora: using Composer or updating modules individually. Islandora 8 uses Composer to determine which Drupal module versions should be installed for each release of Islandora 8. Therefore if you update the Islandora specific Drupal modules using Composer you will also update any dependent general Drupal modules as well. The second method is to individually update Drupal modules. +Islandora uses several general Drupal modules and some specialized Islandora Drupal modules, and over time new versions of these modules are released. There are two approaches to updating Drupal modules in Islandora: using Composer or updating modules individually. Islandora uses Composer to determine which Drupal module versions should be installed for each release of Islandora. Therefore if you update the Islandora specific Drupal modules using Composer you will also update any dependent general Drupal modules as well. The second method is to individually update Drupal modules. For more information about how to update Drupal modules visit: diff --git a/docs/technical-documentation/using-rest-endpoints.md b/docs/technical-documentation/using-rest-endpoints.md index e037aa5c5..6ad9be30e 100644 --- a/docs/technical-documentation/using-rest-endpoints.md +++ b/docs/technical-documentation/using-rest-endpoints.md @@ -1,4 +1,4 @@ -# Islandora 8 via REST +# Islandora via REST Each node, media and file in Drupal 8 has its own URI and we can GET the resources, some in a variety of formats. diff --git a/docs/tutorials/create_update_views.md b/docs/tutorials/create_update_views.md index 55d8e574d..bdd63032f 100644 --- a/docs/tutorials/create_update_views.md +++ b/docs/tutorials/create_update_views.md @@ -14,7 +14,7 @@ Views are powerful content filters that enable you to present Islandora (and oth ## How to modify an existing view -Islandora Defaults ships with some views already created and turned on. The Islandora 8 home page displays content items that have been added to Islandora. This view is named _Frontpage_ and it lists items that meet the following _filter criteria_: +Islandora Defaults ships with some views already created and turned on. The Islandora home page displays content items that have been added to Islandora. This view is named _Frontpage_ and it lists items that meet the following _filter criteria_: - The item is in the _published_ state. - The checkbox Promoted to front page is selected. @@ -50,7 +50,7 @@ For this example, we added six collection items to Islandora. In total there are For this example, we create a new view that only shows collections. It will be created as a [Block](https://www.drupal.org/docs/core-modules-and-themes/core-modules/block-module/managing-blocks) (also see the tutorial on [Configuring Blocks](../tutorials/blocks.md)) that will only display on the front page. We will add the new collection list block below the existing frontpage view that lists items. -1. Using your Web browser, open the Islandora 8 front page +1. Using your Web browser, open the Islandora front page 2. Navigate to **Administration** >> **Structure** >> **Views** 3. Create a new view by selecting **Add view** 4. Name the view and select **Create a block**. Give the block a title and decide how you want it to display (Grid, Table, List, Paging). To progress, select **Save and edit**. diff --git a/docs/tutorials/how-to-create-collection.md b/docs/tutorials/how-to-create-collection.md index 90fa09184..61f4090e6 100644 --- a/docs/tutorials/how-to-create-collection.md +++ b/docs/tutorials/how-to-create-collection.md @@ -21,7 +21,7 @@ Click on _Add content_. ![Click on add content, under tools](../assets/collections_add_content.png) -Then click on 'Repository Item' to give your collection the default metadata profile for Islandora 8. +Then click on 'Repository Item' to give your collection the default metadata profile for Islandora. ![Click on Repository Item](../assets/collections_repository_item.jpg) diff --git a/docs/user-documentation/content_types.md b/docs/user-documentation/content_types.md index acb968678..8d827f769 100644 --- a/docs/user-documentation/content_types.md +++ b/docs/user-documentation/content_types.md @@ -2,11 +2,11 @@ ## Overview -Since metadata in Islandora 8 is stored as fields in Nodes, the standard Drupal Content Types system provides our 'ingest forms'. For more information about Content Types in general, please see [Content Types in Drupal 8](https://www.drupal.org/docs/8/administering-drupal-8-site/managing-content-0/working-with-content-types-and-fields). 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. +Since metadata in Islandora is stored as fields in Nodes, the standard Drupal Content Types system provides our 'ingest forms'. For more information about Content Types in general, please see [Content Types in Drupal 8](https://www.drupal.org/docs/8/administering-drupal-8-site/managing-content-0/working-with-content-types-and-fields). If you are already familiar with Drupal Field UI, you’re already well equipped to create and modify your own ingest forms in Islandora. This page will address how to create and modify ingest forms by editing fields and form display settings on Content Types via the graphical user interface (GUI). This page will also cover editing the RDF mapping to accommodate changes to fields. -Islandora 8 forms are Drupal forms, and for help working with forms via the API, please check out the _Further Reading_ section for links to more advanced Drupal documentation. +Islandora forms are Drupal forms, and for help working with forms via the API, please check out the _Further Reading_ section for links to more advanced Drupal documentation. ## Before you start @@ -15,7 +15,7 @@ Islandora 8 forms are Drupal forms, and for help working with forms via the API, ## How to Modify a Content Type -If you have deployed your Islandora 8 with the Islandora Defaults configuration, you will already have a Repository Item content type available, with pre-configured fields and repository behaviours. +If you have deployed your Islandora with the Islandora Defaults configuration, you will already have a Repository Item content type available, with pre-configured fields and repository behaviours. 1. In the Admin menu, go to **Structure** >> **Content Types** and find the _Repository Item_ content type. 1. Select *Manage Fields*. @@ -105,7 +105,7 @@ Updating contexts does not retroactively fire any actions. Any of the custom con ## Update / Create an RDF Mapping -RDF mapping aligns Drupal fields with RDF ontology properties. For example, the title field of a content model can be mapped to `dcterms:title` and/or `schema:title`. In Islandora 8, triples expressed by these mappings get synced to Fedora and indexed in the Blazegraph triplestore. RDF mappings are defined/stored in Drupal as a [YAML](https://yaml.org/) file (to learn more about YAML, there are [several tutorials on the web](https://duckduckgo.com/?q=yaml+tutorial). Currently, Drupal 8 does not have a UI to create/update RDF mappings to ontologies other than Schema.org. This requires repository managers to update the configuration files themselves. Consider using the RDF mappings included in [islandora_defaults](https://github.com/Islandora/islandora_defaults) as templates by copying and modifying one to meet your needs. +RDF mapping aligns Drupal fields with RDF ontology properties. For example, the title field of a content model can be mapped to `dcterms:title` and/or `schema:title`. In Islandora, triples expressed by these mappings get synced to Fedora and indexed in the Blazegraph triplestore. RDF mappings are defined/stored in Drupal as a [YAML](https://yaml.org/) file (to learn more about YAML, there are [several tutorials on the web](https://duckduckgo.com/?q=yaml+tutorial). Currently, Drupal 8 does not have a UI to create/update RDF mappings to ontologies other than Schema.org. This requires repository managers to update the configuration files themselves. Consider using the RDF mappings included in [islandora_defaults](https://github.com/Islandora/islandora_defaults) as templates by copying and modifying one to meet your needs. The Drupal 8 Configuration Synchronization export (e.g. `http://localhost:8000/admin/config/development/configuration/single/export`) and import (e.g. `http://localhost:8000/admin/config/development/configuration/single/import`) can be used to get a copy of the mappings for editing in a text editor before being uploaded again. Alternatively, a repository manager can update the configuration on the server and use [Features](https://www.drupal.org/project/features) to import the edits. diff --git a/docs/user-documentation/context.md b/docs/user-documentation/context.md index 0d6ba1782..ca3305356 100644 --- a/docs/user-documentation/context.md +++ b/docs/user-documentation/context.md @@ -1,10 +1,10 @@ -## Context in Islandora 8 +## Context in Islandora [Context](https://www.drupal.org/project/context) is a Drupal contrib module that allows configuration of "if this, then that" logic using an administrative user interface. Context defines "conditions" and "reactions" to enact the "if this [condition], then that [reaction]" logic. Some Islandora 7.x repositories use the community-contributed [Islandora Context](https://github.com/SFULibrary/islandora_context) module to apply this sort of logic to Islandora objects. An example Context from Islandora 7.x is > If an object's namespace is 'customnamespace', render the block containing the rights statement "Please contact Special Collections before reusing this item". -The Context project page on drupal.org says "You can think of each context as representing a 'section' of your site", but that doesn't tell the whole story, since it gives the impression that Context is all about defining subsites. Context in Drupal 8 is much more powerful than in Drupal 7 due to how it interacts with the rest of Drupal (specifically, through Drupal 8's new plugin API). Because of this increased flexibility and power, and because Context provides a ready-made user interface for site administrators to combine conditions and reactions, Islandora 8 uses Context to drive the logic underlying many important aspects of Islandora, including which derivatives get generated and how objects are displayed. In Islandora 7, many of these things are managed (and often hard-coded) within solution packs and utility modules. +The Context project page on drupal.org says "You can think of each context as representing a 'section' of your site", but that doesn't tell the whole story, since it gives the impression that Context is all about defining subsites. Context in Drupal 8 is much more powerful than in Drupal 7 due to how it interacts with the rest of Drupal (specifically, through Drupal 8's new plugin API). Because of this increased flexibility and power, and because Context provides a ready-made user interface for site administrators to combine conditions and reactions, Islandora uses Context to drive the logic underlying many important aspects of Islandora, including which derivatives get generated and how objects are displayed. In Islandora 7, many of these things are managed (and often hard-coded) within solution packs and utility modules. ### An Example @@ -20,13 +20,13 @@ Let's look at the example of how Context can determine how an object is displaye Context in Drupal 8 uses Drupal Actions to execute the "then that" part of their logic. An implication of this is some configuration options relevant to the outcome of the "then that" reaction are configured in the Action admin interface (located at `admin/config/system/actions`), not within the Context admin interface (located at `admin/structure/context`). While this makes for a clunky admin experience, the advantage is that it allows the reuse of a single piece of Drupal code in multiple Contexts. -One important group of functionality in Islandora 8 repositories that admins might want to control is what types of [media](media.md) get persisted to Fedora. Islandora 8 allows administrators to choose what types of media get persisted to Fedora and what types of media get persisted to the Drupal public file system. For example, you may want to persist your thumbnails to Fedora along with your "Preservation Master" and "Original File" files. This can be accomplished using Context. +One important group of functionality in Islandora repositories that admins might want to control is what types of [media](media.md) get persisted to Fedora. Islandora allows administrators to choose what types of media get persisted to Fedora and what types of media get persisted to the Drupal public file system. For example, you may want to persist your thumbnails to Fedora along with your "Preservation Master" and "Original File" files. This can be accomplished using Context. -By default Islandora 8 stores thumbnails in Drupal's public file system, not in Fedora. Thumbnails are automatically generated by a Context (the "Image Service File" Context to be specific), but if you want to change the file system where your thumbnails are stored to the be Fedora file system, you need to change that setting in the "Image - Generate a thumbnail from a service file" Action, not in the Context that uses that action: +By default Islandora stores thumbnails in Drupal's public file system, not in Fedora. Thumbnails are automatically generated by a Context (the "Image Service File" Context to be specific), but if you want to change the file system where your thumbnails are stored to the be Fedora file system, you need to change that setting in the "Image - Generate a thumbnail from a service file" Action, not in the Context that uses that action: ![Thumbnail location Context configuration](../assets/context_thumbnail_file_system.png) -This configuration should be done as part of your initial Islandora 8 setup, since there is currently no way to move thumbnails that were persisted to Drupal's public file system to Fedora, or vice versa. But, at least site admins can choose one or the other using this Action. +This configuration should be done as part of your initial Islandora setup, since there is currently no way to move thumbnails that were persisted to Drupal's public file system to Fedora, or vice versa. But, at least site admins can choose one or the other using this Action. You can create custom Actions and then use them in Contexts. For example, if you want to present a message to the user every time they upload a media tagged as "Preservation Master File", create an Action of type "Display a message to the user" and enter your message: @@ -50,4 +50,4 @@ Islandora provides some Conditions and Reactions that aren't available on other ### Increased Flexibility -Most Islandora 8 repository administrators will not need to alter or configure any Contexts. But since much of Islandora 8's underlying functionality is governed by this powerful Drupal contrib module, administrators should become comfortable using it, and Actions, to customize and refine their repositories. Also, since Islandora 8 objects are ordinary Drupal nodes, Islandora objects can take advantage of standard Drupal 8 Context functionality out of the box. +Most Islandora repository administrators will not need to alter or configure any Contexts. But since much of Islandora's underlying functionality is governed by this powerful Drupal contrib module, administrators should become comfortable using it, and Actions, to customize and refine their repositories. Also, since Islandora objects are ordinary Drupal nodes, Islandora objects can take advantage of standard Drupal 8 Context functionality out of the box. diff --git a/docs/user-documentation/extending.md b/docs/user-documentation/extending.md index a4a892d18..f131dab16 100644 --- a/docs/user-documentation/extending.md +++ b/docs/user-documentation/extending.md @@ -1,14 +1,14 @@ # Extending Islandora: The Islandora Cookbook -Because newer Islandora is very tightly integrated with Drupal, many use cases that required custom Islandora modules in Islandora 7 and earlier can now be solved with a combination of configuration and modules from the Drupal community. Other use cases may still require custom code, but are not common enough, or complete enough, for that custom code to be a part of the core software. +Because newer Islandora is very tightly integrated with Drupal, many use cases that required custom Islandora modules in Islandora Legacy and earlier can now be solved with a combination of configuration and modules from the Drupal community. Other use cases may still require custom code, but are not common enough, or complete enough, for that custom code to be a part of the core software. Both scenarios are covered by the Islandora Cookbook below, which contains an annotated list of custom Islandora tools and modules developed by our community, a list of Drupal contributed modules that may be useful in an Islandora context, and a set of _recipes_ which each provide a detailed outline for solving a particular use case. -Islandora 8 is also compatible with most Drupal themes. +Islandora is also compatible with most Drupal themes. ## Introduction -In the spirit of [Islandora Awesome](https://github.com/Islandora-Labs/islandora_awesome), Islandora Cookbook is a curated list of great modules and other tools for Islandora 8. Because Islandora 8 is more tightly integrated with Drupal, most of these 'recipes' require only Drupal modules as ingredients. +In the spirit of [Islandora Awesome](https://github.com/Islandora-Labs/islandora_awesome), Islandora Cookbook is a curated list of great modules and other tools for Islandora. Because Islandora is more tightly integrated with Drupal, most of these 'recipes' require only Drupal modules as ingredients. We offer this list for discovery, but do not officially provide support for any of these modules. @@ -18,14 +18,14 @@ We offer this list for discovery, but do not officially provide support for any - [Collection Searching] - This recipe provides instructions how to configure a shallow or deep search in a specific collection. - [Date Range Slider Facet] - This recipe explains how to include a facet for date field(s) that presents itself as a range slider. -- [Exhibitions and TimeLine JS] - This recipe outlines how to build exhibits in Islandora 8, including the deployment of TimeLineJS. -- [Digital Preservation] - A detailed overview of how to approach digital preservation in Islandora 8. Includes features that are currently avaiable, both within Islandora and by using compatible tools. +- [Exhibitions and TimeLine JS] - This recipe outlines how to build exhibits in Islandora, including the deployment of TimeLineJS. +- [Digital Preservation] - A detailed overview of how to approach digital preservation in Islandora. Includes features that are currently avaiable, both within Islandora and by using compatible tools. ## Ingredients Below are modules and tools that might be useful to solve common use cases, presented without specific recipes. -### Islandora 8 Contributed Modules +### Islandora Contributed Modules Warning! - All modules are under development. @@ -33,8 +33,8 @@ Warning! - All modules are under development. * [Islandora RipRap](https://github.com/mjordan/islandora_riprap) - Fixity auditing * [Islandora Repository Reports](https://github.com/mjordan/islandora_repository_reports) - Graphical reports on various aspects of an Islandora repository. * [Islandora Bagger](https://github.com/mjordan/islandora_bagger) - Utility to generate Bags for objects using Islandora's REST interface using either a command-line tool or via a batch-oriented queue. -* [Islandora Whole Object](https://github.com/mjordan/islandora_whole_object) - Islandora 8 module that provides some Drupal blocks containing various representations of an Islandora object. -* [Islandora RDM](https://github.com/roblib/islandora_rdm) - An entire suite of tools and documentation to turn Islandora 8 into a fully functional Research Data Management platform. +* [Islandora Whole Object](https://github.com/mjordan/islandora_whole_object) - Islandora module that provides some Drupal blocks containing various representations of an Islandora object. +* [Islandora RDM](https://github.com/roblib/islandora_rdm) - An entire suite of tools and documentation to turn Islandora into a fully functional Research Data Management platform. * [IP Range Access](https://github.com/mjordan/ip_range_access) - A context condition to check the user's IP address against a range, and provide 403 if not accepted. ### Access Control @@ -43,7 +43,7 @@ Warning! - All modules are under development. [Permissons by Term](https://www.drupal.org/project/permissions_by_term) -By default, Drupal allows you only to restrict access to Drupal nodes by coupling node content types to user roles. The Permissions by Term module extends Drupal by functionality for restricting view and edit access to single nodes via taxonomy terms. Since Islandora 8 objects can have taxonomy terms, this can be used to control access at the node and collection level. The submodule Permissions by Entity extends this control to the media level. +By default, Drupal allows you only to restrict access to Drupal nodes by coupling node content types to user roles. The Permissions by Term module extends Drupal by functionality for restricting view and edit access to single nodes via taxonomy terms. Since Islandora objects can have taxonomy terms, this can be used to control access at the node and collection level. The submodule Permissions by Entity extends this control to the media level. #### Set a Date and Time for Publication @@ -63,7 +63,7 @@ A module that informs users who attempt to view deleted content that the resourc [Views Slideshow](https://www.drupal.org/project/views_slideshow) -Views Slideshow can be used to create a slideshow of any content (not just images) that can appear in a View. Powered by jQuery, it is heavily customizable: you may choose slideshow settings for each View you create. It can be used to create an easy, adjustable slideshow of images from an Islandora 8 repository. Views Slideshow can be seen in action with Islandora objects on the front page [here](http://future.islandora.ca/) +Views Slideshow can be used to create a slideshow of any content (not just images) that can appear in a View. Powered by jQuery, it is heavily customizable: you may choose slideshow settings for each View you create. It can be used to create an easy, adjustable slideshow of images from an Islandora repository. Views Slideshow can be seen in action with Islandora objects on the front page [here](http://future.islandora.ca/) ### Ingest @@ -71,7 +71,7 @@ Views Slideshow can be used to create a slideshow of any content (not just image [Migrate Islandora CSV](https://github.com/Islandora-CLAW/migrate_islandora_csv) -This repository is a tutorial that will introduce you to using the Drupal 8 Migrate tools to create Islandora 8 content. Whether you will eventually use CSVs or other sources (such as XML or directly from a 7.x Islandora) this tutorial should be useful as it covers the basics and mechanics of migration. +This repository is a tutorial that will introduce you to using the Drupal 8 Migrate tools to create Islandora content. Whether you will eventually use CSVs or other sources (such as XML or directly from a 7.x Islandora) this tutorial should be useful as it covers the basics and mechanics of migration. This repository is also a Drupal Feature that, when enabled as a module, will create three example migrations ready for you to use with the Migrate API. diff --git a/docs/user-documentation/file_viewers.md b/docs/user-documentation/file_viewers.md index 64fca0aa2..06ea09107 100644 --- a/docs/user-documentation/file_viewers.md +++ b/docs/user-documentation/file_viewers.md @@ -6,7 +6,7 @@ In Drupal, a common way to implement a viewer is through a [module](./glossary/#module) that provides the javascript library, and a field formatter that uses that library. The field formatter will work with specific types of Drupal fields (e.g. file fields or image fields, some may even provide their own fields). -Viewers that are known to work with Islandora 8 include: +Viewers that are known to work with Islandora include: * [OpenSeadragon](https://openseadragon.github.io/), via the Drupal module [OpenSeadragon](https://github.com/Islandora/openseadragon) (maintained by the Islandora Foundation). * [pdf.js](https://github.com/mozilla/pdf.js), via the Drupal contrib module [PDF](https://www.drupal.org/project/pdf) @@ -16,7 +16,7 @@ Both are included with Islandora Defaults. ## How are viewers configured? -In the generic Islandora 8 content modelling scenario, we often want the viewer to appear on a _"resource node"_ when the file itself is in a field on a Media that references that node. These layers of indirection make displaying viewers on nodes rather complex. +In the generic Islandora content modelling scenario, we often want the viewer to appear on a _"resource node"_ when the file itself is in a field on a Media that references that node. These layers of indirection make displaying viewers on nodes rather complex. ## Example - Open Seadragon (in Islandora Defaults) diff --git a/docs/user-documentation/iiif.md b/docs/user-documentation/iiif.md index fa6925739..a5347b911 100644 --- a/docs/user-documentation/iiif.md +++ b/docs/user-documentation/iiif.md @@ -11,9 +11,9 @@ At a practial level, because Islandora supports several of the IIIF specificatio ![OpenSeadragon rendering book pages](../assets/osd_collection_mode.png) -## Using IIIF in Islandora 8 +## Using IIIF in Islandora -Implementation of the IIIF Presentation API is new in Islandora 8, and using it is as simple as configuring a Context (in fact, you don't even need to configure it; the Context, Openseadragon Block, already exists by default). +Implementation of the IIIF Presentation API is new in Islandora, and using it is as simple as configuring a Context (in fact, you don't even need to configure it; the Context, Openseadragon Block, already exists by default). To use this Context, all that is required is for your book or newspaper (or other paged content) to be given a model of "Paged Content" or "Publication Issue". Then, in the Openseadragon Block Context, make sure the term used in the "Node has term" condition (you can register more than one term there). Now, when you view a paged content Islandora object, you will see thumbnails of all of its child pages (assuming you have added some child pages to the object) in the OpenSeadragon viewer as illustrated above. @@ -30,7 +30,7 @@ You can change how the paged content thumbnails are arranged in the OpenSeadrago ## Looking under the hood (and beyond) - If you want to see the raw output of the IIIF API implementations in Islandora 8, visit a node that is displaying the OpenSeadragon viewer (doesn't matter if its a single image or a paged content node like a book), and tack "manifest" onto the end of the URL, like `http://myrepo.org/node/23/manifest` and hit enter. You will see the raw JSON that IIIF-compliant viewers use to render the content. + If you want to see the raw output of the IIIF API implementations in Islandora, visit a node that is displaying the OpenSeadragon viewer (doesn't matter if its a single image or a paged content node like a book), and tack "manifest" onto the end of the URL, like `http://myrepo.org/node/23/manifest` and hit enter. You will see the raw JSON that IIIF-compliant viewers use to render the content. The really neat thing is, IIIF-compliant viewers don't need to be embedded in Islandora websites. If a viewer on another website knows the URL of a IIIF manifest like the ones that Islandora can produce, that viewer can display the content described in the manifest. Some implementations of IIIF viewers that show off the potential to combine content from multiple IIIF servers include: diff --git a/docs/user-documentation/intro-to-ld-for-islandora-8.md b/docs/user-documentation/intro-to-ld-for-islandora-8.md index 873da4fe1..346f99ad1 100644 --- a/docs/user-documentation/intro-to-ld-for-islandora-8.md +++ b/docs/user-documentation/intro-to-ld-for-islandora-8.md @@ -1,5 +1,5 @@ -# Introduction to Linked Data for Islandora 8 -The purpose of this page is to provide a guided reading list to anyone who wants to get up to speed on the basics of linked data within the Islandora community. Those who make their way through the readings will be able to talk competently about linked data and better understand the design decisions made in Islandora 8. The list starts with the fundamentals of linked data (RDF, SPARQL, serializations and ontologies) and moves toward more advanced topics specific to the use cases of a Fedora 4 based digital repository system. +# Introduction to Linked Data for Islandora +The purpose of this page is to provide a guided reading list to anyone who wants to get up to speed on the basics of linked data within the Islandora community. Those who make their way through the readings will be able to talk competently about linked data and better understand the design decisions made in Islandora. The list starts with the fundamentals of linked data (RDF, SPARQL, serializations and ontologies) and moves toward more advanced topics specific to the use cases of a Fedora 4 based digital repository system. # Basics of Linked Data This section seeks to give the reader a foundational understanding of what linked data is, why it is useful, and a very superficial understanding of how it works. @@ -31,7 +31,7 @@ This section takes a look at SPARQL, the query language that allows you to ask l - [DBpedia's SPARQL Endpoint](https://dbpedia.org/sparql) # RDF Serialization Formats -RDF data can be translated into many different formats. RDF/XML is the original way that RDF data was shared, but there are much more human-friendly serialization formats like Turtle which is great for beginners. JSON-LD is the easiest format for applications to use, and is the serialization format that Islandora 8 uses internally. Make sure to check out the [JSON-LD Playground](http://json-ld.org/playground/) for an interactive learning experience. +RDF data can be translated into many different formats. RDF/XML is the original way that RDF data was shared, but there are much more human-friendly serialization formats like Turtle which is great for beginners. JSON-LD is the easiest format for applications to use, and is the serialization format that Islandora uses internally. Make sure to check out the [JSON-LD Playground](http://json-ld.org/playground/) for an interactive learning experience. - [Wikipedia article on Serialization](https://en.wikipedia.org/wiki/Serialization) - [W3C’s RDF/XML Syntax Specification](https://www.w3.org/TR/REC-rdf-syntax/) @@ -62,7 +62,7 @@ One isn't limited to the ontologies & vocabularies that already exist in the wor - [W3C’s OWL 2 Quick Reference](https://www.w3.org/TR/owl2-quick-reference/) # Repository-Specific Ontologies -Most ontologies are very specific to certain use cases, and digital repository systems are no different. This section covers ontologies that are of specific interest to users of Islandora 8, or any Fedora 4 based digital repository system. +Most ontologies are very specific to certain use cases, and digital repository systems are no different. This section covers ontologies that are of specific interest to users of Islandora, or any Fedora 4 based digital repository system. - [MODS RDF Namespace Document](http://www.loc.gov/standards/mods/modsrdf/v1/) - [MODS RDF Ontology Primer](https://www.loc.gov/standards/mods/modsrdf/primer.html) diff --git a/docs/user-documentation/media.md b/docs/user-documentation/media.md index b32df49eb..041d6af22 100644 --- a/docs/user-documentation/media.md +++ b/docs/user-documentation/media.md @@ -45,7 +45,7 @@ Third, the metadata synced from the Media into Fedora at [old Fedora URI]/fcr:me ## Media Ownership -Islandora 8 objects can have any number of media associated with them. Media store a reference to the resource node they belong to using a special field, +Islandora objects can have any number of media associated with them. Media store a reference to the resource node they belong to using a special field, "Media Of". By changing this field's value, you can change which resource node owns the media, and therefore, where it gets displayed or managed. !!! note "Compared to Islandora 7" @@ -54,8 +54,8 @@ Islandora 8 objects can have any number of media associated with them. Media sto ## Media Use -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 create additional +Islandora 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 site administrators can create additional terms, and in turn, these local terms can be used to identify media that have some custom local purpose. However, most of the default set of "Media Use" terms are taken from the [PCDM Use Extension](https://pcdm.org/2015/05/12/use) vocabulary: diff --git a/docs/user-documentation/metadata.md b/docs/user-documentation/metadata.md index 2e9da93c4..01db58af5 100644 --- a/docs/user-documentation/metadata.md +++ b/docs/user-documentation/metadata.md @@ -1,13 +1,13 @@ -# Metadata in Islandora 8 +# Metadata in Islandora -> TL;DR: In Islandora 8, metadata is stored in Drupal, in _fields_ attached to _entities_ (nodes or media). This allows us to interact with metadata (add, edit, remove, display, index in a search engine...) almost entirely using standard Drupal processes. If exporting this metadata to Fedora and/or a triplestore, the values are serialized to RDF using mappings that can be set for each bundle. +> TL;DR: In Islandora, metadata is stored in Drupal, in _fields_ attached to _entities_ (nodes or media). This allows us to interact with metadata (add, edit, remove, display, index in a search engine...) almost entirely using standard Drupal processes. If exporting this metadata to Fedora and/or a triplestore, the values are serialized to RDF using mappings that can be set for each bundle. !!! note "Drupal 8 Terminology" In Drupal 8, Fields can be attached to _bundles_ (sometimes called _entity sub-types_ -- e.g. Content types, Media types, Vocabularies) or _entities_ (e.g. Users). 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 Drupal Guide. -As described in the [resource nodes section](resource-nodes.md), Islandora 8 digital objects are comprised of _Drupal nodes_ for descriptive metadata, _Drupal media_ for technical metadata, and _Drupal files_ for the binary objects. This section describes how Islandora 8 uses and extends Drupal fields to manage descriptive metadata. +As described in the [resource nodes section](resource-nodes.md), Islandora digital objects are comprised of _Drupal nodes_ for descriptive metadata, _Drupal media_ for technical metadata, and _Drupal files_ for the binary objects. This section describes how Islandora uses and extends Drupal fields to manage descriptive metadata. ## Content Types diff --git a/docs/user-documentation/multilingual.md b/docs/user-documentation/multilingual.md index 3239bcb8f..f0136535b 100644 --- a/docs/user-documentation/multilingual.md +++ b/docs/user-documentation/multilingual.md @@ -1,10 +1,10 @@ -Islandora 8 enables you to build full fledged multilingual repositories leveraging the multilingual support provided by Drupal core modules. The multilingual content gets indexed into Fedora repository as well as the Triplestore (Blazegraph), and can be queried using the SPARQL endpoint. In this guide, we will describe the steps needed to setup a basic multilingual Islandora 8 site. +Islandora enables you to build full fledged multilingual repositories leveraging the multilingual support provided by Drupal core modules. The multilingual content gets indexed into Fedora repository as well as the Triplestore (Blazegraph), and can be queried using the SPARQL endpoint. In this guide, we will describe the steps needed to setup a basic multilingual Islandora site. ## Drupal Concepts Drupal allows you to translate user interface text, configuration text, and content. See [section 2.7 of the Drupal documentation for details](https://www.drupal.org/docs/user_guide/en/language-concept.html). ## Islandora Configuration -Islandora 8 enables Drupal's _Language_ and _Content Translation_ modules by default. Drupal provides additional modules for [multilingual support](https://www.drupal.org/docs/8/multilingual/choosing-and-installing-multilingual-modules), for instance for translating the built-in user interface or editable interface text. +Islandora enables Drupal's _Language_ and _Content Translation_ modules by default. Drupal provides additional modules for [multilingual support](https://www.drupal.org/docs/8/multilingual/choosing-and-installing-multilingual-modules), for instance for translating the built-in user interface or editable interface text. ### Adding Languages From the top menu, go to Configuration >> Regional and language >> Languages. Add a language. @@ -40,12 +40,12 @@ Each field label needs to be translated through the Drupal GUI (Configuration >> ![Multilingual Content Representation in Drupal](../assets/multilingual_repository_item_in_drupal.png) ## Fedora Representation -Islandora 8 indexes the multilingual metadata values in Fedora as RDF literals using language tags. An example representation is shown below. +Islandora indexes the multilingual metadata values in Fedora as RDF literals using language tags. An example representation is shown below. ![Multilingual Content Representation in Fedora](../assets/multilingual_repository_item_in_fedora.png) ## Triplestore Representation -Islandora 8 indexes the multilingual metadata values in Blazegraph as RDF literals using language tags. An example representation is shown below. +Islandora indexes the multilingual metadata values in Blazegraph as RDF literals using language tags. An example representation is shown below. ![Multilingual Content Representation in Triplestore](../assets/multilingual_repository_item_in_triplestore.png) diff --git a/docs/user-documentation/objects_to_resource_nodes.md b/docs/user-documentation/objects_to_resource_nodes.md index 673dda296..939021eb7 100644 --- a/docs/user-documentation/objects_to_resource_nodes.md +++ b/docs/user-documentation/objects_to_resource_nodes.md @@ -1,14 +1,14 @@ -# From Objects to Resource Nodes: Shifting Concepts from Islandora 7 to 8 +# From Objects to Resource Nodes: Shifting Concepts from Islandora Leagcy to Islandora -This document attempts to show the shift in how objects work from Islandora version 7 to version 8, from a non-developer perspective. +This document attempts to show the shift in how objects work from Islandora Legacy to Islandora, from a non-developer perspective. ## Traditional objects become resource nodes -The conventional Islandora 7 definition of an object is a file loaded in the repository with associated derivatives. In Islandora 7, objects (video files, audio files, PDFs, etc.) are loaded through the user interface, and Datastreams are generated automatically. These consist of access and display copies, the metadata, OCH/HOCR, technical metadata, and more. All of these Datastreams are directly connected to the object and accessed through the admin interface. +The conventional Islandora Legacy definition of an object is a file loaded in the repository with associated derivatives. In Islandora 7, objects (video files, audio files, PDFs, etc.) are loaded through the user interface, and Datastreams are generated automatically. These consist of access and display copies, the metadata, OCH/HOCR, technical metadata, and more. All of these Datastreams are directly connected to the object and accessed through the admin interface. -In Islandora 8, the traditional Islandora 7 objects (video files, audio files, etc. that were represented in different content models) are now Drupal nodes. Islandora object nodes are a special kind of Drupal node, distinct from nodes that exist for other content types such as a blog post, an article, a page (like the About page on a site), and others. These Islandora objects are still loaded through the interface and described with the data entry form, and derivatives are still generated. However, the Datastreams are no longer connected to the original object in the same immutable way. Each of these Datastreams can be manipulated through Drupal by non-developers. You can create a variety of ways to view this metadata and information related to the objects. Doing so requires knowledge of Drupal 8, but this essentially means that there are many ways to view the metadata and access the related objects in Islandora 8. - -In Islandora 8 it is therefore helpful to think of objects as resource nodes. The term reflects the new nature of objects in Islandora 8. A resource node does not just refer to the individual object file, but encompasses multiple elements that all relate to each other, even if they are no longer directly connected like objects in Islandora 7. +In Islandora, the traditional Islandora Legacy objects (video files, audio files, etc. that were represented in different content models) are now Drupal nodes. Islandora object nodes are a special kind of Drupal node, distinct from nodes that exist for other content types such as a blog post, an article, a page (like the About page on a site), and others. These Islandora objects are still loaded through the interface and described with the data entry form, and derivatives are still generated. However, the Datastreams are no longer connected to the original object in the same immutable way. Each of these Datastreams can be manipulated through Drupal by non-developers. You can create a variety of ways to view this metadata and information related to the objects. Doing so requires knowledge of Drupal 8, but this essentially means that there are many ways to view the metadata and access the related objects in Islandora. + +In Islandora it is therefore helpful to think of objects as resource nodes. The term reflects the new nature of objects in Islandora. A resource node does not just refer to the individual object file, but encompasses multiple elements that all relate to each other, even if they are no longer directly connected like objects in Islandora Legacy. The typical elements of a resource node: @@ -18,7 +18,7 @@ The typical elements of a resource node: - Media files (the actual files of JPEGs, MP3s, .zip, etc.) that get loaded through the form - Derivative files (thumbnails, web-friendly service files, technical metadata, and more) -These resource nodes are what the librarian, student, archivist, technician, or general non-developer creates through the data entry form. It is possible to configure all elements of a resource node in Islandora 8 through Drupal. This fact allows control over how one accesses the node and how nodes are displayed and discovered online by non-developers. It also allows a repository to take full advantage of all third-party Drupal modules, themes, and distributions available. +These resource nodes are what the librarian, student, archivist, technician, or general non-developer creates through the data entry form. It is possible to configure all elements of a resource node in Islandora through Drupal. This fact allows control over how one accesses the node and how nodes are displayed and discovered online by non-developers. It also allows a repository to take full advantage of all third-party Drupal modules, themes, and distributions available. ## More Information diff --git a/docs/user-documentation/paged-content.md b/docs/user-documentation/paged-content.md index afa55274d..ed019188e 100644 --- a/docs/user-documentation/paged-content.md +++ b/docs/user-documentation/paged-content.md @@ -6,7 +6,7 @@ with their corresponding media. Each "child" resource node contains a reference using the `field_member_of` property. !!! Note "Child v. Member" - Islandora 8 uses the "child" and "member" descriptor for resource nodes that + Islandora uses the "child" and "member" descriptor for resource nodes that store a reference to another resource node in the "Member Of" field interchangeably. Administrators will more often see the "member" terminology more often while front-end users will usually see "child" terminology. diff --git a/docs/user-documentation/recipes/alexa_search.md b/docs/user-documentation/recipes/alexa_search.md index 3ffb4f6b1..a3b0735e2 100644 --- a/docs/user-documentation/recipes/alexa_search.md +++ b/docs/user-documentation/recipes/alexa_search.md @@ -15,7 +15,7 @@ The following recipe details how to connect Islandora with Alexa, using custom A ## Ingredients - Drupal 8 -- Islandora 8 +- Islandora - Drupal Alexa Module - Islandora Oral Histories Module - Custom Alexa Skill diff --git a/docs/user-documentation/resource-nodes.md b/docs/user-documentation/resource-nodes.md index cc1c2d550..e62be12e7 100644 --- a/docs/user-documentation/resource-nodes.md +++ b/docs/user-documentation/resource-nodes.md @@ -6,7 +6,7 @@ A resource node holds the descriptive metadata for an Islandora object, as well the various files that are part of the object for preservation or display, such as the original file and various derivative files generated from it. -The model for exactly what constitutes an object in Islandora 8 is flexible and can be adapted to the needs of specific users. For example, the Islandora Defaults configuration considers an object as a resource node of the type "Repository Item" which contains descriptive metadata about the object. Attached to that Node are one or more Media, each representing a file that is part of this object, such as "Original File", "Thumbnail", "Preservation Master", etc. With this model, every original file uploaded into Islandora has its own resource node. +The model for exactly what constitutes an object in Islandora is flexible and can be adapted to the needs of specific users. For example, the Islandora Defaults configuration considers an object as a resource node of the type "Repository Item" which contains descriptive metadata about the object. Attached to that Node are one or more Media, each representing a file that is part of this object, such as "Original File", "Thumbnail", "Preservation Master", etc. With this model, every original file uploaded into Islandora has its own resource node. Multi-file Media configurations also attach Media to a parent node, but allow for that node to be represened by multiple "Original File"s. In this model, a Media contains the original file as well as any derivative files created from it (thumbnail, service file, etc.). @@ -33,7 +33,7 @@ Here's an example of the basic properties on nodes: ``` nid: 1 uid: 1 -title: "I am an Islandora 8 object" +title: "I am an Islandora object" created: 1550703004 changed: 1550703512 uuid: 02932f2c-e4c2-4b7e-95e1-4aceab78c638 @@ -57,7 +57,7 @@ status | Published, unpublished, etc... !!! note "Compared to Islandora 7" These node properties are analogous to following Islandora 7.x object properties: - Islandora 7 | Islandora 8 + Islandora Legacy | Islandora ----------- | ----------- owner | uid dc.title | title @@ -98,7 +98,7 @@ of how to handle the node in response to certain events, like choosing a viewer !!! 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 + types of datastreams could be associated with an object. Islandora 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. @@ -150,13 +150,13 @@ single child to belong to multiple parents, but may also complicate the creation Any two nodes can be related in this way, though typically, the parent node has a content model of [_Collection_](../concepts/collection.md) or [_Paged Content_](paged-content.md) (see their respective pages for more details). -!!! 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 allowing every +!!! Note "Compared to Islandora Legacy" + In Islandora Legacy, there was a distinction between belonging to a collection and belonging to + a compound object. In Islandora, this distinction is not present, essentially allowing every resource node to be part of a compound object. !!! Note "Child v. Member" - Islandora 8 uses the "child" and "member" descriptor for resource nodes that + Islandora uses the "child" and "member" descriptor for resource nodes that store a reference to another resource node in the "Member Of" field interchangeably. Administrators will more often see the "member" terminology more often while front-end users will usually see "child" terminology. diff --git a/docs/user-documentation/searching.md b/docs/user-documentation/searching.md index fddec618f..c749f117f 100644 --- a/docs/user-documentation/searching.md +++ b/docs/user-documentation/searching.md @@ -1,8 +1,8 @@ # Setup and Configure Search -Islandora 8 comes with the Drupal 8 [Search API](https://www.drupal.org/project/search_api) and [SOLR](https://www.drupal.org/project/search_api_solr) modules enabled with a corresponding SOLR instance. This guide gives an overview to the setup provided by the islandora-playbook. Much more detail is available in the [Search API documentation](https://www.drupal.org/docs/8/modules/search-api). Another helpful resource is [Adam Fuch's "Drupal 8 Custom Site Search with Search API"](https://www.electriccitizen.com/blog/drupal-8-custom-site-search-search-api) (https://www.electriccitizen.com, 2018-01-10; last accessed 2019-03-08). +Islandora comes with the Drupal 8 [Search API](https://www.drupal.org/project/search_api) and [SOLR](https://www.drupal.org/project/search_api_solr) modules enabled with a corresponding SOLR instance. This guide gives an overview to the setup provided by the islandora-playbook. Much more detail is available in the [Search API documentation](https://www.drupal.org/docs/8/modules/search-api). Another helpful resource is [Adam Fuch's "Drupal 8 Custom Site Search with Search API"](https://www.electriccitizen.com/blog/drupal-8-custom-site-search-search-api) (https://www.electriccitizen.com, 2018-01-10; last accessed 2019-03-08). -## Indexing Islandora 8 with SOLR +## Indexing Islandora with SOLR To access the search indexing settings, log in as an administrator and navigate to '/admin/config/search/search-api' or click **Configuration** and then **Search API**. @@ -54,7 +54,7 @@ Once the fields are added they can be configured further on the _Fields_ tab, al The _Processors_ tab allows repository managers to adjust how data and search queries are processed to adjust results. The defaults are acceptable in most cases. -## Searching Islandora 8 +## Searching Islandora The Search API SOLR module comes with a search page pre-configured (accessible at '/solr-search/content'). To edit the search page, navigate to '/admin/structure/views/view/solr_search_content'. diff --git a/docs/user-documentation/usage-stats.md b/docs/user-documentation/usage-stats.md index a6c6e1408..160aa856d 100644 --- a/docs/user-documentation/usage-stats.md +++ b/docs/user-documentation/usage-stats.md @@ -1,4 +1,4 @@ -Drupal 8 supports various web analytics integrations such as [google analytics](https://www.drupal.org/project/google_analytics) and [Matomo](https://www.drupal.org/project/matomo). For privacy reasons, Islandora 8 integrates Matomo web analytics platforms by default. +Drupal 8 supports various web analytics integrations such as [google analytics](https://www.drupal.org/project/google_analytics) and [Matomo](https://www.drupal.org/project/matomo). For privacy reasons, Islandora integrates Matomo web analytics platforms by default. The Matomo server is installed here: http://localhost:8000/matomo. The default configurations can be found in `http://localhost:8000/admin/config/system/matomo`. You can login to the Matomo server using username `admin` and password `islandora`. The dashboard will look like this: diff --git a/docs/user-documentation/user-intro.md b/docs/user-documentation/user-intro.md index 5197d5d11..8aaf58ed5 100644 --- a/docs/user-documentation/user-intro.md +++ b/docs/user-documentation/user-intro.md @@ -39,7 +39,7 @@ Even though Fedora is optional in Islandora 2.0, most repositories will use it s * Integration with Microservices via API-X * WebAC Policies for access control (not currently leveraged by default) -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 2.0 repository in the [metadata](metadata.md) and [media](media.md) sections. +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). In addition, the Drupal media associated with Islandora objects are persisted to Fedora, although exactly which media is configurable within the Islandora 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 2.0 repository in the [metadata](metadata.md) and [media](media.md) sections. ## Architecture @@ -50,9 +50,9 @@ Many users of Islandora may be familiar with the metaphorical diagram of Islando ![Islandora 7 as a cheeseburger](../assets/user-intro-islandoraburger.png) -For a similar conceptual approach to Islandora 2.0, we present it as a bento box: a very modular platform, in which each piece may be removed and replaced with something different, without disrupting other parts of the stack: +For a similar conceptual approach to Islandora, we present it as a bento box: a very modular platform, in which each piece may be removed and replaced with something different, without disrupting other parts of the stack: -![Islandora 8 as a bento box](../assets/user-intro-bento.png) +![Islandora as a bento box](../assets/user-intro-bento.png) For a true diagram of how the various parts of Islandora 2.0 interact, please see the full [Architecture Diagram](../technical-documentation/diagram.md) diff --git a/docs/user-documentation/users.md b/docs/user-documentation/users.md index 39a433cd0..0675a2b00 100644 --- a/docs/user-documentation/users.md +++ b/docs/user-documentation/users.md @@ -28,8 +28,8 @@ Additional user roles can be created and assigned customized permissions, as des 1. Click the blue **Add user** button to bring up the *Add user* page. 1. Enter all required fields, as indicated by red asterisks, in the *Add user* page. 1. In the *Roles* section, click on the roles that the new user will need. - - Click on "Administrator" if the new user will need to be able to run administrative tasks in Drupal or Islandora 8. - - Click on "fedoraAdmin" if the new user will need to be able to write to Fedora. This is required by the WebAC authentication so Islandora 8 and Fedora can communicate. + - Click on "Administrator" if the new user will need to be able to run administrative tasks in Drupal or Islandora. + - Click on "fedoraAdmin" if the new user will need to be able to write to Fedora. This is required by the WebAC authentication so Islandora and Fedora can communicate. 1. Review other settings available for a new user such as: - Site language - *English* selected by default. diff --git a/docs/user-documentation/video-docs.md b/docs/user-documentation/video-docs.md index 29fa1e6e5..433994e73 100644 --- a/docs/user-documentation/video-docs.md +++ b/docs/user-documentation/video-docs.md @@ -2,7 +2,7 @@ ## Overview -Islandora Quick Lessons are a series of short videos demonstrating how to do common tasks in Islandora 8. +Islandora Quick Lessons are a series of short videos demonstrating how to do common tasks in Islandora. New videos are added to [the playlist](https://www.youtube.com/playlist?list=PL4seFC7ELUtripxWi_2RIBKCWqI0uif93) regularly. From 84fb9bdd729652cdd718f49ca55ff004232d85ec Mon Sep 17 00:00:00 2001 From: Tom Misilo Date: Sun, 10 Apr 2022 17:57:46 -0500 Subject: [PATCH 08/18] Islandora Legacy String Changes --- docs/user-documentation/media.md | 12 ++++++------ docs/user-documentation/user-intro.md | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/user-documentation/media.md b/docs/user-documentation/media.md index 041d6af22..9e1295234 100644 --- a/docs/user-documentation/media.md +++ b/docs/user-documentation/media.md @@ -2,9 +2,9 @@ Drupal 8 recognizes files (such as images, audio files, video files, etc.) but w "media" to allow us to attach fields to files. Drupal uses a media's fields to 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 as datastream properties or as additional metadata-specific datastreams. - In Islandora 8, each datastream holds its technical metadata using an associated media entity. +!!! note "Compared to Islandora Legacy" + In Islandora Legacy, this sort of technical metadata would have been stored as datastream properties or as additional metadata-specific datastreams. + In Islandora, each datastream holds its technical metadata using an associated media entity. Fedora will store the media's file as a binary resource and use the media's properties as the binary resource's description. @@ -48,7 +48,7 @@ Third, the metadata synced from the Media into Fedora at [old Fedora URI]/fcr:me Islandora objects can have any number of media associated with them. Media store a reference to the resource node they belong to using a special field, "Media Of". By changing this field's value, you can change which resource node owns the media, and therefore, where it gets displayed or managed. -!!! note "Compared to Islandora 7" +!!! note "Compared to Islandora Legacy" 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. @@ -61,8 +61,8 @@ default set of "Media Use" terms are taken from the [PCDM Use Extension](https:/ ![Media tab](../assets/media_use_vocabulary_media_form.png) -!!! 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, +!!! note "Compared to Islandora Legacy" + Terms from the Media Usage vocabulary are very similar to DSIDs in Islandora Legacy. 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. ## Derivatives diff --git a/docs/user-documentation/user-intro.md b/docs/user-documentation/user-intro.md index 8aaf58ed5..a4de9aef8 100644 --- a/docs/user-documentation/user-intro.md +++ b/docs/user-documentation/user-intro.md @@ -48,7 +48,7 @@ In Islandora repositories that use Fedora, all properties about Drupal nodes are Many users of Islandora may be familiar with the metaphorical diagram of Islandora 7 as a cheeseburger, which provides a memorable approximation of how the different parts of the software stack interact in a vertically-integrated, relatively customizable fashion (ie, Drupal, Solr, Islandora, and Fedora are stable layers, and the "toppings" stand in for Solution Packs and other utilities that can be added or removed to customize Islandora): -![Islandora 7 as a cheeseburger](../assets/user-intro-islandoraburger.png) +![Islandora Leagcy as a cheeseburger](../assets/user-intro-islandoraburger.png) For a similar conceptual approach to Islandora, we present it as a bento box: a very modular platform, in which each piece may be removed and replaced with something different, without disrupting other parts of the stack: From 37c0340d581bbff157235dca42dd0cd460c56667 Mon Sep 17 00:00:00 2001 From: Tom Misilo Date: Sun, 10 Apr 2022 18:08:31 -0500 Subject: [PATCH 09/18] Whitespace cleanup --- README.md | 4 +- docs/alpaca/alpaca-technical-stack.md | 34 +++---- docs/concepts/access-control.md | 44 ++++----- docs/concepts/collection.md | 8 +- docs/contributing/committers.md | 6 +- docs/contributing/contributing-workflow.md | 6 +- docs/contributing/create_issues.md | 12 +-- docs/contributing/docs_style_guide.md | 10 +-- docs/contributing/editing-docs.md | 4 +- docs/contributing/readme_template.md | 10 +-- docs/contributing/releasing-islandora.md | 8 +- docs/index.md | 7 +- .../installation/docker-available-commands.md | 11 ++- .../docker-available-configuration.md | 11 ++- docs/installation/docker-basic-usage.md | 2 +- docs/installation/docker-custom.md | 4 +- docs/installation/docker-demo.md | 4 +- docs/installation/docker-introduction.md | 2 +- docs/installation/docker-local.md | 8 +- docs/installation/docker-maintain-drupal.md | 3 +- docs/installation/docker-maintain-isle.md | 6 +- docs/installation/docker-prereq.md | 4 +- docs/installation/docker-troubleshooting.md | 2 +- .../manual/installing_karaf_and_alpaca.md | 8 +- .../installing_tomcat_and_cantaloupe.md | 2 +- .../manual/preparing_a_webserver.md | 2 +- docs/installation/playbook.md | 6 +- .../islandora/drupal-bundle-configurations.md | 8 +- .../reference/islandora_defaults_reference.md | 16 ++-- docs/release_notes/8.x-2.0.md | 6 +- .../checking-coding-standards.md | 1 - docs/technical-documentation/diagram.md | 28 +++--- docs/technical-documentation/jwt.md | 4 +- docs/technical-documentation/migrate-csv.md | 90 +++++++++---------- .../ppa-documentation.md | 1 - .../rest-authorization.md | 8 +- docs/technical-documentation/rest-create.md | 1 - docs/technical-documentation/rest-delete.md | 22 ++--- docs/technical-documentation/rest-get.md | 12 +-- docs/technical-documentation/rest-patch.md | 8 +- .../rest-signposting.md | 24 ++--- .../running-automated-tests.md | 6 +- docs/technical-documentation/testing-notes.md | 4 +- .../updating_drupal.md | 5 +- .../using-rest-endpoints.md | 1 - docs/technical-documentation/versioning.md | 2 - docs/tutorials/blocks.md | 14 +-- docs/tutorials/create-a-resource-node.md | 3 +- docs/tutorials/create_update_views.md | 30 +++---- docs/tutorials/how-to-create-collection.md | 8 +- docs/tutorials/switch_homepage_to_twig.md | 10 +-- docs/user-documentation/advanced-search.md | 4 +- docs/user-documentation/extending.md | 23 +++-- .../facet_on_vocabulary_reference_fields.md | 27 +++--- docs/user-documentation/file_viewers.md | 10 +-- docs/user-documentation/glossary.md | 83 +++++++++-------- docs/user-documentation/iiif.md | 12 +-- docs/user-documentation/media.md | 30 +++---- docs/user-documentation/multilingual.md | 10 +-- docs/user-documentation/oai.md | 8 +- .../objects_to_resource_nodes.md | 4 +- docs/user-documentation/paged-content.md | 42 ++++----- .../recipes/alexa_search.md | 16 ++-- docs/user-documentation/resource-nodes.md | 20 ++--- docs/user-documentation/searching.md | 7 +- docs/user-documentation/usage-stats.md | 2 +- docs/user-documentation/user-intro.md | 21 ++--- docs/user-documentation/users.md | 3 +- docs/user-documentation/versioning.md | 2 +- make-nav-tree.py | 6 +- 70 files changed, 416 insertions(+), 454 deletions(-) diff --git a/README.md b/README.md index 1db1945c4..a6c664aef 100644 --- a/README.md +++ b/README.md @@ -6,13 +6,13 @@ This "documentation" repository has three functions: -- it **houses the source code for the** [**documentation**](https://islandora.github.io/documentation/) of the [**Islandora project**](https://islandora.ca/) (versions 2.x and above). +- it **houses the source code for the** [**documentation**](https://islandora.github.io/documentation/) of the [**Islandora project**](https://islandora.ca/) (versions 2.x and above). - it **hosts the central** [**issue queue**](https://github.com/Islandora/documentation/issues) **for the entire Islandora project**. Add an issue there if you have a use case that isn't addressed, or find a bug. - its [Wiki](https://github.com/Islandora/documentation/wiki) **contains the archived minutes** for Islandora Tech calls and User calls of previous years. **To find current meeting minutes, please navigate to our** [**community-wiki**](https://github.com/Islandora/islandora-community/wiki). ## Documentation Structure -The documentation is written in [mkdocs](https://www.mkdocs.org/) — the navigation structure is specified in `mkdocs.yml` and the `/docs/` folder contains the content. The text is written in mkdocs-flavoured markdown format and follows our [Documentation Style Guide](https://islandora.github.io/documentation/contributing/docs_style_guide/). Documentation is built and deployed to Github Pages automatically when new commits are added to the 'main' branch. +The documentation is written in [mkdocs](https://www.mkdocs.org/) — the navigation structure is specified in `mkdocs.yml` and the `/docs/` folder contains the content. The text is written in mkdocs-flavoured markdown format and follows our [Documentation Style Guide](https://islandora.github.io/documentation/contributing/docs_style_guide/). Documentation is built and deployed to Github Pages automatically when new commits are added to the 'main' branch. * [Islandora Documentation via Github Pages](https://islandora.github.io/documentation/) diff --git a/docs/alpaca/alpaca-technical-stack.md b/docs/alpaca/alpaca-technical-stack.md index 059237c09..54e868569 100644 --- a/docs/alpaca/alpaca-technical-stack.md +++ b/docs/alpaca/alpaca-technical-stack.md @@ -2,15 +2,15 @@ Alpaca contains several OSGI modules or bundles. They are grouped together as features and deployed to Karaf container. ## [OSGi](https://www.osgi.org/developer/architecture/) -OSGi is a specification to develop and deploy modular Java applications. It allows for dynamic deployment (hot deployment) and dependency management. +OSGi is a specification to develop and deploy modular Java applications. It allows for dynamic deployment (hot deployment) and dependency management. -The base unit of resources is called a bundle. Bundle is similar to a jar file, with additional information to be processed as an OSGi component. Several bundles can be grouped together into a Feature and installed together. OSGi bundles can be run on containers implementing the OSGi specification. Apache Karaf is one such container +The base unit of resources is called a bundle. Bundle is similar to a jar file, with additional information to be processed as an OSGi component. Several bundles can be grouped together into a Feature and installed together. OSGi bundles can be run on containers implementing the OSGi specification. Apache Karaf is one such container. ## [Karaf](https://karaf.apache.org/manual/latest/overview.html) -Apache Karaf is a container that can be used to deploy an array of applications such servlets, Apache Camel components, jars etc. +Apache Karaf is a container that can be used to deploy an array of applications such servlets, Apache Camel components, jars etc. -### Karaf - Bundle - Hello World -Download a bundle to the [islandora-playbook](https://github.com/Islandora-Devops/isladora-playbook) (ex to `/home/ubuntu` directory). An example hello world bundle is [here](https://github.com/moghaddam/developmentor/blob/master/helloworld/target/helloworld-1.0.0.jar). +### Karaf - Bundle - Hello World +Download a bundle to the [islandora-playbook](https://github.com/Islandora-Devops/isladora-playbook) (ex to `/home/ubuntu` directory). An example hello world bundle is [here](https://github.com/moghaddam/developmentor/blob/master/helloworld/target/helloworld-1.0.0.jar). In the Islandora playbook, you can login to Karaf using ssh. The password is karaf. You can also use the client here: `/opt/karaf/bin/client`. Karaf client allows the use of Linux commands such as `grep` in addition to Karaf commands. @@ -27,7 +27,7 @@ Bundle ID: 242 The installation will return a bundle id. You can issue the list command to verify that bundle is on the list. Initially it will have *Installed* status. -As per OSGi specification, before a bundle can be started, it has to be Resolved. To resolve, issue the following command. +As per OSGi specification, before a bundle can be started, it has to be Resolved. To resolve, issue the following command. ``` karaf@root(bundle)> resolve 242 ``` @@ -38,13 +38,13 @@ karaf@root(bundle)> start 242 Hello World! karaf@root(bundle)> stop 242 Goodbye World! -karaf@root(bundle)> +karaf@root(bundle)> ``` -### Karaf - Features - Hello World -Karaf Features allows for bundles to be grouped, managed and deployed together. Features can be nested as well. Feature files of frameworks such as Apache Camel or Apache ActiveMQ can be used to deploy those services. +### Karaf - Features - Hello World +Karaf Features allows for bundles to be grouped, managed and deployed together. Features can be nested as well. Feature files of frameworks such as Apache Camel or Apache ActiveMQ can be used to deploy those services. -A simple Features file is as below. +A simple Features file is as below. ``` @@ -59,7 +59,7 @@ You can add the features to Karaf as below: ``` karaf@root()> feature:repo-add file:///home/ubuntu/features.xml ``` -You can install the feature's bundles as below. +You can install the feature's bundles as below. ``` karaf@root(feature)> install greeter_server @@ -76,14 +76,14 @@ Goodbye World! ``` ## [Gradle](https://docs.gradle.org/current/userguide/tutorial_using_tasks.html) -Gradle is used by Alpaca as a build and package management tool. It is similar to [Maven](https://maven.apache.org/). +Gradle is used by Alpaca as a build and package management tool. It is similar to [Maven](https://maven.apache.org/). ## [Apache Camel](http://camel.apache.org/book-getting-started.html) -Apache Camel is an integration framework that aids in implementing integration patterns. +Apache Camel is an integration framework that aids in implementing integration patterns. ### Alpaca - Apache Camel HelloWorld -Maven has camel-archetype-blueprint which can be used to create apache-camel OSGi bundle project structure. +Maven has camel-archetype-blueprint which can be used to create apache-camel OSGi bundle project structure. #### Creating a project/bundle under Alpaca ``` @@ -96,9 +96,9 @@ However, it is easier to copy the structure of an existing project such as [isla cp -R islandora-connector-broadcast/ islandora-connector-helloworld ``` -Open the project in your IDE. In Eclipse, you can go to File | Open Projects from File System and navigate the new folder. +Open the project in your IDE. In Eclipse, you can go to File | Open Projects from File System and navigate the new folder. -We need to rename the configuration, java and build files to reflect the helloworld project. +We need to rename the configuration, java and build files to reflect the helloworld project. * `src/main/cfg/ca.islandora.alpaca.connector.helloworld.cfg` * `src/main/java/ca/islandora/alpaca/connector/helloworld` @@ -131,7 +131,7 @@ public class HelloworldRouter extends RouteBuilder { ``` -* `src/main/resource/OSGI-INF/blueprint/blueprint.xml` - Change the content of this file to reflect Helloworld package. +* `src/main/resource/OSGI-INF/blueprint/blueprint.xml` - Change the content of this file to reflect Helloworld package. * `src/build.gradle` ``` apply plugin: 'osgi' diff --git a/docs/concepts/access-control.md b/docs/concepts/access-control.md index 64d83e929..b48e47899 100644 --- a/docs/concepts/access-control.md +++ b/docs/concepts/access-control.md @@ -13,21 +13,21 @@ Known strategies for implementing access control in Drupal include: !!! danger "Exposed Endpoints" If access control is a concern, you will want to lock down access to the following services that are part of the Islandora Suite: - + - Fedora (REST API and admin client) - Solr (API and admin client) - Blazegraph (API and admin client) - + as anyone accessing data through those services are bypassing Drupal's access control. In all out-of-the-box sandboxes and demo instances, these services are wide open. - + ## Access Control in Core Drupal **Summary: Core Drupal's access control features include the "published"/"unpublished" states and some basic permissions that can be granted globally or at the bundle level.** - -Drupal's concepts of "published" and "unpublished" for nodes and media apply to Islandora just as they do in Drupal. _Usually_, published content is visible to the entire world (without any authentication), while unpublished content can only be accessed by selected users - usually administrators, other privileged roles, and the user who created the content. This is configurable through the Drupal Permissions interface. +Drupal's concepts of "published" and "unpublished" for nodes and media apply to Islandora just as they do in Drupal. _Usually_, published content is visible to the entire world (without any authentication), while unpublished content can only be accessed by selected users - usually administrators, other privileged roles, and the user who created the content. This is configurable through the Drupal Permissions interface. -All Drupal permissions are granted to _roles_, not individual users. Read more [documentation on Users, roles, and permissions](/https://www.drupal.org/node/120614). + +All Drupal permissions are granted to _roles_, not individual users. Read more [documentation on Users, roles, and permissions](/https://www.drupal.org/node/120614). The extent of the configurability of Drupal Core's access control (excluding revisions) is provided by the following permissions: @@ -46,7 +46,7 @@ The extent of the configurability of Drupal Core's access control (excluding rev | - Delete (your) own content | | - Delete any(one's) content | -| Administrative permission (includes all the above and more, give to trusted users only): +| Administrative permission (includes all the above and more, give to trusted users only): | --- | | - Administer content | @@ -57,43 +57,43 @@ Contributed modules are required for the following cases: - individual nodes or media having their own access policies (in Core Drupal, access can only be configured at the content type or media type level) - access policies that grant privileges to _users_ (in Core Drupal, access can be granted only to roles, and/or to that content's author) -- contents of specific "management" fields being reserved so that only privileged users can view or edit. +- contents of specific "management" fields being reserved so that only privileged users can view or edit. ### Islandora Resources -Given the [Collection] → Node → Media → File structure of Islandora resources, it is reasonable to wonder if access to a Node, Media, or File is influenced by the permissions on its "parent" resource. +Given the [Collection] → Node → Media → File structure of Islandora resources, it is reasonable to wonder if access to a Node, Media, or File is influenced by the permissions on its "parent" resource. There is not yet a mechanism for Drupal's access control to be "inherited" from parent resources to child resources. An exception is non-public files, as described below. ### Sidebar: Access to files in Drupal -Drupal's access control applies to files __except those stored in Drupal's public filesystem__. +Drupal's access control applies to files __except those stored in Drupal's public filesystem__. -If you upload a file to Drupal, it's usually stored in a field on an entity. In Islandora, that entity is a Media. Drupal's access checks mean that a user must have permission to view the Media, and (if configured) the file field on that media, to see the file. However, file fields can be configured with various forms of file storage, and the file storage determines whether access control checks are applied at all. Files stored in Drupal's public filesystem are always public, viewable by anyone in the world. +If you upload a file to Drupal, it's usually stored in a field on an entity. In Islandora, that entity is a Media. Drupal's access checks mean that a user must have permission to view the Media, and (if configured) the file field on that media, to see the file. However, file fields can be configured with various forms of file storage, and the file storage determines whether access control checks are applied at all. Files stored in Drupal's public filesystem are always public, viewable by anyone in the world. Drupal's access control applies to files _accessed through Drupal_ where the file storage is: -- on Fedora using Flysystem +- on Fedora using Flysystem - on a Drupal private filesystem - on another location such as S3 or Dropbox, through flysystem. !!! warning "Direct access to file storage" - Files stored using Flysystem are actually located on a separate service. It is the **administrator's responsibility to implement appropriate access control on the target storage system**, as there is a way to link directly to files in Fedora, S3, or Dropbox. These direct links bypass Drupal and therefore Drupal's access control. + Files stored using Flysystem are actually located on a separate service. It is the **administrator's responsibility to implement appropriate access control on the target storage system**, as there is a way to link directly to files in Fedora, S3, or Dropbox. These direct links bypass Drupal and therefore Drupal's access control. The filesystem used by a field is usually configured through "Manage Fields" on the appropriate entity. However, it is possible for a field to be _configured_ to use a certain filesystem, but for _actual files_ created through back-end processes to use a different one. For example, derivatives generated by Islandora in Islandora Defaults are written to the public filesystem, despite the field configuration which points to Fedora. -To determine the actual location of a file, right-click the existing file in the Media Edit page and select "copy location". A file that is saved in flysystem will include `/_flysystem/` in the URL. These links (you can test it!) only work if you have permission to view the media. A file with `/sites/default/files/` is probably publically accessible (this is the public filesystem on most Drupal instances). +To determine the actual location of a file, right-click the existing file in the Media Edit page and select "copy location". A file that is saved in flysystem will include `/_flysystem/` in the URL. These links (you can test it!) only work if you have permission to view the media. A file with `/sites/default/files/` is probably publically accessible (this is the public filesystem on most Drupal instances). !!! note "In Defaults, All Derivatives Are Public" - Out of the box using Islandora Defaults, derivatives are created for all Islandora media (as long as the conditions of the contexts aree met), and they are stored in the public Drupal filesystem. This happens even if the media and/or node are not published. - + Out of the box using Islandora Defaults, derivatives are created for all Islandora media (as long as the conditions of the contexts aree met), and they are stored in the public Drupal filesystem. This happens even if the media and/or node are not published. + ## Access control in Solr The Search API Module, which connects Drupal to Solr, provides configuration so that access considerations are respected by the Drupal solr results display. The "Processors" configuration (e.g. at admin/config/search/search-api/index/default_solr_index/processors) provides checkboxes for the following options: - "Content access": Adds content access checks for nodes and comments -- "Entity status": Exclude inactive users and unpublished entities (which have a "Published" state) from being indexed. +- "Entity status": Exclude inactive users and unpublished entities (which have a "Published" state) from being indexed. Both are enabled out of the box in Islandora Defaults. This will ensure that queries through Drupal never show content that the active user shouldn't see, as well as preventing information about unpublished entities from ever being entered into Solr. @@ -106,7 +106,7 @@ Both are enabled out of the box in Islandora Defaults. This will ensure that que "The [Group](https://www.drupal.org/project/group) module allows you to create arbitrary collections of your content and users on your site and grant access control permissions on those collections." !!! note "Opinion" - Group is one of the more hefty modules, and is difficult to learn. It is good if you have static or semi-static groups of users who need access to a static or semi-static group of content, but sharing an item with an arbitrary group of users is cumbersome. + Group is one of the more hefty modules, and is difficult to learn. It is good if you have static or semi-static groups of users who need access to a static or semi-static group of content, but sharing an item with an arbitrary group of users is cumbersome. ## Permissions By Term (contributed module) @@ -130,20 +130,20 @@ This module is known to work, and appears to be supported well by the Drupal com ## Other contributed modules -Workflow Participants allows for granting permissions on individual nodes or media to individual users, as an extension to the Workflow suite of modules. However, it is not well supported and the "manage workflow participants" permission should not be given to untrusted users as it may grant users the ability to add participants even to content they are otherwise not able to see or edit. +Workflow Participants allows for granting permissions on individual nodes or media to individual users, as an extension to the Workflow suite of modules. However, it is not well supported and the "manage workflow participants" permission should not be given to untrusted users as it may grant users the ability to add participants even to content they are otherwise not able to see or edit. ## Access control in Fedora In Fedora it is possible to control access to resources using Access Control Lists (ACLs) per the Fedora API Specification. ACLs are inherited through Fedora's LDP Containment relationships. -Islandora does not create customized ACLs when syncing content into Fedora. +Islandora does not create customized ACLs when syncing content into Fedora. -Islandora does not create Fedora resources in hierarchies that use LDP containment relationships. +Islandora does not create Fedora resources in hierarchies that use LDP containment relationships. At this time, access control in Fedora is NOT reflective of access control in Drupal. In the sandboxes and demo installations, all resources in Fedora are open for the world to view. This includes unpublished nodes and media, as well as the files uploaded into Fedora. Access controls configured in Drupal are not synced in any way to Fedora. -Sites concerned with access control wish to "lock down" their Fedora to only be accessible through Drupal. +Sites concerned with access control wish to "lock down" their Fedora to only be accessible through Drupal. ## Access control in the Triplestore diff --git a/docs/concepts/collection.md b/docs/concepts/collection.md index 22f43e597..edecdce73 100644 --- a/docs/concepts/collection.md +++ b/docs/concepts/collection.md @@ -16,16 +16,12 @@ Islandora provides: [Islandora Defaults](../reference/islandora_defaults_reference.md) is an optional collection of presets for Islandora, intended to provide a more user-friendly out-of-the-box experience and starting point for more specific customization. Islandora Defaults provides: - a [Content Types](../user-documentation/content_types.md) "Repository Item" that uses the "member_of" field, so that users may add nodes of this type to a collection (or paged content, or compound resource), -- logic (a [Context](../user-documentation/context.md)) such that if a resource is tagged as a "collection", a view of its members will show on the collection's page. +- logic (a [Context](../user-documentation/context.md)) such that if a resource is tagged as a "collection", a view of its members will show on the collection's page. For more details, see the tutorial on [How to create and add to a collection](../tutorials/how-to-create-collection.md) ## Bulk management of members of a collection -Bulk management of items can be done using the Drupal contrib module [Views Bulk Edit](https://www.drupal.org/project/views_bulk_edit). In short, build a view using this module, and you will be able to perform Drupal Actions on sets of objects. Neither Islandora nor Islandora Defaults provide out-of-the-box management tools, but the sandbox provides some sample content and views that use Views Bulk Edit. +Bulk management of items can be done using the Drupal contrib module [Views Bulk Edit](https://www.drupal.org/project/views_bulk_edit). In short, build a view using this module, and you will be able to perform Drupal Actions on sets of objects. Neither Islandora nor Islandora Defaults provide out-of-the-box management tools, but the sandbox provides some sample content and views that use Views Bulk Edit. For more information see the video tutorial on [Batch Editing](https://youtu.be/ZMp0lPelOZw). - - - - diff --git a/docs/contributing/committers.md b/docs/contributing/committers.md index 0da75cd87..718087a50 100644 --- a/docs/contributing/committers.md +++ b/docs/contributing/committers.md @@ -36,13 +36,13 @@ The following is an alphabetized list of the current Islandora committers: | Debbie Flitner | Arizona State University | dflitner | | Willow Gillingham | Born-Digital | wgilling | | Jonathan Green | LYRASIS | jonathangreen | -| Jonathan Hunt | Catalyst.Net | kayakr | +| Jonathan Hunt | Catalyst.Net | kayakr | | Mark Jordan | Simon Fraser University | mjordan | | Danny Lamb | Islandora Foundation | dannylamb | | Natkeeran Ledchumykanthan | University of Toronto Scarborough | natkeeran | | Rosie Le Faive | University of Prince Edward Island | rosiel | | Gavin Morris | Born-Digital | g7morris | -| Alexander O'Neill | University of Prince Edward Island | alxp | +| Alexander O'Neill | University of Prince Edward Island | alxp | | Don Richards | Born-Digital | DonRichards | | Bethany Seeger | Johns Hopkins University | bseeger | | Seth Shaw | University of Nevada, Las Vegas | seth-shaw-unlv | @@ -99,7 +99,7 @@ Summary: If they accept, then do: 1. Add to the Islandora Committer team of the Github Islandora organization. -2. Add to Committer team of GitHub Islandora-Labs organization +2. Add to Committer team of GitHub Islandora-Labs organization 3. Add to islandora-committers google-group 4. Add to committers wiki page: Islandora Committers (this page) 5. Announce the new committer ([template/committerAnnounce.txt](https://raw.githubusercontent.com/Islandora/documentation/main/docs/contributing/templates/committerAnnounce.txt)) diff --git a/docs/contributing/contributing-workflow.md b/docs/contributing/contributing-workflow.md index 8adb88c8a..fff6ca53d 100644 --- a/docs/contributing/contributing-workflow.md +++ b/docs/contributing/contributing-workflow.md @@ -39,12 +39,12 @@ We operate under the [Islandora Community Code of Conduct](https://www.islandora #### Development Workflow: - Create a Github Issue if none exists - Assign the issue to yourself or request it to be assigned in a comment on the issue. Be sure to tag @Islandora/8-x-committers to bring attention to it. -- Perform development on a ‘feature’ branch. Give your branch a name that describes the issue or feature. Using something like ‘issue-xxx‘ and including the issue number is always a safe bet if you don’t know what to name it. +- Perform development on a ‘feature’ branch. Give your branch a name that describes the issue or feature. Using something like ‘issue-xxx‘ and including the issue number is always a safe bet if you don’t know what to name it. - When the code is ready for review, issue a pull request on Github from your feature branch into the development branch (‘8.x-1.x’ for Drupal modules and ‘dev’ for everything else) - Continuous integration checks need to be satisfied before the code can be merged - Coding standards checks and copy/paste mess detection must be passing before code can be merged. - Automated tests are also expected to pass before code can be merged, however at times there can be extenuating circumstances preventing this. For example, sometimes there is a disconnect between running tests locally versus on the continuous integration server. If tests run locally and everyone involved in the pull request is in agreement, the check for automated tests can be ignored. But this isn’t a common occurrence. - - Code coverage checks are more of a guideline than a strict requirement. A reasonable effort to provide tests for contributed code is expected. However, demanding 100% code coverage for all contributed code is unreasonable. If tests have been provided or updated and everyone involved in the pull request is in agreement, code coverage checks can be ignored. + - Code coverage checks are more of a guideline than a strict requirement. A reasonable effort to provide tests for contributed code is expected. However, demanding 100% code coverage for all contributed code is unreasonable. If tests have been provided or updated and everyone involved in the pull request is in agreement, code coverage checks can be ignored. - The code is reviewed and tested by the community, with all feedback and further development performed within the pull request. - Once all feedback has been addressed, all applicable status checks have passed, and all interested parties are satisfied, the code can be merged by a committer - Pull requests should not be merged by committers who have provided code in the pull request. Pull requests should also not be merged by committers who are peers in the same organization as those who provided code. @@ -56,5 +56,3 @@ We operate under the [Islandora Community Code of Conduct](https://www.islandora #### Release Workflow During release, the same workflow holds, it is just performed against the ‘release’ branch of a repository instead of ‘dev’ or ‘8.x-1.x’. After pull requests are merged into the release branch, the changes can be merged back into dev from release. - - diff --git a/docs/contributing/create_issues.md b/docs/contributing/create_issues.md index 4f0ee27ee..1e3e94834 100644 --- a/docs/contributing/create_issues.md +++ b/docs/contributing/create_issues.md @@ -3,7 +3,7 @@ ## Overview The Islandora community uses GitHub issues to track bug reports, requests for improvements, requests for new features, and use cases. Issues are welcome from anyone who works with Islandora. -The Islandora [issue queue](https://github.com/Islandora/documentation/issues) is maintained in the Islandora [Documentation](https://github.com/Islandora/documentation) repository on GitHub. Issues posted to the queue are reviewed weekly on the Islandora [Tech Call](https://github.com/Islandora/documentation/wiki). Members of the Islandora community can respond to posted issues by replying with comments, taking on the assignment to do the work described in the issue, or making a "pull request" relating to the issue. +The Islandora [issue queue](https://github.com/Islandora/documentation/issues) is maintained in the Islandora [Documentation](https://github.com/Islandora/documentation) repository on GitHub. Issues posted to the queue are reviewed weekly on the Islandora [Tech Call](https://github.com/Islandora/documentation/wiki). Members of the Islandora community can respond to posted issues by replying with comments, taking on the assignment to do the work described in the issue, or making a "pull request" relating to the issue. !!! Tip "Video version available" The material in this tutorial is presented in our video, [Create a GitHub Issue](https://youtu.be/eHBIYlRxEtk). @@ -20,10 +20,10 @@ The Islandora [issue queue](https://github.com/Islandora/documentation/issues) i ![New Issue button](../assets/create_issues_newissue.jpg) 3. Fill in the information for your issue: 1. Fill in a descriptive title. If you are posting a use case, you can start with "Use Case:" - 2. Fill in the body of your issue. Describe a bug you are seeing and how to reproduce it; describe how an existing feature could be improved; describe a new feature and how it should work; describe documentation that needs to be written or expanded. - 3. Use the built-in text editor to help format your issue in [Markdown](http://en.wikipedia.org/wiki/Markdown). + 2. Fill in the body of your issue. Describe a bug you are seeing and how to reproduce it; describe how an existing feature could be improved; describe a new feature and how it should work; describe documentation that needs to be written or expanded. + 3. Use the built-in text editor to help format your issue in [Markdown](http://en.wikipedia.org/wiki/Markdown). 4. Preview your issue to make sure the formatting looks the way you want. 5. Click **Submit new issue** to add your issue to the queue. -![Create Issue window](../assets/create_issues_commentbox.jpg) -4. (Optional) Add labels to your issue to assign it to available categories, such as "documentation" or "question." Click on as may labels as you like. When you click outside of the drop-down list, the selected labels will be applied to your issue. -![Assign labels](../assets/create_issues_labels.jpg) +![Create Issue window](../assets/create_issues_commentbox.jpg) +4. (Optional) Add labels to your issue to assign it to available categories, such as "documentation" or "question." Click on as may labels as you like. When you click outside of the drop-down list, the selected labels will be applied to your issue. +![Assign labels](../assets/create_issues_labels.jpg) diff --git a/docs/contributing/docs_style_guide.md b/docs/contributing/docs_style_guide.md index b563af011..0f301c4a9 100644 --- a/docs/contributing/docs_style_guide.md +++ b/docs/contributing/docs_style_guide.md @@ -2,7 +2,7 @@ ## Do's -- Use a GitHub Pull Request to submit documentation. +- Use a GitHub Pull Request to submit documentation. - See the [Editing Documentation](https://islandora.github.io/documentation/contributing/editing-docs/) documentation page for information on creating a Pull Request. - Make it clear if the documentation is based on a particular configuration (such as Islandora Defaults) or if it applies to any deployment of Islandora. - Submit documentation formatted in [Markdown](https://en.wikipedia.org/wiki/Markdown) format. @@ -21,22 +21,22 @@ _Example:_ - I am a list item - And I am a sub-item. ``` -- Upload images to the 'assets' folder and reference them from there. +- Upload images to the 'assets' folder and reference them from there. - For file naming, use underscores between words and prefix all file names with the page name, e.g. context_display_hints.jpg for the image showing how to set display hints in the context menu. - Use the [Admonition syntax](https://squidfunk.github.io/mkdocs-material/reference/admonitions/) to create notes like this (four-space indent required): _Example:_ ``` -!!! note "Helpful Tip" +!!! note "Helpful Tip" I am a helpful tip! ``` _Result:_ -!!! note "Helpful Tip" +!!! note "Helpful Tip" I am a helpful tip! - + - Use our custom `islandora` type within the Admonition syntax to call attention to areas where Islandora configuration differs from standard Drupal configuration: _Example:_ diff --git a/docs/contributing/editing-docs.md b/docs/contributing/editing-docs.md index e835e3a87..ee8bfc62f 100644 --- a/docs/contributing/editing-docs.md +++ b/docs/contributing/editing-docs.md @@ -14,13 +14,13 @@ To edit documentation in Islandora, you must: - have a very basic familiarity with Git terms such as [fork](https://guides.github.com/activities/forking/), [branch](https://guides.github.com/activities/hello-world/#branch), and [pull request](https://guides.github.com/activities/hello-world/#pr). - optionally, be a member of the Islandora [GitHub Organization](https://github.com/orgs/Islandora/people). - To request an invite, email community@islandora.ca or ask on the Islandora Slack. - - This is only needed if you want to commit changes directly to the documentation. Non-members may still make pull requests. + - This is only needed if you want to commit changes directly to the documentation. Non-members may still make pull requests. - be willing to learn with [Markdown](http://en.wikipedia.org/wiki/Markdown) - a good [Markdown cheat sheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) can help. - for example, you may use Markdown syntax to create links and section headings. - follow the [Islandora Documentation Style Guide](docs_style_guide.md). - have either an individual [Contributor License Agreement](https://github.com/Islandora/islandora/wiki/Contributor-License-Agreements) (CLA) on file with the Islandora Foundation, or work for an organization that has a corporate Contributor License Agreement on file with the Islandora Foundation. - for information on how to fill out and submit a Contributor License Agreement (CLA) for yourself and/or your organization visit the [License Agreements](https://islandora.github.io/documentation/contributing/CONTRIBUTING/#license-agreements) section of the "How to contribute" documentation page. -- by participating in the Islandora Community, you are agreeing to act according to the [Islandora Code of Conduct](https://www.islandora.ca/code-of-conduct). +- by participating in the Islandora Community, you are agreeing to act according to the [Islandora Code of Conduct](https://www.islandora.ca/code-of-conduct). ## How to edit documentation using a web browser diff --git a/docs/contributing/readme_template.md b/docs/contributing/readme_template.md index 718a3c34c..1a35bf2e2 100644 --- a/docs/contributing/readme_template.md +++ b/docs/contributing/readme_template.md @@ -1,5 +1,5 @@ ``` -# ![Alt text](Mascot Image) Repository Name +# ![Alt text](Mascot Image) Repository Name [![Minimum PHP Version](link)](link) [![Build Status](link)](link) @@ -26,7 +26,7 @@ Installations instructions. ## Configuration -Describe path to configuration. +Describe path to configuration. Include a screenshot of configuration page. When using your choice of screenshot software, resize your browser first to avoid wide screenshots. Here are a few browser extension examples to take screenshots. @@ -34,7 +34,7 @@ first to avoid wide screenshots. Here are a few browser extension examples to ta - [Fireshots](https://chrome.google.com/webstore/detail/take-webpage-screenshots/mcbpblocgmgfnpjjppndjkmgjaogfceg) - [Nimbus](https://chrome.google.com/webstore/detail/nimbus-screenshot-screen/bpconcjcammlapcogcnnelfmaeghhagj) -To upload the image drag the image into the comment section of an existing Pull Request. +To upload the image drag the image into the comment section of an existing Pull Request. This will generate the image URL link for you ![Configuration Screenshot](https://user-images.githubusercontent.com/2857697/39014759-e2ef9c1e-43e0-11e8-921c-c2a3234d65d2.jpg) @@ -82,9 +82,9 @@ If you would like to contribute code to the project, you need to be covered by a We recommend using the [islandora-playbook](https://github.com/Islandora-Devops/islandora-playbook) to get started. If you want to pull down the submodules for development, don't forget to run git submodule update --init --recursive after cloning. -Also include any Travis gotcha's here. +Also include any Travis gotcha's here. ## License -[Name](link). GPLv2 for Drupal modules. MIT for other modules. +[Name](link). GPLv2 for Drupal modules. MIT for other modules. ``` diff --git a/docs/contributing/releasing-islandora.md b/docs/contributing/releasing-islandora.md index c5fc342c3..c07428afa 100644 --- a/docs/contributing/releasing-islandora.md +++ b/docs/contributing/releasing-islandora.md @@ -6,7 +6,7 @@ Islandora is an ecosystem of repositories and follows a [Semantic Versioning App * MAJOR version when you make incompatible API changes, * MINOR version when you add functionality in a backwards compatible manner, and * PATCH version when you make backwards compatible bug fixes. - + [Learn more about Islandora's Versioning Policy](https://islandora.github.io/documentation/technical-documentation/versioning/) @@ -43,7 +43,7 @@ ossrhUsername = jiraname ossrhPassword = jirapass signing.keyId = pubkeyid signing.password = keypassphrase -signing.secretKeyRingFile = /your/home/.gnupg/secring.gpg +signing.secretKeyRingFile = /your/home/.gnupg/secring.gpg ``` - Your `git` is configured (locally or globally) to [cache github credentials for https](https://help.github.com/articles/caching-your-github-password-in-git/) or [use ssh](https://help.github.com/articles/generating-an-ssh-key/) @@ -90,7 +90,7 @@ The release process will also generate documentation at `./docs/`. ###### Point of no return *** -⚠️ The following steps, once completed are final. They cannot be undone, revoked or altered. Only proceed if you've +⚠️ The following steps, once completed are final. They cannot be undone, revoked or altered. Only proceed if you've completed all the above steps and are absolutely certain the release is ready for publication. *** @@ -109,7 +109,7 @@ completed all the above steps and are absolutely certain the release is ready fo | Jared Whiklo | University of Manitoba | jwhiklo at gmail.com | 9F45FC2BE09F4D70DA0C7A5CA51C36E8D4F78790 | D4F78790 | | Nick Ruest | York University | ruestn at yorku.ca | 159493E15691C84D615B7D1B417FAF1A0E1080CD | 0E1080CD | | Seth Shaw | University of Nevada, Las Vegas | seth.shaw at unlv.edu | 2FF65B22AFA7B2A57F054F89D160AA658DAE385F | D160AA658DAE385F | - + ### JSONLD diff --git a/docs/index.md b/docs/index.md index f58cb0d8d..bd15510fd 100644 --- a/docs/index.md +++ b/docs/index.md @@ -6,14 +6,14 @@ Islandora: -[//]: # (We should probably replace as many of the links in this section as possible with links to within this documentation, and make it clear which are internal links and which link out.) +[//]: # (We should probably replace as many of the links in this section as possible with links to within this documentation, and make it clear which are internal links and which link out.) - **Is native Drupal** - With Islandora, you can create preservation-ready digital resources using Drupal nodes, media, files, and taxonomy terms. A suite of customized Drupal resource types and configurations that illustrate Islandora's capabilities are packaged as the [Islandora Defaults module](https://github.com/Islandora/islandora_defaults). - **Integrates with Fedora** - Drupal resources can be stored in Duraspace's [Fedora 5.x Repository](https://wiki.duraspace.org/display/FF/Fedora+Repository+Home) as binary assets and RDF metadata. - **Uses microservices** - Islandora provides an architecture for messaging and integration with any number of microservices, that provide services outside of the Drupal framework. Islandora's [Crayfish](https://github.com/Islandora/crayfish) suite of microservices provides functionality for synchronizing resources into Fedora and automatically generating derivative files. - **Can handle messages at scale** - Islandora uses [Alpaca](https://github.com/Islandora/Alpaca), an integration middleware based on Apache Camel, to scalably handle messaging and queueing for microservices such as Crayfish. [//]: # (Allowing bulk uploads to be processed without affecting the server... would be the ideal right? but right now they're on the same server. Is just saying "scalability" ok?) -- **Offers digital preservation features** - Using a robust storage layer for preservation (Fedora), and generating technical metadata with FITS, are digital preservation tools provided out of the box in the default implementation. Community members have created additional features for doing [digital preservation using Islandora](https://github.com/mjordan/digital_preservation_using_islandora), which have not yet been contributed to "Core Islandora". +- **Offers digital preservation features** - Using a robust storage layer for preservation (Fedora), and generating technical metadata with FITS, are digital preservation tools provided out of the box in the default implementation. Community members have created additional features for doing [digital preservation using Islandora](https://github.com/mjordan/digital_preservation_using_islandora), which have not yet been contributed to "Core Islandora". - **Exposes data to harvesters** - Metadata about resources is available as linked data through the [JSON-LD serialization module](https://github.com/Islandora/jsonld), and can be made available through Drupal, Fedora, or a triplestore. Islandora also offers a [full configuration for exposing OAI-PMH](https://github.com/Islandora/islandora_defaults/tree/8.x-1.x/modules/islandora_oaipmh) to metadata harvesters, and [IIIF support](https://github.com/Islandora/islandora/tree/8.x-1.x/modules/islandora_iiif) for images. - **Offers flexibility** - As Islandora content is Drupal content, migrations and batch editing can be done through Drupal's built-in migrate framework and controlled vocabularies created using Drupal taxonomies. Contributed Drupal modules such as [Solr Search API](https://www.drupal.org/project/search_api_solr) enable in-site search, and [Matomo Analytics](https://www.drupal.org/project/matomo) provides usage metrics for site analytics. - **Is a community** - A [dedicated, active community of users and developers](https://groups.google.com/forum/#!forum/islandora) is working to push new features, collaborate on improvements, design custom solutions, and create extended functionality. Some of these for Islandora take the form of [Recipes](https://github.com/Islandora-Labs/Islandora-Cookbook). @@ -26,7 +26,7 @@ Try Islandora without installing anything at [sandbox.islandora.ca](https://sand Login credentials for the sandbox can be found [here](https://github.com/Islandora/documentation/wiki/Sandbox.Islandora.ca-online-credentials). -Anyone can log in to this sandbox as an administrator and explore the interface! However, this site is refreshed periodically so your changes will not be permanent. This site uses Islandora Defaults, a way of setting up Islandora for demonstration purposes. This is not the only way that Islandora can be made to work! This sandbox includes, on top of Islandora Defaults, some sample content and configuration (such as views and blocks, and other Drupal modules like Views Bulk Edit) to increase its usefulness as a sandbox. +Anyone can log in to this sandbox as an administrator and explore the interface! However, this site is refreshed periodically so your changes will not be permanent. This site uses Islandora Defaults, a way of setting up Islandora for demonstration purposes. This is not the only way that Islandora can be made to work! This sandbox includes, on top of Islandora Defaults, some sample content and configuration (such as views and blocks, and other Drupal modules like Views Bulk Edit) to increase its usefulness as a sandbox. ### Ansible Playbook @@ -43,4 +43,3 @@ The [Islandora community](https://www.islandora.ca/community) is an active group !!! note "Documentation for previous versions" Documentation for Islandora 6 and 7 is on the [Lyrasis documentation wiki](https://wiki.lyrasis.org/display/ISLANDORA/Start). - diff --git a/docs/installation/docker-available-commands.md b/docs/installation/docker-available-commands.md index 875125e7e..a6fb414cd 100644 --- a/docs/installation/docker-available-commands.md +++ b/docs/installation/docker-available-commands.md @@ -24,11 +24,11 @@ There's a lot of useful commands available to you from within the `isle-dc` fold ## Export Public Files -`make drupal-public-files-dump DEST=/your/path/public_files.tgz` will export your public filesystem and place it as a single zipped tarball at `DEST`. +`make drupal-public-files-dump DEST=/your/path/public_files.tgz` will export your public filesystem and place it as a single zipped tarball at `DEST`. ## Import Public Files -`make drupal-public-files-import SRC=/your/path/public_files.tgz` will import your public filesystem from a single zipped tarball at `SRC`. +`make drupal-public-files-import SRC=/your/path/public_files.tgz` will import your public filesystem from a single zipped tarball at `SRC`. ## Fcrepo Export @@ -39,13 +39,12 @@ There's a lot of useful commands available to you from within the `isle-dc` fold `make fcrepo-import SRC=/your/path/fcrepo-export.tgz` will import your Fedora repository from a single zipped tarball at `SRC` ## Reindex Fedora Metadata - + `make reindex-fcrepo-metadata` will reindex RDF metadata from Drupal into Fedora. ## Reindex Solr -`make reindex-solr` will rebuild rebuild Solr search index for your repository. +`make reindex-solr` will rebuild rebuild Solr search index for your repository. ## Reindex the Triplestore -`make reindex-triplestore` will reindex RDF metadata from Drupal into Blazegraph. - +`make reindex-triplestore` will reindex RDF metadata from Drupal into Blazegraph. diff --git a/docs/installation/docker-available-configuration.md b/docs/installation/docker-available-configuration.md index dfb569d56..da5287fa3 100644 --- a/docs/installation/docker-available-configuration.md +++ b/docs/installation/docker-available-configuration.md @@ -22,10 +22,10 @@ file that contains the changes you've made. ### DOMAIN -What domain your Islandora site will be available at. If you are deploying anywhere other than +What domain your Islandora site will be available at. If you are deploying anywhere other than your personal machine, you'll probably want to change this. -By default, this is set to `islandora.traefik.me`. +By default, this is set to `islandora.traefik.me`. If you change this setting, you need to `make -B docker-compose.yml` to generate a new `docker-compose.yml` file that contains the changes you've made. @@ -78,8 +78,8 @@ By default, this is set to `standard`. ### INSTALL_EXISTING_CONFIG -Set this to `true` if you want to install an existing Drupal site whose configuration was exported with -`drush config:export` +Set this to `true` if you want to install an existing Drupal site whose configuration was exported with +`drush config:export` Available values for this setting are - `true` @@ -119,7 +119,7 @@ file that contains the changes you've made. ### INCLUDE_CODE_SERVER_SERVICE Whether or not to include the `coder` IDE as a service. If you're developing on Islandora, this can -be pretty useful when developing. You should _not_ deploy this service on production environments. +be pretty useful when developing. You should _not_ deploy this service on production environments. Available values for this setting are - `true` @@ -226,4 +226,3 @@ By default, this is set to `true`. If you change this setting, you need to `make -B docker-compose.yml` to generate a new `docker-compose.yml` file that contains the changes you've made. - diff --git a/docs/installation/docker-basic-usage.md b/docs/installation/docker-basic-usage.md index 756d0b8e8..c758fd265 100644 --- a/docs/installation/docker-basic-usage.md +++ b/docs/installation/docker-basic-usage.md @@ -39,7 +39,7 @@ If you want to stop Islandora, you can bring down all the containers with ``` docker-compose down -``` +``` ### Restarting Islandora diff --git a/docs/installation/docker-custom.md b/docs/installation/docker-custom.md index 637f3550f..3bb2815e7 100644 --- a/docs/installation/docker-custom.md +++ b/docs/installation/docker-custom.md @@ -1,10 +1,10 @@ -# Installing a Production/Staging Server +# Installing a Production/Staging Server If you are deploying Islandora on a server that is publicly accessible, there's extra precautions you should take for performance and security reasons. If you follow these steps, you'll see how we can use our `codebase` folder to build a custom Drupal container, and bake code into the container instead of bind-mounting it in. We'll also cover how to store passwords as secrets and set up TLS. - + ## Getting Started If you haven't already [made a local environment](../docker-local), you'll want to do that first. These instructions build off of having diff --git a/docs/installation/docker-demo.md b/docs/installation/docker-demo.md index 47f2ec711..2a7c2a84b 100644 --- a/docs/installation/docker-demo.md +++ b/docs/installation/docker-demo.md @@ -18,7 +18,7 @@ make demo-install-profile Your new Islandora instance will be available at [https://islandora.traefik.me](https://islandora.traefik.me). Don't let the funny url fool you, it's a dummy domain that resolves to `127.0.0.1`. -You can log into Drupal as `admin` using the default password, `password`. +You can log into Drupal as `admin` using the default password, `password`. Enjoy your Islandora instance! Check out the [basic usage documentation](../docker-basic-usage) to see -all the endpoints that are available and how to do things like start and stop Islandora. +all the endpoints that are available and how to do things like start and stop Islandora. diff --git a/docs/installation/docker-introduction.md b/docs/installation/docker-introduction.md index ec76e1a59..3724cef0b 100644 --- a/docs/installation/docker-introduction.md +++ b/docs/installation/docker-introduction.md @@ -1,4 +1,4 @@ -# Introduction to ISLE +# Introduction to ISLE ## What is ISLE? diff --git a/docs/installation/docker-local.md b/docs/installation/docker-local.md index 3e8b7c1cc..517d1d309 100644 --- a/docs/installation/docker-local.md +++ b/docs/installation/docker-local.md @@ -2,7 +2,7 @@ When developing locally, your Drupal site resides in your `isle-dc/codebase` folder and is bind-mounted into your Drupal container. This lets you update code using the IDE of your choice on your host machine, and the -changes are automatically reflected on the Drupal container. +changes are automatically reflected on the Drupal container. ## Getting Started @@ -24,7 +24,7 @@ set ENVIRONMENT=local ``` -You should also change the `COMPOSE_PROJECT_NAME` variable. This determines the name of the +You should also change the `COMPOSE_PROJECT_NAME` variable. This determines the name of the Docker containers that are created when you run `make local`. If you leave this as the default you will need to be careful not to overwrite the containers with another install of `isle-dc` later. @@ -33,7 +33,7 @@ COMPOSE_PROJECT_NAME=isle-dc ``` If your site includes exported configuration from `drush config:export`, then you'll also -need to set +need to set ``` INSTALL_EXISTING_CONFIG=true @@ -49,5 +49,5 @@ make local to install the Drupal site in your `codebase` folder and spin up all the other containers with it. Enjoy your Islandora instance! Check out the [basic usage documentation](../docker-basic-usage) to see -all the endpoints that are available and how to do things like start and stop Islandora. Your passwords, +all the endpoints that are available and how to do things like start and stop Islandora. Your passwords, including the Drupal admin password, can be found in the `secrets/live` directory after you run `make local`. diff --git a/docs/installation/docker-maintain-drupal.md b/docs/installation/docker-maintain-drupal.md index e9d2460e2..97fb3863e 100644 --- a/docs/installation/docker-maintain-drupal.md +++ b/docs/installation/docker-maintain-drupal.md @@ -25,7 +25,7 @@ bit. ``` docker-compose exec -T drupal with-contenv bash -``` +``` ## Updating your Drupal Site @@ -58,4 +58,3 @@ If for any reason, something goes wrong, you can Restore the Drupal database at ``` make drupal-database-import SRC=/path/to/dump.sql ``` - diff --git a/docs/installation/docker-maintain-isle.md b/docs/installation/docker-maintain-isle.md index f28556fbc..24c406f9a 100644 --- a/docs/installation/docker-maintain-isle.md +++ b/docs/installation/docker-maintain-isle.md @@ -1,4 +1,4 @@ -# Maintaining Your ISLE Infrastructure +# Maintaining Your ISLE Infrastructure You will regularly be updating your Drupal site as security patches and module updates are released. Less often, you will also need to update the rest of your Islandora installation. ISLE makes this easy. @@ -40,10 +40,10 @@ And finally we deploy the updated containers by running docker-compose up -d ``` -You can check that everything is running at the version you've specified with +You can check that everything is running at the version you've specified with ``` docker ps -a ``` -The version that's running can be confirmed by looking at the `IMAGE` column in the output. +The version that's running can be confirmed by looking at the `IMAGE` column in the output. diff --git a/docs/installation/docker-prereq.md b/docs/installation/docker-prereq.md index 5ce9d8375..82dbfb726 100644 --- a/docs/installation/docker-prereq.md +++ b/docs/installation/docker-prereq.md @@ -15,7 +15,7 @@ - [Windows Subsystem for Linux v. 2 (WSL 2)](https://docs.microsoft.com/en-us/windows/wsl/install-win10) - Ubuntu 20.04 running on WSL 2 - GNU make, run `sudo apt update` and `sudo apt install make` to install - - Docker Desktop for Windows, using the WSL 2 based engine (Settings > General) and with the WSL integration active for Ubuntu (Settings > Resources > WSL integration) + - Docker Desktop for Windows, using the WSL 2 based engine (Settings > General) and with the WSL integration active for Ubuntu (Settings > Resources > WSL integration) !!! Note "What are we missing?" Are you, or your computer, new to spinning up development sandboxes? Do you have wisdom about installing make on Windows? We suspect these requirements may be incomplete and your experience would be appreciated at [Issue #1640](https://github.com/Islandora/documentation/issues/1640). @@ -42,6 +42,6 @@ If you need to install Docker, we recommend using the application [Docker Deskto Use Git to install the ISLE Docker Compose tool: -`git clone https://github.com/islandora-devops/isle-dc` +`git clone https://github.com/islandora-devops/isle-dc` Tagged versions are available [here](https://github.com/Islandora-Devops/isle-dc/tags). diff --git a/docs/installation/docker-troubleshooting.md b/docs/installation/docker-troubleshooting.md index a38c83c39..1d2aa7fad 100644 --- a/docs/installation/docker-troubleshooting.md +++ b/docs/installation/docker-troubleshooting.md @@ -26,4 +26,4 @@ ERROR: for isle-dc_mariadb_1 UnixHTTPConnectionPool(host='localhost', port=None you can try quitting Docker completely (make sure there is no whale icon in your top toolbar - may need to select "Quit" from the whale icon itself) and then restart Docker. ### 504 Bad Gateway -If you get a white screen with a 504 Bad Gateway error, this means your containers haven't finished initializing themselves yet. If you've waiting an appropriate amount of time (2-5 minutes), then there is most likely an error in a container's startup script. Use `docker ps -a` to see which services have `Exited` status, and then tail their logs with `docker-compose logs service_name`. +If you get a white screen with a 504 Bad Gateway error, this means your containers haven't finished initializing themselves yet. If you've waiting an appropriate amount of time (2-5 minutes), then there is most likely an error in a container's startup script. Use ` docker ps -a` to see which services have `Exited` status, and then tail their logs with `docker-compose logs service_name`. diff --git a/docs/installation/manual/installing_karaf_and_alpaca.md b/docs/installation/manual/installing_karaf_and_alpaca.md index f7667b78e..8b2ed9674 100644 --- a/docs/installation/manual/installing_karaf_and_alpaca.md +++ b/docs/installation/manual/installing_karaf_and_alpaca.md @@ -256,7 +256,7 @@ Our blueprints are going to look largely similar between services, with only a f ca.islandora.alpaca.connector.derivative - + ``` @@ -287,7 +287,7 @@ Our blueprints are going to look largely similar between services, with only a f ca.islandora.alpaca.connector.derivative - + ``` @@ -318,7 +318,7 @@ Our blueprints are going to look largely similar between services, with only a f ca.islandora.alpaca.connector.derivative - + ``` @@ -349,7 +349,7 @@ Our blueprints are going to look largely similar between services, with only a f ca.islandora.alpaca.connector.derivative - + ``` diff --git a/docs/installation/manual/installing_tomcat_and_cantaloupe.md b/docs/installation/manual/installing_tomcat_and_cantaloupe.md index 05ff0c294..b3bd1e690 100644 --- a/docs/installation/manual/installing_tomcat_and_cantaloupe.md +++ b/docs/installation/manual/installing_tomcat_and_cantaloupe.md @@ -62,7 +62,7 @@ export JAVA_OPTS="-Djava.awt.headless=true -server -Xmx1500m -Xms1000m" ``` - `PATH_TO_JAVA_HOME`: This will vary a bit depending on the environment, but will likely live in `/usr/lib/jvm` somewhere (e.g., `/usr/lib/jvm/java-11-openjdk-amd64`); again, in an Ubunutu environment you can check a part of this using `update-alternatives --list java`, which will give you the path to the JRE binary within the Java home. Note that `update-alternatives --list java` will give you the path to the binary, so for `PATH_TO_JAVA_HOME` delete the `/bin/java` at the end to get the Java home directory, so it should look something like this: ``` -export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64" +export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64" ``` ### Creating the Tomcat Service diff --git a/docs/installation/manual/preparing_a_webserver.md b/docs/installation/manual/preparing_a_webserver.md index cf9a0f065..6945d9237 100644 --- a/docs/installation/manual/preparing_a_webserver.md +++ b/docs/installation/manual/preparing_a_webserver.md @@ -97,7 +97,7 @@ This will install: A modification needs to be made to the PostgreSQL configuration in order for Drupal to properly install and function. This change can be made to the main configuration file at `/etc/postgresql/11/main/postgresql.conf`: **Before**: -> 558 | #bytea_output = ‘hex’ # hex, escape +> 558 | #bytea_output = ‘hex’ # hex, escape **After**: > 558 | bytea_output = ‘escape’ diff --git a/docs/installation/playbook.md b/docs/installation/playbook.md index c826ed4b5..0fae65eab 100644 --- a/docs/installation/playbook.md +++ b/docs/installation/playbook.md @@ -12,7 +12,7 @@ $ vagrant up ## Requirements -To create a local VM, download and install the following. +To create a local VM, download and install the following. 1. [Virtual Box](https://www.virtualbox.org/) 2. [Vagrant](https://www.vagrantup.com/) (version 2.0 or higher required) @@ -64,7 +64,7 @@ $ brew install ansible ## Installing a local development environment -Clone the `islandora-playbook` and use `vagrant up` to automatically provision a local environment. This method uses Vagrant, VirtualBox, and Ansible. Before provisioning a local environment, you should likely double check that no [required ports](#port-clashes-for-local-environments) are currently in use. +Clone the `islandora-playbook` and use `vagrant up` to automatically provision a local environment. This method uses Vagrant, VirtualBox, and Ansible. Before provisioning a local environment, you should likely double check that no [required ports](#port-clashes-for-local-environments) are currently in use. ### Clone the playbook @@ -80,7 +80,7 @@ Before using `vagrant up`: - If building a CentOS box, you also need to install the vbguest additions with `vagrant plugin install vagrant-vbguest`. - If this is not your first time spinning up Islandora from this directory, and you want to get the latest code, you may want to clear cached ansible roles in roles/external `rm -rf roles/external` -Then, to spin up the machine: +Then, to spin up the machine: ```bash vagrant up diff --git a/docs/islandora/drupal-bundle-configurations.md b/docs/islandora/drupal-bundle-configurations.md index dc82c3ae9..851e1206d 100644 --- a/docs/islandora/drupal-bundle-configurations.md +++ b/docs/islandora/drupal-bundle-configurations.md @@ -4,15 +4,15 @@ In Islandora, [content models](https://github.com/Islandora/islandora/wiki/Conte Content types and media bundles can be thought of as web [forms](https://www.drupal.org/docs/user_guide/en/structure-widgets.html) consisting of fields. Drupal provides [widgets](https://www.drupal.org/docs/8/creating-custom-modules/create-a-custom-field-widget) to define the behavior of a field and field storage to define how the data is stored in the database. Drupal provides various [display modes](https://www.drupal.org/docs/8/api/entity-api/display-modes-view-modes-and-form-modes) to show the forms to user when they are editing (Manage form display) or viewing (Manage display). -A content model is packaged as a module for installation. All yml files are put in `config/install` folder of the module. Note that not all content models would contain media bundles. +A content model is packaged as a module for installation. All yml files are put in `config/install` folder of the module. Note that not all content models would contain media bundles. -The following files define the bundles themselves. It contains some metadata about the bundle and lists its dependencies. +The following files define the bundles themselves. It contains some metadata about the bundle and lists its dependencies. ``` node.type.your_content_type.yml media_entity.bundle.your_media_bundle.yml ``` -The following files define the fields attached to the bundle forms. There must be one config file for each field in your bundle, except for the default drupal fields. +The following files define the fields attached to the bundle forms. There must be one config file for each field in your bundle, except for the default drupal fields. ``` field.field.node.your_content_type.field_name1.yml field.field.node.your_content_type.field_name2.yml @@ -21,7 +21,7 @@ field.field.media.your_media_bundle.field_name1.yml field.field.media.your_media_bundle.field_name2.yml ``` -If the new bundle contains new fields, then field storage configurations for the newly created fields would be needed as well. Note that if you reused existing fields, storage definitions should not be defined again. Storage config contains information about the number of values allowed for that field (cardinality). +If the new bundle contains new fields, then field storage configurations for the newly created fields would be needed as well. Note that if you reused existing fields, storage definitions should not be defined again. Storage config contains information about the number of values allowed for that field (cardinality). ``` field.storage.node.field_new_name3.yml field.storage.media.field__new_name3.yml diff --git a/docs/reference/islandora_defaults_reference.md b/docs/reference/islandora_defaults_reference.md index e3cbeadfa..d280deb37 100644 --- a/docs/reference/islandora_defaults_reference.md +++ b/docs/reference/islandora_defaults_reference.md @@ -1,6 +1,6 @@ # Drupal Configuration Provided By Islandora Defaults -This is a list of the configuration items provided by the Islandora Defaults module. +This is a list of the configuration items provided by the Islandora Defaults module. ## Entities @@ -109,7 +109,7 @@ The following RDF mappings for the RDF module are included: ### Language -These configuration files enable content translation on their bundles. +These configuration files enable content translation on their bundles. | Type | Bundle | Comments | |---------------|---------------------|----------| @@ -184,11 +184,11 @@ The contexts provided by Islandora Defaults are organized into groups: **Indexin ## Migrations -| Name | +| Name | |---| -|Tags migration for islandora_defaults feature (islandora_defaults_tags)| +|Tags migration for islandora_defaults feature (islandora_defaults_tags)| -Contents of the islandora_defaults_tags migration: +Contents of the islandora_defaults_tags migration: |Vocabulary|Term name|Description|External Uri| |---|---|---|---| @@ -310,7 +310,7 @@ This is at the end of this document because it's not particularly useful yet - t ### New fields -The following are new fields we define: +The following are new fields we define: - field.storage.node.field_access_terms.yml - field.storage.node.field_alternative_title.yml @@ -358,7 +358,7 @@ The following are new fields we define: - core.base_field_override.node.islandora_object.sticky.yml - core.base_field_override.node.islandora_object.title.yml - core.base_field_override.node.islandora_object.uid.yml -- +- - [audio] - core.base_field_override.media.audio.changed.yml - core.base_field_override.media.audio.created.yml @@ -391,5 +391,3 @@ The following are new fields we define: - core.base_field_override.media.video.status.yml - core.base_field_override.media.video.thumbnail.yml - core.base_field_override.media.video.uid.yml - - diff --git a/docs/release_notes/8.x-2.0.md b/docs/release_notes/8.x-2.0.md index 229ec5d96..c0c5cab5d 100644 --- a/docs/release_notes/8.x-2.0.md +++ b/docs/release_notes/8.x-2.0.md @@ -1,4 +1,4 @@ -# Islandora 2.0.0 Release Notes / Upgrade Instructions +# Islandora 2.0.0 Release Notes / Upgrade Instructions ## Update to PHP 7.4 @@ -87,7 +87,7 @@ We removed the Gemini microservice and pushed its code into Crayfish-Commons so 1. Make sure you have the `2.0.0` version of the `islandora` module. If you followed the steps above to update Drupal core and its modules, you'll have this. 2. Import two new Islandora views - i. This can be done by coping the views into a new directory and using drush such as + i. This can be done by coping the views into a new directory and using drush such as ``` mkdir /var/www/html/drupal/config/1time cp /var/www/html/drupal/web/modules/contrib/islandora/modules/islandora_core_feature/config/install/views.view.all_taxonomy_terms.yml /var/www/html/drupal/config/1time/ @@ -101,7 +101,7 @@ We removed the Gemini microservice and pushed its code into Crayfish-Commons so 3. `git checkout 2.0.0` 6. Run composer install for Milliner such as `cd /var/www/html/Crayfish/Milliner && composer install` 7. Run composer install for Recast such as `cd /var/www/html/Crayfish/Recast && composer install` -8. Update the Recast config +8. Update the Recast config 1. `cd /var/www/html/Crayfish/Recast/cfg` 2. open `config.yaml` 3. Remove `gemini_base_url` diff --git a/docs/technical-documentation/checking-coding-standards.md b/docs/technical-documentation/checking-coding-standards.md index afb376f52..83693474e 100644 --- a/docs/technical-documentation/checking-coding-standards.md +++ b/docs/technical-documentation/checking-coding-standards.md @@ -1,4 +1,3 @@ - # Checking Code Style Before opening a pull request, you should check your code style. If you are using the [Vagrant](https://github.com/Islandora-Devops/claw-playbook), you can run `phpcs` within the Drupal installation directory (on the Vagrant, that is `/var/www/html/drupal`) or from within the `web` directory (`/var/www/html/drupal/web`) as follows: diff --git a/docs/technical-documentation/diagram.md b/docs/technical-documentation/diagram.md index 6e09a1117..7ff38415e 100644 --- a/docs/technical-documentation/diagram.md +++ b/docs/technical-documentation/diagram.md @@ -1,33 +1,33 @@ # Islandora Architecture Diagram - + ![Detailed diagram of the Islandora platform and its components](../assets/diagram.png) - + Diagram prepared by [Bethany Seeger](https://github.com/bseeger) based on work done by [Gavin Morris](https://github.com/g7morris) - + ## Components - -### Islandora - + +### Islandora + The following components are microservices developed and maintained by the Islandora community. They are bundled under [Islandora Crayfish](https://github.com/Islandora/Crayfish): - + * [FITS](https://github.com/roblib/CrayFits) - A Symfony 4 Microservice to generate FITS data and persist it as a Drupal media node. Works with [Islandora FITS](https://github.com/roblib/islandora_fits) * [Homarus](https://github.com/Islandora/Crayfish/tree/dev/Homarus) - Provides [FFmpeg](https://www.ffmpeg.org/) as a microservice for generating video and audio derivatives. * [Houdini](https://github.com/Islandora/Crayfish/tree/dev/Houdini) - [ImageMagick](https://www.imagemagick.org/script/index.php) as a microservice for generating image-based derivatives, including thumbnails. * [Hypercube](https://github.com/Islandora/Crayfish/tree/dev/Hypercube) - [Tesseract](https://github.com/tesseract-ocr) as a microservice for optical character recognition (OCR). * [Milliner](https://github.com/Islandora/Crayfish/tree/dev/Milliner) - A microservice that converts Drupal entities into Fedora resources. * [Recast](https://github.com/Islandora/Crayfish/tree/dev/Recast) - A microservice that remaps Drupal URIs to add Fedora-to-Fedora links based on associated Drupal URIs in RDF. - - -### Other Open Source - + + +### Other Open Source + The following components are deployed with Islandora, but are developed and maintained by other open source projects: - - + + * [Apache](https://www.apache.org/) - The Apache HTTP Server, colloquially called Apache, is a free and open-source cross-platform web server software. Provides the environment in which Islandora and its components run. * [ActiveMQ](https://activemq.apache.org/) - Apache ActiveMQ is an open source message broker written in Java together with a full Java Message Service client. * [Karaf](https://karaf.apache.org/) - A modular open source OSGi runtime environment. * [Tomcat](http://tomcat.apache.org/) - an open-source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and WebSocket technologies. Tomcat provides a "pure Java" HTTP web server environment in which Java code can run. - * [Solr](https://lucene.apache.org/solr/) - An open-source enterprise-search platform. Solr is the default search and discover layer of Islandora, and a key component in some methods for [migration to Islandora from Islandora Legacy](https://github.com/Islandora-devops/migrate_7x_claw) + * [Solr](https://lucene.apache.org/solr/) - An open-source enterprise-search platform. Solr is the default search and discover layer of Islandora, and a key component in some methods for [migration to Islandora from Islandora Legacy](https://github.com/Islandora-devops/migrate_7x_claw) * [Blazegraph](https://blazegraph.com/) - Blazegraph is a triplestore and graph database. * [Cantaloupe](https://cantaloupe-project.github.io/) - an open-source dynamic image server for on-demand generation of derivatives of high-resolution source images. Used in Islandora to support [IIIF](https://iiif.io/) * [Drupal](https://www.drupal.org/) - Drupal is an open source content management system, and the heart of Islandora. All user and site-building aspects of Islandora are experienced through Drupal as a graphical user interface. diff --git a/docs/technical-documentation/jwt.md b/docs/technical-documentation/jwt.md index e59866746..082c9c484 100644 --- a/docs/technical-documentation/jwt.md +++ b/docs/technical-documentation/jwt.md @@ -1,7 +1,7 @@ Islandora uses [JWT tokens](https://en.wikipedia.org/wiki/JSON_Web_Token) to authenticate communication between its components. RSA private public key pair is used to sign and verify JWT tokens. The process of issuing JWT tokens using RSA private key is handled by the Drupal [jwt](https://www.drupal.org/project/jwt) module. -The private public RSA pair needed by JWT authentication mechanism is generated in the web server. By default, claw playbook places -the keys in `/opt/islandora/auth`. Crayfish and Tomcat/Karaf need the public key to verify the JWT token. By default, they are put in the following locations: `/var/www/html/Crayfish/public.key`, `/etc/tomcat8/public.key`. If you are deploying Crayfish and Karaf/Tomcat components to different servers, ensure that web server public.key files are in the expected locations. +The private public RSA pair needed by JWT authentication mechanism is generated in the web server. By default, claw playbook places +the keys in `/opt/islandora/auth`. Crayfish and Tomcat/Karaf need the public key to verify the JWT token. By default, they are put in the following locations: `/var/www/html/Crayfish/public.key`, `/etc/tomcat8/public.key`. If you are deploying Crayfish and Karaf/Tomcat components to different servers, ensure that web server public.key files are in the expected locations. Note that the connection need to be over SSL or an encrypted channel for this communication to be secure. Otherwise, a third party can capture your token and get access to your servers. diff --git a/docs/technical-documentation/migrate-csv.md b/docs/technical-documentation/migrate-csv.md index d58b14310..5526f506f 100644 --- a/docs/technical-documentation/migrate-csv.md +++ b/docs/technical-documentation/migrate-csv.md @@ -27,7 +27,7 @@ This tutorial introduces you to the Drupal Migrate tools available to create Isl This tutorial uses the configurations and code available in the [migrate_islandora_csv](https://github.com/Islandora/migrate_islandora_csv) module which, when enabled, will create three example migrations ready for you to use with the Migrate API. Each migration comes from one of the files in the `config/install` folder. We'll walk through them in detail below. The module is also uses [Features](https://www.drupal.org/project/feature) which allows you to make changes to the configuration files and sync those changes into your Drupal site. !!! note "A note on using Features" - This tutorial (and Islandora in general) makes heavy use of Features, which is an easy way to ship and install Drupal configuration. However, after enabling a Feature module, the code in that module's directory is no longer "live", as the configuration now resides in the Drupal database. If you change code in the YAML files, it will not take effect until you re-import the Feature. There is a walkthrough in the "Configuration" section of the [Migrate 7.x to Islandora](https://github.com/Islandora-Devops/migrate_7x_claw) tutorial. + This tutorial (and Islandora in general) makes heavy use of Features, which is an easy way to ship and install Drupal configuration. However, after enabling a Feature module, the code in that module's directory is no longer "live", as the configuration now resides in the Drupal database. If you change code in the YAML files, it will not take effect until you re-import the Feature. There is a walkthrough in the "Configuration" section of the [Migrate 7.x to Islandora](https://github.com/Islandora-Devops/migrate_7x_claw) tutorial. Sample CSV and images are also included in the module as a convenience so they are easily available on the Drupal server running the migration. (This is not the recommended method for making files available to Drupal in a real migration.) @@ -131,18 +131,18 @@ source: delimiter: ',' # 1 means you have a header row, 0 means you don't - header_row_count: 1 + header_row_count: 1 # Each migration needs a unique key per row in the CSV. Here we're using the file path. - keys: - - file + keys: + - file # You can't enter string literals into a process plugin, but you can give it a constant as a 'source'. constants: # Islandora uses Flysystem and stream wrappers to work with files. What we're really saying here is # to put these files in Fedora in a 'csv_migration' folder. It doesn't matter if the directory # doesn't exist yet, it will get created for you automatically. - destination_dir: 'fedora://csv_migration' + destination_dir: 'fedora://csv_migration' process: @@ -176,7 +176,7 @@ process: plugin: file_copy source: - file # The source column in the CSV - - '@destination' # The destination entry from above + - '@destination' # The destination entry from above destination: # These are Drupal 'image' entities we're making, not just plain 'file' entities. @@ -201,10 +201,10 @@ source: path: '/var/www/html/drupal/web/modules/contrib/migrate_islandora_csv/data/migration.csv' delimiter: ',' header_row_count: 1 - keys: - - file + keys: + - file constants: - destination_dir: 'fedora://csv_migration' + destination_dir: 'fedora://csv_migration' ``` You can see we provide a path to its location, what delimiter to use, if it uses a header row, and which column contains a unique key for each entry. Constants can also be defined here (more on those later). @@ -232,7 +232,7 @@ In the `process` section of the migration, we're copying the images over into a plugin: file_copy source: - file - - '@destination' + - '@destination' ``` To do this, we're using the `file_copy` process plugin. But first, we have to know where a file is located and where it should be copied to. We know where the file resides, we have that in the CSV's `file` column. But we're going to have to do some string manipulation in order to generate the new location where we want the file copied. We're trying to convert something like `/var/www/html/drupal/web/modules/contrib/migrate_islandora_csv/data/images/Free Smells.jpg` to `fedora://csv_migration/Free Smells.jpg`. @@ -331,8 +331,8 @@ dependencies: module: - migrate_islandora_csv -id: node -label: Import Nodes from CSV +id: node +label: Import Nodes from CSV migration_group: migrate_islandora_csv source: @@ -344,12 +344,12 @@ source: # Each migration needs a unique key per row in the csv. Here we're using the file path. keys: - - file + - file # You can't enter string literals into a process plugin, but you can give it a constant as a 'source'. constants: # We're tagging our nodes as Images - model: Image + model: Image # Everything gets created as admin uid: 1 @@ -364,7 +364,7 @@ process: # in. field_alternative_title: plugin: skip_on_empty - source: subtitle + source: subtitle method: process field_description: description @@ -377,16 +377,16 @@ process: plugin: entity_lookup source: constants/model entity_type: taxonomy_term - value_key: name + value_key: name bundle_key: vid - bundle: islandora_models + bundle: islandora_models # Split up our pipe-delimited string of # subjects, and generate terms for each. field_subject: - plugin: skip_on_empty - source: subject + source: subject method: process - plugin: explode @@ -478,9 +478,9 @@ process: # Write to the linked agent field. In this case # we first want to merge the info from the - # photographer and provider columns. Since we + # photographer and provider columns. Since we # already prepared our structured array using - # the components of the typed_relation field as + # the components of the typed_relation field as # keys ('target_id' and 'rel_type'), we can just # pass this array into field_linked_agent. field_linked_agent: @@ -508,7 +508,7 @@ For `subtitle`, we're passing it through the `skip_on_empty` process plugin beca ```yml field_alternative_title: plugin: skip_on_empty - source: subtitle + source: subtitle method: process ``` @@ -519,7 +519,7 @@ Now here's where things get interesting. We can look up other entities to popul source: constants/model entity_type: taxonomy_term # 'name' is the string value of the term, e.g. 'Original file', 'Thumbnail'. - value_key: name + value_key: name bundle_key: vid bundle: islandora_models ``` @@ -534,7 +534,7 @@ This approach applies the same taxonomy term to all objects. If you want to assi # 'model' is the header of a field in our input CSV that contains the string value of the taxonomy term. source: model entity_type: taxonomy_term - value_key: name + value_key: name bundle_key: vid bundle: islandora_models ``` @@ -569,7 +569,7 @@ With process plugins, that logic looks like field_subject: - plugin: skip_on_empty - source: subject + source: subject method: process - plugin: explode @@ -607,15 +607,15 @@ In `controlled_access_terms`, we define a new field type of `typed_relation`, wh The `target_id` portion takes an entity id, and rel_type takes the predicate for the MARC relator we want to use to describe the relationship the entity has with the repository item. This example would reference taxonomy_term 1 and give it the relator for "Contributor". -If we have a single name to deal with, we can set those values in YAML, accessing `field_linked_agent/target_id` and `field_linked_agent/rel_type` independently. +If we have a single name to deal with, we can set those values in YAML, accessing `field_linked_agent/target_id` and `field_linked_agent/rel_type` independently. ```yml field_linked_agent/target_id: plugin: entity_generate - source: photographer + source: photographer entity_type: taxonomy_term value_key: name bundle_key: vid - bundle: person + bundle: person field_linked_agent/rel_type: constants/relator ``` @@ -646,7 +646,7 @@ So, if we started with a column containing ``` at the end of this pipeline, the `photographers` temporary variable would contain ```php -[ +[ ['name' => 'Alice'], ['name' => 'Bob'], ['name' => 'Charlie] @@ -673,7 +673,7 @@ Next, we use the `sub_process` plugin. It takes an array of associative arrays ( ``` Within `sub_process`, we cannot access the temporary variables or constants that we've created in the outer migration. This is why we use the `default_value` plugin when for the `rel_type`. It would have been simpler to define a constant as we did with 'Image', but we wouldn't be able to access it. The output of this pipeline is now formatted as the structured data expected by a `typed_relation` field: ```php -[ +[ ['target_id' => 42, 'rel_type' => 'relators:pht' ], ['target_id' => 43, 'rel_type' => 'relators:pht' ], ['target_id' => 44, 'rel_type' => 'relators:pht' ], @@ -705,10 +705,10 @@ Media entities are Drupal's solution for fieldable files. Since you can't put f dependencies: enforced: module: - - migrate_islandora_csv + - migrate_islandora_csv -id: media -label: Import Media from CSV +id: media +label: Import Media from CSV migration_group: migrate_islandora_csv source: @@ -720,12 +720,12 @@ source: # Each migration needs a unique key per row in the csv. Here we're using the file path. keys: - - file + - file # You can't enter string literals into a process plugin, but you can give it a constant as a 'source'. constants: - # We're tagging our media as Original Files - use: Original File + # We're tagging our media as Original Files + use: Original File # Everything gets created as admin uid: 1 @@ -740,28 +740,28 @@ process: plugin: entity_lookup source: constants/use entity_type: taxonomy_term - value_key: name + value_key: name bundle_key: vid - bundle: islandora_media_use + bundle: islandora_media_use # Lookup the migrated file in the file migration. field_media_image: plugin: migration_lookup - source: file - migration: file + source: file + migration: file no_stub: true # Lookup the migrated node in the node migration field_media_of: plugin: migration_lookup - source: file - migration: node + source: file + migration: node no_stub: true - + destination: # These are 'image' media we're making. plugin: 'entity:media' - default_bundle: image + default_bundle: image migration_dependencies: required: @@ -784,9 +784,9 @@ The `field_media_use` field is a tag that's used to denote the purpose of a file plugin: entity_lookup source: constants/use entity_type: taxonomy_term - value_key: name + value_key: name bundle_key: vid - bundle: islandora_media_use + bundle: islandora_media_use ``` The `field_media_image` and `field_media_of` fields are how the media binds a file to a node. You could use `entity_lookup` or `entity_generate`, but we've already migrated them and can very easily look them up by the id assigned to them during migration. But what's the benefit of doing so? The `entity_lookup` and `entity_generate` process plugins do the job fine, right? diff --git a/docs/technical-documentation/ppa-documentation.md b/docs/technical-documentation/ppa-documentation.md index 3d3a80c21..52fa4fee0 100644 --- a/docs/technical-documentation/ppa-documentation.md +++ b/docs/technical-documentation/ppa-documentation.md @@ -137,4 +137,3 @@ imagemagick (8:6.9.7.4+dfsg-16ubuntu6.8) bionic; urgency=medium And you will see it in the interface for the Lyrasis PPA: ![ppa-example](../assets/ppa-example.png) - diff --git a/docs/technical-documentation/rest-authorization.md b/docs/technical-documentation/rest-authorization.md index 31257c503..1e1d6bb82 100644 --- a/docs/technical-documentation/rest-authorization.md +++ b/docs/technical-documentation/rest-authorization.md @@ -21,7 +21,7 @@ curl -u admin:islandora http://localhost:8000/node/3 ### JWT authentication (jwt_auth) -By default JWTs are passed internally from Drupal to various microservices and Fedora. +By default JWTs are passed internally from Drupal to various microservices and Fedora. To use a JWT yourself you need to enable the `JWT Authentication Issuer` module. @@ -41,7 +41,7 @@ Content-language: en X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Expires: Sun, 19 Nov 1978 05:00:00 GMT -Vary: +Vary: X-Generator: Drupal 8 (https://www.drupal.org) Content-Length: 620 Content-Type: application/json @@ -79,7 +79,7 @@ Content-language: en X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Expires: Sun, 19 Nov 1978 05:00:00 GMT -Vary: +Vary: X-Generator: Drupal 8 (https://www.drupal.org) Content-Length: 858 Content-Type: application/ld+json @@ -140,5 +140,3 @@ Content-Type: application/ld+json This allows you to use a cookie stored in your web browser when you log in to Drupal to access these REST endpoint pages. This is what allows you to access the URIs like `http://localhost:8000/node/1?_format=json` with your web browser. - - diff --git a/docs/technical-documentation/rest-create.md b/docs/technical-documentation/rest-create.md index 00d8a27a5..ee610db8a 100644 --- a/docs/technical-documentation/rest-create.md +++ b/docs/technical-documentation/rest-create.md @@ -200,4 +200,3 @@ The parts of the above request are: 1. `--data-binary "@my-image.png"` - send the contents of the file located at my-image.png as binary 1. `-H"Content-Location: public://images/my-image.png"` - store the file in the public scheme (ie. in Drupal) at the path `images/my-image.png`, to store the file in Fedora use the `fedora//` scheme (ie. fedora://images/my-image.png) 1. `'http://localhost:8000/node/3/media/image/16'` - the endpoint of the request specifying the node, media type and taxonomy term. - diff --git a/docs/technical-documentation/rest-delete.md b/docs/technical-documentation/rest-delete.md index 7b17b6c72..454c3e3e6 100644 --- a/docs/technical-documentation/rest-delete.md +++ b/docs/technical-documentation/rest-delete.md @@ -1,4 +1,4 @@ -# Removing resources, media and files - DELETE Requests +# Removing resources, media and files - DELETE Requests Deleting is as easy as [getting](./rest-get.md) resources and more difficult than [creating](./rest-create.md) resources. @@ -48,7 +48,7 @@ Content-language: en X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Expires: Sun, 19 Nov 1978 05:00:00 GMT -Vary: +Vary: X-Generator: Drupal 8 (https://www.drupal.org) Content-Length: 1564 Content-Type: application/json @@ -71,7 +71,7 @@ Content-language: en X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Expires: Sun, 19 Nov 1978 05:00:00 GMT -Vary: +Vary: X-Generator: Drupal 8 (https://www.drupal.org) Content-Type: text/html; charset=UTF-8 ``` @@ -91,7 +91,7 @@ Content-language: en X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Expires: Sun, 19 Nov 1978 05:00:00 GMT -Vary: +Vary: X-Generator: Drupal 8 (https://www.drupal.org) Content-Length: 149 Content-Type: application/json @@ -108,7 +108,7 @@ A delete is simply the same request as a `GET` but sending a `DELETE` http verb. With a media id of 1 for our example, I'll perform a `GET` ``` -> curl -i -u admin:islandora -X GET 'http://localhost:8000/media/1?_format=json' +> curl -i -u admin:islandora -X GET 'http://localhost:8000/media/1?_format=json' HTTP/1.1 200 OK Date: Fri, 15 Mar 2019 14:53:54 GMT @@ -134,7 +134,7 @@ Content-language: en X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Expires: Sun, 19 Nov 1978 05:00:00 GMT -Vary: +Vary: X-Generator: Drupal 8 (https://www.drupal.org) Content-Length: 1937 Content-Type: application/json @@ -157,7 +157,7 @@ Content-language: en X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Expires: Sun, 19 Nov 1978 05:00:00 GMT -Vary: +Vary: X-Generator: Drupal 8 (https://www.drupal.org) Content-Type: text/html; charset=UTF-8 ``` @@ -177,7 +177,7 @@ Content-language: en X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Expires: Sun, 19 Nov 1978 05:00:00 GMT -Vary: +Vary: X-Generator: Drupal 8 (https://www.drupal.org) Content-Length: 153 Content-Type: application/json @@ -207,7 +207,7 @@ Content-language: en X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Expires: Sun, 19 Nov 1978 05:00:00 GMT -Vary: +Vary: X-Generator: Drupal 8 (https://www.drupal.org) Content-Length: 617 Content-Type: application/json @@ -230,7 +230,7 @@ Content-language: en X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Expires: Sun, 19 Nov 1978 05:00:00 GMT -Vary: +Vary: X-Generator: Drupal 8 (https://www.drupal.org) Content-Type: text/html; charset=UTF-8 ``` @@ -250,7 +250,7 @@ Content-language: en X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Expires: Sun, 19 Nov 1978 05:00:00 GMT -Vary: +Vary: X-Generator: Drupal 8 (https://www.drupal.org) Content-Length: 157 Content-Type: application/json diff --git a/docs/technical-documentation/rest-get.md b/docs/technical-documentation/rest-get.md index c4952e6f8..419f4f37e 100644 --- a/docs/technical-documentation/rest-get.md +++ b/docs/technical-documentation/rest-get.md @@ -1,4 +1,4 @@ -# Getting resources, media and files - GET Requests +# Getting resources, media and files - GET Requests * [Authorization](#authorization) * [Content](#content-nodes) @@ -17,7 +17,7 @@ These are defined under [Authorization](./using-rest-endpoints.md#authorization) The above setup shows that you can perform a GET request against a node at the `/node/{id}` endpoint. This is the same as the URL when viewed through a web browser. For example `http://localhost:8000/node/2` -It also defines the _formats_ you can access. In this example _json_ and _jsonld_ are available. +It also defines the _formats_ you can access. In this example _json_ and _jsonld_ are available. To access a resource in a specific format use the `_format=` argument which is appended to the end of the URI after a `?`. @@ -53,7 +53,7 @@ Content-language: en X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Expires: Sun, 19 Nov 1978 05:00:00 GMT -Vary: +Vary: X-Generator: Drupal 8 (https://www.drupal.org) X-Drupal-Cache: MISS Content-Length: 1521 @@ -199,7 +199,7 @@ The above steps are the same for media, it is just the URI that has changed. For media you use `/media/{id}` -🍎 For example: +🍎 For example: ``` curl -u admin:islandora http://localhost:8000/media/2?_format=json @@ -368,7 +368,7 @@ The file ID refers to the integer counter and _not_ the UUID of a file. Through the UI you can go to the File listing at `http://localhost:8000/admin/content/files`. -For the file you want to access, choose the **USED IN** link. +For the file you want to access, choose the **USED IN** link. That URI has the format `http://localhost:8000/admin/content/files/usage/{file id}` @@ -414,7 +414,7 @@ Content-language: en X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Expires: Sun, 19 Nov 1978 05:00:00 GMT -Vary: +Vary: X-Generator: Drupal 8 (https://www.drupal.org) X-Drupal-Cache: HIT Content-Length: 634 diff --git a/docs/technical-documentation/rest-patch.md b/docs/technical-documentation/rest-patch.md index e38f8cfa3..50f55b4a2 100644 --- a/docs/technical-documentation/rest-patch.md +++ b/docs/technical-documentation/rest-patch.md @@ -39,7 +39,7 @@ Content-language: en X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Expires: Sun, 19 Nov 1978 05:00:00 GMT -Vary: +Vary: X-Generator: Drupal 8 (https://www.drupal.org) Content-Length: 1562 Content-Type: application/json @@ -66,7 +66,7 @@ Content-language: en X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Expires: Sun, 19 Nov 1978 05:00:00 GMT -Vary: +Vary: X-Generator: Drupal 8 (https://www.drupal.org) Content-Length: 1562 Content-Type: application/json @@ -91,10 +91,10 @@ Content-language: en X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Expires: Sun, 19 Nov 1978 05:00:00 GMT -Vary: +Vary: X-Generator: Drupal 8 (https://www.drupal.org) Content-Length: 1669 Content-Type: application/json {"nid":[{"value":3}],"uuid":[{"value":"3f618cdc-3f2a-4e77-b932-9ff1d461a57a"}],"vid":[{"value":4}],"langcode":[{"value":"en"}],"type":[{"target_id":"islandora_object","target_type":"node_type","target_uuid":"62189bec-3ef3-4196-b847-b17e5ce61fd5"}],"revision_timestamp":[{"value":"2019-03-11T17:36:10+00:00","format":"Y-m-d\\TH:i:sP"}],"revision_uid":[{"target_id":1,"target_type":"user","target_uuid":"46a47057-de2d-4ce2-87ae-dbe4551209b8","url":"\/user\/1"}],"revision_log":[],"status":[{"value":true}],"title":[{"value":"Updated with a PATCH request"}],"uid":[{"target_id":1,"target_type":"user","target_uuid":"46a47057-de2d-4ce2-87ae-dbe4551209b8","url":"\/user\/1"}],"created":[{"value":"2019-03-05T18:07:00+00:00","format":"Y-m-d\\TH:i:sP"}],"changed":[{"value":"2019-03-11T18:01:40+00:00","format":"Y-m-d\\TH:i:sP"}],"promote":[{"value":true}],"sticky":[{"value":false}],"default_langcode":[{"value":true}],"revision_translation_affected":[{"value":true}],"content_translation_source":[{"value":"und"}],"content_translation_outdated":[{"value":false}],"field_access_terms":[],"field_alternative_title":[],"field_description":[],"field_display_hints":[],"field_edtf_date":[],"field_edtf_date_created":[],"field_edtf_date_issued":[],"field_extent":[{"value":"1 item"}],"field_identifier":[],"field_linked_agent":[],"field_member_of":[{"target_id":2,"target_type":"node","target_uuid":"413135a6-0bd1-4d6b-8bcb-059cf7784d83","url":"\/node\/2"}],"field_model":[{"target_id":22,"target_type":"taxonomy_term","target_uuid":"e1f167e1-124d-4db4-96ab-30641ca4e21b","url":"\/taxonomy\/term\/22"}],"field_pid":[],"field_resource_type":[],"field_rights":[],"field_subject":[]} -``` \ No newline at end of file +``` diff --git a/docs/technical-documentation/rest-signposting.md b/docs/technical-documentation/rest-signposting.md index a1bf942a9..f05d41c8d 100644 --- a/docs/technical-documentation/rest-signposting.md +++ b/docs/technical-documentation/rest-signposting.md @@ -5,7 +5,7 @@ Signposting is a technique used in RESTful APIs where other relevant resources a https://tools.ietf.org/html/rfc8288). Drupal already makes use of this technique for content entities, and Islandora takes it even further by providing additional `Link` headers that enable the client to navigate the repository and discover additional information about various resources. Because the links are returned in response headers, they can be relied upon -without having to parse the message body. This makes them consistent across all serialization formats that can be returned in a message body +without having to parse the message body. This makes them consistent across all serialization formats that can be returned in a message body (XML, JSON, JSONLD, etc...). As a general precaution, link headers for Drupal entities are not exposed to users that do not have the permissions to view @@ -25,24 +25,24 @@ if an entity in Drupal has a JSONLD representation, then the link header returne ### Referenced Entities 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 +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: ; rel="related"; title="Associated Content"` ### Referenced Taxonomy Terms -Entity reference fields for taxonomy terms get special handling. 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 +Entity reference fields for taxonomy terms get special handling. 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: ; rel="tag"; title="Example Term"` If instead the term were to have the `field_external_uri` field with a value of `http://exampletwo.org/vocab#term` then the link -header would look like +header would look like -`Link: ; rel="tag"; title="Example Term"`. +`Link: ; rel="tag"; title="Example Term"`. ### Associated Media @@ -55,7 +55,7 @@ that it is the initial file uploaded, the link header returned in a GET or HEAD ### Source Files 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 +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 @@ -66,7 +66,7 @@ both ### Requesting a Node -After creating a node, adding it to a Collection, uploading a file and kicking off derivatives, the link headers returned +After creating a node, adding it to a Collection, uploading a file and kicking off derivatives, the link headers returned for said node would look like the following. Note that non-Link headers have been removed for brevity: ```bash @@ -96,7 +96,7 @@ If we were to inspect one of the Media associated with this node (which we would results would look like: ```bash -vagrant@claw:~$ curl -I http://localhost:8000/media/1?_format=json +vagrant@claw:~$ curl -I http://localhost:8000/media/1?_format=json HTTP/1.1 200 OK ... @@ -110,7 +110,7 @@ Link: ; rel="https://drupal.org/link Link: ; rel="edit-form" Link: ; rel="https://drupal.org/link-relations/revision" -# These are provided by Islandora +# These are provided by Islandora Link: ; rel="related"; title="Media of" Link: ; rel="tag"; title="Original File" Link: ; rel="alternate"; type="application/ld+json" diff --git a/docs/technical-documentation/running-automated-tests.md b/docs/technical-documentation/running-automated-tests.md index 921c58de5..390563548 100644 --- a/docs/technical-documentation/running-automated-tests.md +++ b/docs/technical-documentation/running-automated-tests.md @@ -1,5 +1,5 @@ # Running Automated Tests - + ## User Interface !!! warning @@ -9,8 +9,8 @@ ![Running tests from the user interface](../assets/tests_ui.png) -To run automated tests via a web browser, you can to Admin > Configuration > Testing -(http://localhost:8000/admin/config/development/testing) in the admin toolbar. From +To run automated tests via a web browser, you can to Admin > Configuration > Testing +(http://localhost:8000/admin/config/development/testing) in the admin toolbar. From there you can browse and search for tests, select the ones you'd like to run. Pressing the blue "Run Tests" button will execute all tests you've selected in a batch and then display the results. diff --git a/docs/technical-documentation/testing-notes.md b/docs/technical-documentation/testing-notes.md index 5f4cf0b5e..2579f100a 100644 --- a/docs/technical-documentation/testing-notes.md +++ b/docs/technical-documentation/testing-notes.md @@ -1,6 +1,6 @@ ## How to find things in Fedora? -For any Drupal URI, the corresponding Fedora URIs is computed by the [Crayfish Commons](https://github.com/Islandora/Crayfish-Commons/blob/2.x/src/EntityMapper/EntityMapper.php) library using the Drupal-assigned UUID. In Drupal, a "pseudo-field" is available that will display the corresponding Fedora URI on the page of a node, taxonomy term, or media object. The presence of this URI does NOT guarantee the existence of the corresponding entity in Fedora. +For any Drupal URI, the corresponding Fedora URIs is computed by the [Crayfish Commons](https://github.com/Islandora/Crayfish-Commons/blob/2.x/src/EntityMapper/EntityMapper.php) library using the Drupal-assigned UUID. In Drupal, a "pseudo-field" is available that will display the corresponding Fedora URI on the page of a node, taxonomy term, or media object. The presence of this URI does NOT guarantee the existence of the corresponding entity in Fedora. ### Enabling the Fedora URI Pseudo-field @@ -20,7 +20,7 @@ ss_search_api_id:"entity:node/4:en" ## Sample Triplestore queries * Go to `http://localhost:8080/bigdata/#query` -* Under namespaces (`http://localhost:8080/bigdata/#namespaces`), make sure `islandora` is selected. +* Under namespaces (`http://localhost:8080/bigdata/#namespaces`), make sure `islandora` is selected. ### Find all triples with given object as the subject ``` diff --git a/docs/technical-documentation/updating_drupal.md b/docs/technical-documentation/updating_drupal.md index 938327224..adea71ed2 100644 --- a/docs/technical-documentation/updating_drupal.md +++ b/docs/technical-documentation/updating_drupal.md @@ -43,7 +43,7 @@ If you want to know all packages that will be updated by the update command, use !!! note "Alternate syntax needed" Islandora is configured to use a fork of drupal-composer/drupal-project which requires a specific composer syntax used above compared to other Drupal 8 sites. In addition, if you are upgrading from 8.5 to 8.7, you need to replace "~8.5.x" with "^8.7.0" for drupal/core and webflo/drupal-core-require-dev in composer.json. [[Source](https://www.drupal.org/docs/8/update/update-core-via-composer#s-one-step-update-instruction)] -3) Apply any required database updates using ``drush updatedb``, or use the web admin user interface. +3) Apply any required database updates using ``drush updatedb``, or use the web admin user interface. `drush updatedb` @@ -62,6 +62,5 @@ For more information about how to update Drupal modules visit: https://www.drupal.org/docs/8/extending-drupal-8/updating-modules -!!! note "Back Up" +!!! note "Back Up" First make sure you have made database and file back ups. - diff --git a/docs/technical-documentation/using-rest-endpoints.md b/docs/technical-documentation/using-rest-endpoints.md index 6ad9be30e..8c89eead7 100644 --- a/docs/technical-documentation/using-rest-endpoints.md +++ b/docs/technical-documentation/using-rest-endpoints.md @@ -25,4 +25,3 @@ This screenshot shows the setup for resources, you can see the various HTTP meth ## Further Reading - [RESTful Web Services API overview](https://www.drupal.org/docs/drupal-apis/restful-web-services-api/restful-web-services-api-overview) - diff --git a/docs/technical-documentation/versioning.md b/docs/technical-documentation/versioning.md index 040014748..63241432e 100644 --- a/docs/technical-documentation/versioning.md +++ b/docs/technical-documentation/versioning.md @@ -43,5 +43,3 @@ Committers should now create (i.e. "tag") new versions of components when new bu ## Module Interdependencies When Islandora components require other Islandora components in their `composer.json` files, we prefer the version specification syntax `^2` to point to the latest-released compatible version within the specified major version. - - diff --git a/docs/tutorials/blocks.md b/docs/tutorials/blocks.md index 2c5902c9b..0088c5ae4 100644 --- a/docs/tutorials/blocks.md +++ b/docs/tutorials/blocks.md @@ -2,13 +2,13 @@ In Drupal, blocks are snippets of content that can be placed on pages within your website's layout. Some examples of blocks are your site's menu, breadcrumbs, search block, etc... You have a lot of control over when and where you see blocks using -Drupal's administrative interface. You can create and delete blocks, as well as move them around in different locations +Drupal's administrative interface. You can create and delete blocks, as well as move them around in different locations on the page (called 'regions' in Drupal theme terminology). You can also control on which pages the blocks are visible, allowing you to conditionally show/hide them as appropriate. Blocks are made available to place by enabling the Drupal modules that provide them, and there's lots out there to choose from. Placing blocks is an essential skill for any site -administrator, so let's jump right in and get our hands dirty. There are two methods discussed here: the "Block Layout" -interface, and using "Contexts". There is a third option, "[Display Suite](https://www.drupal.org/project/ds)," that is -not discussed here. +administrator, so let's jump right in and get our hands dirty. There are two methods discussed here: the "Block Layout" +interface, and using "Contexts". There is a third option, "[Display Suite](https://www.drupal.org/project/ds)," that is +not discussed here. ## Using Block Layout @@ -16,7 +16,7 @@ not discussed here. Using the admin toolbar, navigate to Admin > Structure > Block layout (admin/structure/block). You will see a table listing all of the available regions provided by the current theme for block placement. You can switch between available themes -using the tabs above the table. For each region, enabled blocks are listed and can be re-arranged. Take a look at the +using the tabs above the table. For each region, enabled blocks are listed and can be re-arranged. Take a look at the "Main Content" region for example. ![Main content region](../assets/blocks_main_content_region.png) @@ -65,7 +65,7 @@ But go to the frontpage and... ## Using Context The visibility conditions in the block placement user interface are simple and effective. They cover the majority of use cases, -however, there are times when you need even more control. This is where the Context module really shines. +however, there are times when you need even more control. This is where the Context module really shines. Any condition available to the Context module can be used to control block visibility. And you can even combine conditions using Boolean (AND/OR) logic. @@ -83,7 +83,7 @@ Click the "Configure" button on the "Collection" context. You can see in its "Condition" section, we have the "Node has term" condition, which checks for content tagged with the term provided by the user. In this case, it's set to look for the "Collection" tag. Underneath, in the "Reaction" section, you can see that the "Block" reaction has been selected, and its configuration looks a lot like the core block placement -UI. +UI. The only difference here is that when the "Include blocks from block layout" box is checked, you are only placing the blocks you want to add in addition to an already existing block layout. If you uncheck the box, you are creating an entirely new block layout from scratch, and will have to replace basic things like breadcrumbs and menus. diff --git a/docs/tutorials/create-a-resource-node.md b/docs/tutorials/create-a-resource-node.md index 39d55a58e..e73ef815f 100644 --- a/docs/tutorials/create-a-resource-node.md +++ b/docs/tutorials/create-a-resource-node.md @@ -1,7 +1,7 @@ ## Overview -This tutorial will walk you through adding a piece of digital content (an image and some metadata) into an Islandora repository, creating an Islandora [Resource Node](../user-documentation/resource-nodes.md). +This tutorial will walk you through adding a piece of digital content (an image and some metadata) into an Islandora repository, creating an Islandora [Resource Node](../user-documentation/resource-nodes.md). At the end, you will have metadata in a Drupal node, a file stored in Fedora, and derivatives automatically created. !!! Tip "Video version available" @@ -105,4 +105,3 @@ You now have an Islandora resource node, which is a special case of a Drupal nod - Drupal documentation on [Nodes](https://www.drupal.org/docs/7/nodes-content-types-and-fields/about-nodes) - Drupal documentation on [Media](https://www.drupal.org/docs/8/core/modules/media). - diff --git a/docs/tutorials/create_update_views.md b/docs/tutorials/create_update_views.md index bdd63032f..b5b1faf3b 100644 --- a/docs/tutorials/create_update_views.md +++ b/docs/tutorials/create_update_views.md @@ -17,44 +17,44 @@ Views are powerful content filters that enable you to present Islandora (and oth Islandora Defaults ships with some views already created and turned on. The Islandora home page displays content items that have been added to Islandora. This view is named _Frontpage_ and it lists items that meet the following _filter criteria_: - The item is in the _published_ state. -- The checkbox Promoted to front page is selected. +- The checkbox Promoted to front page is selected. -This view will display all content items added to Islandora, as the checkbox _Promoted to front page_ is on by default. +This view will display all content items added to Islandora, as the checkbox _Promoted to front page_ is on by default. As you develop your Islandora Web site it is likely that you will need to change the default behaviour of the _Frontpage_ View. As an example, the following describes how to edit the _Frontpage_ page view to only show content items and not collections. For this example, we added six collection items to Islandora. In total there are eight items in the repository. In addition to the six collection items, there is one audio item and one image item. -1. Using your Web browser, open the Islandora front page +1. Using your Web browser, open the Islandora front page 2. To edit the front page view, hover over the view (_Frontpage_ view) and select **Edit view** when displayed. - + ![Frontpage view](../assets/frontpage_view_all_eight.png) 3. Select **Add** under the _filter criteria_ section. - + ![Frontpage view add filter](../assets/frontpage_view_add_filter.png) 4. We do not want to display collections, so we need to add a _filter criteria_ that does not filter for the Islandora model type 'Collection' 1. Select _Model_ from the list and then **Apply (all displays**). - + ![Frontpage view filter select model](../assets/frontpage_view_add_filter_select_model.png) 2. Select _Islandora Model_ to select filters on Islandora model types and select **Apply and continue**. - + ![Frontpage view filter islandora model](../assets/frontpage_view_add_filter_select_model_islandora.png) 3. Select the operator _Is none of_ and the _Collection_ model (autocomplete should work here to help you). To finish click **Apply (all displays)**. - + ![Frontpage views filter collection](../assets/frontpage_view_add_filter_collection.png) 4. **Save** the view. Now the 'Frontpage' View does not display collections. - + ![Frontpage views no collections](../assets/frontpage_view_no_collections.png) - + ## How to create a new view - + For this example, we create a new view that only shows collections. It will be created as a [Block](https://www.drupal.org/docs/core-modules-and-themes/core-modules/block-module/managing-blocks) (also see the tutorial on [Configuring Blocks](../tutorials/blocks.md)) that will only display on the front page. We will add the new collection list block below the existing frontpage view that lists items. 1. Using your Web browser, open the Islandora front page 2. Navigate to **Administration** >> **Structure** >> **Views** 3. Create a new view by selecting **Add view** 4. Name the view and select **Create a block**. Give the block a title and decide how you want it to display (Grid, Table, List, Paging). To progress, select **Save and edit**. - + ![Frontpage view collection list information](../assets/frontpage_view_collection_list_info.png) 5. Customise the view format and sorting as required. 6. Add a _filter criteria_ to only show the Islandora model type of 'Collection' and **Save** the view. @@ -66,13 +66,13 @@ For this example, we create a new view that only shows collections. It will be c ![Frontpage view collection list place block](../assets/frontpage_view_collection_list_place_block.png) 2. Find the new block, 'Collection List' and select **Place block**. 3. Restrict the block to only display on the frontpage by adding the text '' to the _Page_ vertical tab. Then select **Save block**. - + ![Frontpage view collection list place block configure](../assets/frontpage_view_collection_list_place_block_configure.png) 4. Review the block placement and move if required. - + ![Frontpage view collection list block placement](../assets/frontpage_view_collection_list_block_placement.png) 8. The 'Collection list' now only displays on the front page. It displays below the _Main page content_. - + ![Frontpage view collection list](../assets/frontpage_view_collection_list.png) !!! Tip "Islandora Quick Lessons" diff --git a/docs/tutorials/how-to-create-collection.md b/docs/tutorials/how-to-create-collection.md index 61f4090e6..80e41354d 100644 --- a/docs/tutorials/how-to-create-collection.md +++ b/docs/tutorials/how-to-create-collection.md @@ -7,8 +7,8 @@ This how-to demonstrates creating a collection and adding items to it in Islando In Islandora Defaults, Collections that are tagged as "Collection" under System > Model will show a view of their member objects. A member is any object that is "member_of" that object, and can be added via the "Members" tab. This is the mechanism in Islandora Defaults; individual instances may vary. !!! Warning "Collections and Deleting" - Collections and their members are independent of each other, - and removing something from a collection does not delete it. + 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 @@ -29,7 +29,7 @@ Fill out the form. Near the end of the form, under System, select Collection from the Model dropdown list. -![Near end of form, under System, select collection](../assets/collections_system.jpg) +![Near end of form, under System, select collection](../assets/collections_system.jpg) Click Save when done. @@ -43,7 +43,7 @@ To populate a collection with existing items, return to any existing content and ![To populate a collection with existing items, return to any existing content and click on its Edit tab.](../assets/collections_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 +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/collections_member_of.jpg) diff --git a/docs/tutorials/switch_homepage_to_twig.md b/docs/tutorials/switch_homepage_to_twig.md index acd0a1c26..baf4b6db4 100644 --- a/docs/tutorials/switch_homepage_to_twig.md +++ b/docs/tutorials/switch_homepage_to_twig.md @@ -6,13 +6,13 @@ It's helpful to identify which TWIGs are available to use and where they're stor ![Screenshot from 2021-12-10 11-22-31](https://user-images.githubusercontent.com/2738244/145607034-967cc164-9d24-4f6d-aac7-9b3b93c87c4e.png) ```shell -# Copy the default service. +# Copy the default service. $ cp web/sites/default/default.services.yml web/sites/default/services.yml # fix permissions (just in case) $ chown nginx:nginx web/sites/default/services.yml -# I use nano to edit but you can pick whichever editor you want. +# I use nano to edit but you can pick whichever editor you want. # For this example we'll install the editor $ apk add nano @@ -24,14 +24,14 @@ twig.config: debug: true auto_reload: true cache: true - + # Now save and exit (in NANO it's CTRL + x) ``` For a video tutorial on this, see [Enabling Twig Debugging in Drupal 8/9](https://youtu.be/6WMr5V_LQ1w) ## Copying Templates -Copy the default TWIG into your theme's template directory. +Copy the default TWIG into your theme's template directory. ```shell $ cp web/themes/contrib/bootstrap/templates/node/node.html.twig web/themes/contrib/solid/templates/node--6--full.html.twig @@ -39,7 +39,7 @@ $ cp web/themes/contrib/bootstrap/templates/node/node.html.twig web/themes/contr # Clear cache $ drush cr ``` -And now if you view the home page's source code you should now see the the `X` next to the loaded TWIG file. Please note that the file name cooresponds to the node number. To use the URL alias instead of the node ID requires additional work. [Here](https://www.lehelmatyus.com/1064/drupal-8-page-template-suggestion-by-path-alias)'s a tutorial on this topic. +And now if you view the home page's source code you should now see the the `X` next to the loaded TWIG file. Please note that the file name cooresponds to the node number. To use the URL alias instead of the node ID requires additional work. [Here](https://www.lehelmatyus.com/1064/drupal-8-page-template-suggestion-by-path-alias)'s a tutorial on this topic. ```html + ### Expected behaviour for this scenario: @@ -32,7 +32,7 @@ Create a Repository Item, and tag it with "Open Seadragon" (under Display Hints) -### Components of this scenario: +### Components of this scenario: 1. A viewer that includes a field formatter (e.g. the module OpenSeadragon) 1. A media display mode (e.g. the media display mode "Open Seadragon") @@ -61,7 +61,7 @@ Create a Repository Item, and tag it with "Open Seadragon" (under Display Hints) ### Relevant files: -Islandora Defaults is a Feature, and the following YAML files in `islandora_defaults/config/install` contain configuration items that are loaded when the feature is enabled. Changes to these files will not affect the live site configuration, and changes to the live site configuration will not be reflected in these files. +Islandora Defaults is a Feature, and the following YAML files in `islandora_defaults/config/install` contain configuration items that are loaded when the feature is enabled. Changes to these files will not affect the live site configuration, and changes to the live site configuration will not be reflected in these files. | Filename | Comments| |---|---| @@ -80,8 +80,6 @@ Islandora Defaults is a Feature, and the following YAML files in `islandora_defa | `field.field.node.islandora_object.field_display_hints.yml` | (field for display hints) configures the display hints field on Repository Item | | `context.context.open_seadragon.yml` | (a context) tells nodes with term "Open Seadragon" to use display mode "Open Seadragon" | - ## Improvements This is awfully complex. If you'd like to help simplify it, we have an open issue about getting rid of display hints, and instead "sniffing' the file's mime type: [Deprecate display hints in favor of Contexts? #1193](https://github.com/Islandora/documentation/issues/1193). Other suggestions and solutions are welcome in the [issue queue](https://github.com/Islandora/documentation/issues). - diff --git a/docs/user-documentation/glossary.md b/docs/user-documentation/glossary.md index 4de555696..fe6d9bd68 100644 --- a/docs/user-documentation/glossary.md +++ b/docs/user-documentation/glossary.md @@ -1,8 +1,7 @@ - The following glossary of terms addresses an Islandora context. When comparing new Islandora and Fedora to older versions it may also be helpful to reference [the Islandora 7 Glossary](https://wiki.duraspace.org/display/ISLANDORA/APPENDIX+E+-+Glossary). ## Alpaca -Event-driven middleware based on [Apache Camel](http://camel.apache.org/) that handles communication between various components of Islandora, for instance synchronizing [Drupal](#drupal) data with a [Fedora](#fedora-repository-software) repository and the [Blazegraph](#blazegraph) triple store. +Event-driven middleware based on [Apache Camel](http://camel.apache.org/) that handles communication between various components of Islandora, for instance synchronizing [Drupal](#drupal) data with a [Fedora](#fedora-repository-software) repository and the [Blazegraph](#blazegraph) triple store. ## Ansible Open source software for provisioning, configuration management and application deployment. In the context of Islandora, Ansible can be used to install and maintain the Islandora software stack more conteniently and efficiently on a server or group of servers. The configuration and installation instructions are captured in a human-readable list of tasks, called 'Playbook'. The [Islandora Playbook](#islandora-playbook) for Ansible is one of the installation methods currently supported by the Islandora community. @@ -19,21 +18,21 @@ See Application Programming Interface Also API; a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. ## Blazegraph -Blazegraph is an open source triplestore and graph database. Islandora ships Blazegraph as part of the software stack. Metadata about [Resource nodes](#resource-node) is synchronized between the [Drupal](#drupal) database and Blazegraph. Data in the Blazegraph triple store can be queried using SPARQL. +Blazegraph is an open source triplestore and graph database. Islandora ships Blazegraph as part of the software stack. Metadata about [Resource nodes](#resource-node) is synchronized between the [Drupal](#drupal) database and Blazegraph. Data in the Blazegraph triple store can be queried using SPARQL. ## Checksum Checksums are a sequence of numbers and letters to check data for errors. If you know the checksum of an original file, you can use a checksum utility to confirm your copy is identical. Checksums can be used to check the [Fixity](#fixity) of a file. ## CLAW CLAW (CLAW Linked Asset WebDataFrameWork) was the development code name for the software released in June, 2019 as _Islandora 8_, now called _Islandora_. - + ## Collection A [collection](../concepts/collection.md) is a way of grouping related resources together, much like a directory on a computer. Collections can contain any number of related resource [Nodes](#node) and sub-collections. ## Content entity -[Drupal](#drupal) websites are made up of two types of entities: content entities and configuration (config) entities. Content entities include [Nodes](#node), [Media](#media), [Taxonomy terms](#taxonomy-term), users, comments, and files. Configuration entities include all stored settings, for instance [Views](#view), custom blocks, menus, or roles. +[Drupal](#drupal) websites are made up of two types of entities: content entities and configuration (config) entities. Content entities include [Nodes](#node), [Media](#media), [Taxonomy terms](#taxonomy-term), users, comments, and files. Configuration entities include all stored settings, for instance [Views](#view), custom blocks, menus, or roles. -Content entities are grouped into distinct [content entity types](#content-type), which play a specific functional role in a website application built with [Drupal](#drupal). Most 'things' in a [Drupal](#drupal) website are content entities. These include web content ([Nodes](#node), which can have subtypes like article, basic page, repository item, etc.), as well as users, comments, files, and [Taxonomy terms](#taxonomy-term). +Content entities are grouped into distinct [content entity types](#content-type), which play a specific functional role in a website application built with [Drupal](#drupal). Most 'things' in a [Drupal](#drupal) website are content entities. These include web content ([Nodes](#node), which can have subtypes like article, basic page, repository item, etc.), as well as users, comments, files, and [Taxonomy terms](#taxonomy-term). Each type of Content entity has a different set of behaviors. The interactions of these behaviors creates the site’s functionality. For example, a User may log into a site with a username and password that is stored as part of the content entity. If Users have the relevant permissions, they can write a blog post (a subtype of the [Node](#node) content entity type, with a specific data structure and behavior), and assign some tags ([Taxonomy terms](#taxonomy-term)) to the blog post. @@ -43,7 +42,7 @@ Each type of Content entity has a different set of behaviors. The interactions o Deprecated concept used in Islandora Legacy; see [Islandora Model](#islandora-model). ## Content type -A general type of Content in [Drupal](#drupal). A content type defines a set of data [fields](#field) and how they are displayed. Content types are sub-types of [Nodes](#node), one of the [Drupal](#drupal) [Content entities](#content-entity). The default [Drupal](#drupal) Content types are 'Article' and 'Basic page'. _Islandora Defaults_ adds 'Repository Item' as a Content type, defining metadata fields typically used to describe digital resources. +A general type of Content in [Drupal](#drupal). A content type defines a set of data [fields](#field) and how they are displayed. Content types are sub-types of [Nodes](#node), one of the [Drupal](#drupal) [Content entities](#content-entity). The default [Drupal](#drupal) Content types are 'Article' and 'Basic page'. _Islandora Defaults_ adds 'Repository Item' as a Content type, defining metadata fields typically used to describe digital resources. ## Crayfish A collection of Islandora [microservices](#microservice). Some of the microservices are built specifically for use with a [Fedora](#fedora-repository-software) repository, while others are just for general use within Islandora. @@ -55,28 +54,28 @@ Deprecated terminology, refers to how [Fedora 3](#fedora-repository-software)/Is A version of a file which is derived from an uploaded file. For example, a thumbnail generated from an uploaded image. Islandora uses [microservices](#microservice) to generate derivatives. ## Docker -[Docker](https://www.docker.com/) is a platform that use OS-level virtualization to deliver software in packages called containers. Islandora uses Docker as part of [ISLE](#isle), a suite of Docker containers that run the various components of Islandora required by Islandora Defaults. - -## Drupal +[Docker](https://www.docker.com/) is a platform that use OS-level virtualization to deliver software in packages called containers. Islandora uses Docker as part of [ISLE](#isle), a suite of Docker containers that run the various components of Islandora required by Islandora Defaults. + +## Drupal Drupal is an open source web content management system (CMS) written in PHP. Known for being extremely flexible and extensible, Drupal is supported by a community of over 630,000 users and developers. Drupal sites can be customized and themed in a wide variety of ways. ## Drupal Core The files, themes, profiles, and modules included with the standard project software download. - + ## Drupal Roles Roles are a way of assigning specific permissions to a group of users. Any user assigned to a role will have the same permissions as all other users assigned to that role. This allows you to control which users have permission to view, edit, or delete content in [Drupal](#drupal). Islandora provides a special role called _fedoraAdmin_ that is required to have actions in [Drupal](#drupal) reflected in [Fedora](#fedora-repository-software). - -## Entity -A [Drupal](#drupal) term for an item of either content or configuration data. Examples include [Nodes](#node) (content items), Blocks, [Taxonomy terms](#taxonomy-term), and definitions of [content types](#content-type); the first three are content entities, and the last is a configuration entity. In common usage, the term often refers to [Drupal](#drupal) content entities like [Nodes](#node) or [Taxonomy terms](#taxonomy-term). - + +## Entity +A [Drupal](#drupal) term for an item of either content or configuration data. Examples include [Nodes](#node) (content items), Blocks, [Taxonomy terms](#taxonomy-term), and definitions of [content types](#content-type); the first three are content entities, and the last is a configuration entity. In common usage, the term often refers to [Drupal](#drupal) content entities like [Nodes](#node) or [Taxonomy terms](#taxonomy-term). + ## Fedora (Repository Software) -Fedora is a digital asset management architecture upon which institutional repositories, digital archives, and digital library systems might be built. Fedora is the underlying architecture for a digital repository, and is not a complete management, indexing, discovery, and delivery application. - +Fedora is a digital asset management architecture upon which institutional repositories, digital archives, and digital library systems might be built. Fedora is the underlying architecture for a digital repository, and is not a complete management, indexing, discovery, and delivery application. + The Fedora repository functions as the standard _smart storage_ for Islandora. - + ## Field -Data of a certain type that is attached to a content entity. For instance, on a Resource Node [content type](#content-type), you might have fields for a title, description, display hints, subjects, and other metadata. - +Data of a certain type that is attached to a content entity. For instance, on a Resource Node [content type](#content-type), you might have fields for a title, description, display hints, subjects, and other metadata. + ## Field instance ## Field type @@ -95,10 +94,10 @@ Acronym for "galleries, libraries, archives, and museums". ## IIIF The [International Image Interoperability Framework](https://iiif.io/). A set of open standards that help archives, libraries, and museums make the most of their digitized collections with deep zoom, annotation capabilities, and more, and also the community of users and developers that suport the framework. - + ## Ingest To ingest an object is to add an entry for it in Islandora. This can be done through the [Drupal](#drupal) graphical user interface or one of the Drupal [APIs](#api) ([REST](https://www.drupal.org/docs/drupal-apis/restful-web-services-api/restful-web-services-api-overview), [Migrate API](https://www.drupal.org/docs/drupal-apis/migrate-api/migrate-api-overview)). The third-party contributed software [Islandora Workbench](https://github.com/mjordan/islandora_workbench) uses the Drupal REST API for convenient bulk ingest. - + In the context of digital repositories, ingest refers to the process by which the repository software imports and subsequently processes an object, creating derivatives automatically, and running any other processing that is configured to occur when an object is added. This would be distinguished by software which simply stores objects after import (with or without associated files) and performs no processing. The Islandora GUI and the documentation sometimes use other terms such as 'import' or 'add resource node'. In such contexts, these terms generally refer to the ingest process. ## Islandora model @@ -110,16 +109,16 @@ A set of human-readable [YAML](#yaml) files, containing instructions for automat ISLE, or ISLandora Enterprise, is a community initiative to ease the installation and maintenance of Islandora by using [Docker](#docker). ISLE is one of the installation methods currently supported by the Islandora community. ## JSON-LD -[JSON-LD (JavaScript Object Notation for Linked Data)](https://json-ld.org/) is a method of encoding [linked data](#linked-data) using JSON. +[JSON-LD (JavaScript Object Notation for Linked Data)](https://json-ld.org/) is a method of encoding [linked data](#linked-data) using JSON. ## Linked data In computing, linked data is structured data which is interlinked with other data so it becomes more useful through semantic queries. Linked data typically employs the [Resource Description Framework](#resource-description-framework) for data modelling. -## Matomo +## Matomo [Matomo](https://matomo.org/), formerly called Piwik, is a software for tracking visits to websites. It is an open source alternative to Google Analytics and allows the generation of website usage reports. ## Media -Media are a [Drupal](#drupal) [Content entity](#content-entity) type, which allows to manage Media items (Files) like images, documents, slideshows, YouTube videos, tweets, Instagram photos, etc. The Media module provides a unified User Interface where editors and administrators can upload, manage, and reuse files and multimedia assets. In the context of Islandora, Media entities 'wrap' files and provide a place to store file-specific metadata. +Media are a [Drupal](#drupal) [Content entity](#content-entity) type, which allows to manage Media items (Files) like images, documents, slideshows, YouTube videos, tweets, Instagram photos, etc. The Media module provides a unified User Interface where editors and administrators can upload, manage, and reuse files and multimedia assets. In the context of Islandora, Media entities 'wrap' files and provide a place to store file-specific metadata. See https://www.drupal.org/docs/8/core/modules/media/overview for more information on the Drupal foundations, and refer to https://islandora.github.io/documentation/user-documentation/media/ for how Islandora uses Media. @@ -128,10 +127,10 @@ Protocol specification that allows a web client to request an earlier/historic s ## Microservice A software development technique — a variant of the service-oriented architecture (SOA) structural style — that arranges an application as a collection of loosely coupled services. In a microservices architecture, services are fine-grained and the protocols are lightweight. - + ## Module -Software (usually PHP, JavaScript, and/or CSS) that extends site features and adds functionality. [Drupal](#drupal) modules conform to a specific structure allowing them to integrate with the [Drupal](#drupal) architecture. - +Software (usually PHP, JavaScript, and/or CSS) that extends site features and adds functionality. [Drupal](#drupal) modules conform to a specific structure allowing them to integrate with the [Drupal](#drupal) architecture. + ## Node A node is any piece of individual content, such as a page, article, forum topic, or a blog entry. All content on a [Drupal](#drupal) website is stored and treated as "Nodes". For information about Nodes specific to Islandora, see [Resource Node](#resource-node). @@ -142,7 +141,7 @@ The [Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH)](http:/ In computer science and information science, an ontology encompasses a representation, formal naming and definition of the categories, properties and relations between concepts, data and entities. In the narrower context of the [Resource Description Framework](#resource-description-framework) (RDF), an ontology is a formal, machine-readable description of the 'vocabulary' that can be used in a knowledge graph. An RDF ontology for instance specifies _classes_ of things or concepts (e.g. the class of all book authors) and _properties_ of classes/class instances (e.g. an author's name, birth date, shoe size; also the fact that an author has written something that is in the class of books). ## Open Source -Open source describes a method of software development that promotes access to the end product's source code. Islandora is an open source product with an active development community, operating under the [GPL license (2.0)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) for [Drupal](#drupal) components and the [MIT license](https://opensource.org/licenses/MIT) for non-[Drupal](#drupal) components. +Open source describes a method of software development that promotes access to the end product's source code. Islandora is an open source product with an active development community, operating under the [GPL license (2.0)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) for [Drupal](#drupal) components and the [MIT license](https://opensource.org/licenses/MIT) for non-[Drupal](#drupal) components. ## PR See [Pull request](#pull-request) @@ -160,38 +159,38 @@ See: [Resource Node](#resource-node) Also RDF; family of World Wide Web Consortium (W3C) specifications originally designed as a data model for metadata. It has come to be used as a general method for conceptual description or modeling of information that is implemented in web resources. The data is modelled as a set of statements, also known as triples. A collection of RDF statements intrinsically represents a directed graph. Data represented according to the RDF specifications can be serialized in different ways, for instance using [JSON-LD](#json-ld). ## Resource Node -A Resource node is a [Drupal](#drupal) [Node](#node) that represents a single conceptual item or object stored in an Islandora repository. It acts as a container for all files and metadata associated with that item, and is the place where the item 'lives' as a visitable URI. +A Resource node is a [Drupal](#drupal) [Node](#node) that represents a single conceptual item or object stored in an Islandora repository. It acts as a container for all files and metadata associated with that item, and is the place where the item 'lives' as a visitable URI. The term 'Resource node' is specific to Islandora. Typically, Resource nodes in an Islandora installation will use a specific [Content type](#content-type) for the digital assets stored in the repository. - -For example, a video stored in Islandora will have a Resource node, with metadata stored in [Fields](#field). Attached to the Resource node is a [Media](#media) entity, which encapsulates the preservation-grade file. The Resource node may be linked to further [Media](#media), for instance for a thumbnail, web-friendly derivative, and technical metadata associated with the resource node. The Resource node may also belong to one or more collections. + +For example, a video stored in Islandora will have a Resource node, with metadata stored in [Fields](#field). Attached to the Resource node is a [Media](#media) entity, which encapsulates the preservation-grade file. The Resource node may be linked to further [Media](#media), for instance for a thumbnail, web-friendly derivative, and technical metadata associated with the resource node. The Resource node may also belong to one or more collections. ## Taxonomy -[Drupal](#drupal) core module for managing vocabularies (lists) of [taxonomy terms](#taxonomy-term). [Drupal](#drupal) generally uses [terms contained in taxonomies or vocabularies](#taxonomy-term) to classify content (tag or category). +[Drupal](#drupal) core module for managing vocabularies (lists) of [taxonomy terms](#taxonomy-term). [Drupal](#drupal) generally uses [terms contained in taxonomies or vocabularies](#taxonomy-term) to classify content (tag or category). In Islandora, taxonomies are used to establish controlled vocabularies for describing resources, for instance for standardised spellings of names or subject terms. Vocabularies and [taxonomy terms](#taxonomy-term) are used in Islandora to establish locally controlled vocabularies for describing resources, for instance for standardised spellings of names or subject terms. - + ## Taxonomy term In the context of Islandora, a taxonomy term is a [Drupal](#drupal) [Content entity](#content-entity) of the type 'taxonomy terms'. Taxonomy terms are used in Islandora to establish locally controlled vocabularies for describing resources, for instance for standardised spellings of names or subject terms. - + ## Theme -Software and asset files (images, CSS, PHP code, and/or templates) that determine the style and layout of the site. The [Drupal](#drupal) project distinguishes between core and contributed themes. +Software and asset files (images, CSS, PHP code, and/or templates) that determine the style and layout of the site. The [Drupal](#drupal) project distinguishes between core and contributed themes. ## Vagrant [Vagrant](https://www.vagrantup.com/) is an open-source software product for building and maintaining portable virtual software development environments (virtual machines). The [Islandora Playbook](#islandora-playbook) includes a 'vagrantfile', a set of instructions that allows users to create a local virtual machine environment which will subsequently run [Ansible](#ansible) to execute the configuration and installation steps recorded in the [Islandora Playbook](#islandora-playbook). - + ## VBO See [Views Bulk Operations](#views-bulk-operations). -## View +## View Also: [Drupal](#drupal) View; a database query used to generate lists or tables of content. [Drupal](#drupal) provides a powerful administrator interface for creating and editing views without any coding. ## Viewer A Viewer is an add-on package that allows a solution pack to embed, display, or playback a particular object in a web accessible format. Viewers are typically a combination of a [Drupal](#drupal) Library and a [Drupal](#drupal) [Module](#module). The [Drupal](#drupal) Library is the package of code that represents the player or display mechanism, and the [Drupal](#drupal) [Module](#module) is the code package that allows the [Drupal](#drupal) Library to be accessed from within the [Drupal](#drupal) environment. ## Views Bulk Operations -Also VBO; a [Drupal](#drupal) [Module](#module) for performing bulk/batch operations on [Nodes](#node) selected by a [View](#view) definition. - +Also VBO; a [Drupal](#drupal) [Module](#module) for performing bulk/batch operations on [Nodes](#node) selected by a [View](#view) definition. + ## Virtual Machine Image The Virtual Machine Image allows you to mount a fully working version of Islandora on your local machine as a separate virtual machine. @@ -199,11 +198,11 @@ The Virtual Machine Image allows you to mount a fully working version of Islando A [Drupal](#drupal) configuration entity that holds taxonomy terms. The vocabulary defines what fields are available on each term. ## Weight -[Drupal](#drupal) field that stores an integer value on an entity, allowing to represent the relative order of the entity in relation to other entities of the same type or sub-type. Used by Islandora to store the order of components in compound objects, for instance pages in paged content items (books, serials). +[Drupal](#drupal) field that stores an integer value on an entity, allowing to represent the relative order of the entity in relation to other entities of the same type or sub-type. Used by Islandora to store the order of components in compound objects, for instance pages in paged content items (books, serials). ## YAML [YAML](https://yaml.org/) is a human-readable data-serialization language. It is commonly used for configuration files and in applications where data is being stored or transmitted. Software applications like [Drupal](#drupal) or [Ansible](#ansible) store configuration information in YAML files for easy transportability of a configuration. --- - + Some definitions adapted from [Wikipedia](https://en.wikipedia.org/) and [[Drupal](#drupal).org](https://www.[Drupal](#drupal).org/docs/user_guide/en/glossary.html) diff --git a/docs/user-documentation/iiif.md b/docs/user-documentation/iiif.md index a5347b911..51bb9402a 100644 --- a/docs/user-documentation/iiif.md +++ b/docs/user-documentation/iiif.md @@ -8,7 +8,7 @@ At a practial level, because Islandora supports several of the IIIF specificatio - Islandora uses an IIIF-compliant image server (by default, [Cantaloupe](https://cantaloupe-project.github.io/)) that utilizes the [IIIF Image API](https://iiif.io/api/image/2.1/). This capablity is similar to what Islandora 7.x users experience when they view a Large Image. - Display thumbnails for all pages of a book or newspaper issue within image viewers - IIIF-compliant image viewers such as OpenSeadragon or Mirador can display a "collection" of images such as all the pages of a book or newspaper issue using the [IIIF Presentation API](https://iiif.io/api/presentation/2.1/). For example, here is a screenshot of OpenSeadragon rendering all the pages of a book: - + ![OpenSeadragon rendering book pages](../assets/osd_collection_mode.png) ## Using IIIF in Islandora @@ -27,14 +27,14 @@ You can change how the paged content thumbnails are arranged in the OpenSeadrago 1. Click the "Save Configuration" button. 1. After the form is saved, navigate back down to the "Collection Mode" options and _uncheck_ the "Enable Collection Mode" checkbox. 1. Click the "Save Configuration" button. - + ## Looking under the hood (and beyond) - + If you want to see the raw output of the IIIF API implementations in Islandora, visit a node that is displaying the OpenSeadragon viewer (doesn't matter if its a single image or a paged content node like a book), and tack "manifest" onto the end of the URL, like `http://myrepo.org/node/23/manifest` and hit enter. You will see the raw JSON that IIIF-compliant viewers use to render the content. - + The really neat thing is, IIIF-compliant viewers don't need to be embedded in Islandora websites. If a viewer on another website knows the URL of a IIIF manifest like the ones that Islandora can produce, that viewer can display the content described in the manifest. Some implementations of IIIF viewers that show off the potential to combine content from multiple IIIF servers include: - + * [The Biblissima Project](http://demos.biblissima-condorcet.fr/mirador/) - brings together related content from different repositories. * [diva.js](https://ddmal.music.mcgill.ca/diva.js/try/iiif-external.html) - select a source from the drop-down list at the top. - + These two examples have nothing to do with Islandora, but illustrate the potential for IIIF to build tools that extend beyond a given repository platoform. diff --git a/docs/user-documentation/media.md b/docs/user-documentation/media.md index 9e1295234..775c290f3 100644 --- a/docs/user-documentation/media.md +++ b/docs/user-documentation/media.md @@ -5,11 +5,11 @@ size, width and height (for images), alt text (for images), creation date, and s !!! note "Compared to Islandora Legacy" In Islandora Legacy, this sort of technical metadata would have been stored as datastream properties or as additional metadata-specific datastreams. In Islandora, each datastream holds its technical metadata using an associated media entity. - + Fedora will store the media's file as a binary resource and use the media's properties as the binary resource's description. -For example, creating a media with a file named `test.jpg` (in November 2019) will create -a Fedora binary resource of the file accessible at `/fcrepo/rest/2019-11/test.jpg` +For example, creating a media with a file named `test.jpg` (in November 2019) will create +a Fedora binary resource of the file accessible at `/fcrepo/rest/2019-11/test.jpg` with the media's fields accessible at `/fcrepo/rest/2019-11/test.jpg/fcr:metadata`. ## Media types @@ -26,22 +26,20 @@ before updating its resource record. A message can be added to the revision whic ### Using the Media form to replace an existing file does not behave as expected. -The media edit form allows a user to remove a file and replace it with a new one. +The media edit form allows a user to remove a file and replace it with a new one. However, because of the relationship Islandora creates between a file and its media, the effects of removing a file and uploading a new one are not intuitive. -First, the _remove_ button removes the file's reference on the media but does not delete the file, which, if in Fedora, will remain in Fedora. +First, the _remove_ button removes the file's reference on the media but does not delete the file, which, if in Fedora, will remain in Fedora. Second, because Drupal does not want users to reuse a file path uploading a file, even with the same name in the same month, Drupal will rename the file for you. This will result in a new binary resource in Fedora, rather than replacing the existing resource, so the file's URI in Fedora will change -Third, the metadata synced from the Media into Fedora at [old Fedora URI]/fcr:metadata will remain in Fedora, but the metadata in the Media will also be synced into Fedora at [new Fedora URI]/fcr:metadata. There will be no way for the metadata in Fedora describing the file at the old Fedora URI to be edited. +Third, the metadata synced from the Media into Fedora at [old Fedora URI]/fcr:metadata will remain in Fedora, but the metadata in the Media will also be synced into Fedora at [new Fedora URI]/fcr:metadata. There will be no way for the metadata in Fedora describing the file at the old Fedora URI to be edited. !!! note "Removing Media with Actions" - To completely delete a file and its metadata from Fedora and Drupal, run the "Delete media and file(s) action" after selecting the Media in the general media list (/admin/content/media). This will cause the paths to the file and its metadata in Fedora to return 404s. + To completely delete a file and its metadata from Fedora and Drupal, run the "Delete media and file(s) action" after selecting the Media in the general media list (/admin/content/media). This will cause the paths to the file and its metadata in Fedora to return 404s. !!! note "Replacing Media via REST" It is possible to use [Islandora's REST interface](../technical-documentation/using-rest-endpoints.md) to replace Media and Files. - - ## Media Ownership @@ -56,7 +54,7 @@ Islandora objects can have any number of media associated with them. Media store Islandora 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 site administrators can create additional -terms, and in turn, these local terms can be used to identify media that have some custom local purpose. However, most of the +terms, and in turn, these local terms can be used to identify media that have some custom local purpose. However, most of the default set of "Media Use" terms are taken from the [PCDM Use Extension](https://pcdm.org/2015/05/12/use) vocabulary: ![Media tab](../assets/media_use_vocabulary_media_form.png) @@ -73,7 +71,7 @@ using Context. By default, derivatives are generated from Media with the "Original Files" term selected. 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... -By default, derivatives are created with a path determined by the current year, current month, the associated resource node' identifier +By default, derivatives are created with a path determined by the current year, current month, the associated resource node' identifier assigned by Drupal, and the type of derivative. For example, a resource node found at `node/2` with a service file media generated in October 2019 will have the path "2019-10/2-Service File.jpg". Naming conventions can be configured by editing each derivative action's _File path_ settings. @@ -89,13 +87,13 @@ For more information on how to configure derivatives, see the section on [Contex ## Multi-File Media -An alternate method of using Media to store files and derivatives is known as "multi-file" or multifile media. This method allows a single resource node to have multiple "Original Files" or "Preservation Masters". This method was implemented by [UPEI's Research Data Management project](https://islandora-rdm.researchspaces.ca/), to represent datasets that may include multiple important files that require equal preservation treatment and derivatives (such as a spreadsheet and accompanying data dictionary), while being described by a single set of descriptive metadata. +An alternate method of using Media to store files and derivatives is known as "multi-file" or multifile media. This method allows a single resource node to have multiple "Original Files" or "Preservation Masters". This method was implemented by [UPEI's Research Data Management project](https://islandora-rdm.researchspaces.ca/), to represent datasets that may include multiple important files that require equal preservation treatment and derivatives (such as a spreadsheet and accompanying data dictionary), while being described by a single set of descriptive metadata. There are no multi-file media bundles that currently ship with Islandora. The following recipe describes how to set up multi-file media: -1. On an existing or new Media bundle that already has a main storage field (e.g. field_media_image or field_media_audio_file), add additional fields to hold derivatives. They need to be "File"-type fields. The field names should indicate the "Media use". Set up as many as you need, for example, Thumbnail, Service File, Extracted text, etc. Note that the "Media Use" field is no longer relevant for multi-file media bundles, as a single media instance of this type contains all "Media Uses" (e.g. derivatives) in different fields. -2. Create a derivative Action that uses one of the two existing multi-file media base actions: "Generate a Derivative File For Media Attachment" or "Generate a Derivative Image For Media Attachment". This is where you configure which queue it goes to (which derivative-creating program runs), which field the resulting file ends up in, and potentially which additional arguments to pass to the microservice. +1. On an existing or new Media bundle that already has a main storage field (e.g. field_media_image or field_media_audio_file), add additional fields to hold derivatives. They need to be "File"-type fields. The field names should indicate the "Media use". Set up as many as you need, for example, Thumbnail, Service File, Extracted text, etc. Note that the "Media Use" field is no longer relevant for multi-file media bundles, as a single media instance of this type contains all "Media Uses" (e.g. derivatives) in different fields. +2. Create a derivative Action that uses one of the two existing multi-file media base actions: "Generate a Derivative File For Media Attachment" or "Generate a Derivative Image For Media Attachment". This is where you configure which queue it goes to (which derivative-creating program runs), which field the resulting file ends up in, and potentially which additional arguments to pass to the microservice. 3. Configure Contexts to trigger the Action to create derivatives. If using a combination of standard and multi-file media in your repository, ensure the Contexts include appropriate filtering Conditions. Add a Derivative reaction and select the Action you created in the previous step. -4. Configure your resource node to display its (potentially multiple) files as desired. This may involve creating a view of media attached to the current node, and displaying the Service File (or Thumbnail, etc) field of the media, then setting the view block to appear on the node page. +4. Configure your resource node to display its (potentially multiple) files as desired. This may involve creating a view of media attached to the current node, and displaying the Service File (or Thumbnail, etc) field of the media, then setting the view block to appear on the node page. -A video tutorial explaining how to configure multi-file Media is available under the following URL: [https://www.youtube.com/watch?v=3U6tBvD8oJY](https://www.youtube.com/watch?v=3U6tBvD8oJY) \ No newline at end of file +A video tutorial explaining how to configure multi-file Media is available under the following URL: [https://www.youtube.com/watch?v=3U6tBvD8oJY](https://www.youtube.com/watch?v=3U6tBvD8oJY) diff --git a/docs/user-documentation/multilingual.md b/docs/user-documentation/multilingual.md index f0136535b..9fda6e4de 100644 --- a/docs/user-documentation/multilingual.md +++ b/docs/user-documentation/multilingual.md @@ -21,7 +21,7 @@ You can place the language switcher block in different regions of the user inter ![Place language switcher block](../assets/multilingual-lang-switcher-location.jpg) ### Adding Multilingual Menus -From the top menu, go to Configuration >> Regional and language >> Content language and translation. Check `Custom menu link` under `Custom language settings`. Scroll down to `Custom menu link` section and check all the relevant fields and Save the configurations. Clear the cache (Configuration >> Development >> Performance). +From the top menu, go to Configuration >> Regional and language >> Content language and translation. Check `Custom menu link` under `Custom language settings`. Scroll down to `Custom menu link` section and check all the relevant fields and Save the configurations. Clear the cache (Configuration >> Development >> Performance). From the top menu, go to Structure >> Menu. Edit "Main navigation" menu. Default home menu item cannot be translated due to [this issue](https://www.drupal.org/project/drupal/issues/2838106). Disable that menu item. Click `Add link` to create a new menu item. Provide a menu title (i.e Home) and input `` for the link field. Save. Right click on the Operations beside the new menu link and click the Translate button. Translate the menu link title for the language added above and save. @@ -30,12 +30,12 @@ Go back to home. The language switcher will enable you to switch the language/co ### Adding a Multilingual Repository Item From the top menu, go to Content >> Add content >> Repository item. Provide the required fields and save the object. Click the _Translate_ tab of the object, provide a title in the second language and fill any translatable fields (i.e description). Add the media for the object. Media objects can be translated similar to the repository item node. -Go back to home, you should be able to view content in the language selected in the language switcher. +Go back to home, you should be able to view content in the language selected in the language switcher. ### Field Label Translations -If you need the field labels of the repository Item displayed in a different language, additional configuration is needed. The Drupal module `Configuration translation` module in the core needs to be enabled. Note that this will enable the module `User Interface translation` as well. +If you need the field labels of the repository Item displayed in a different language, additional configuration is needed. The Drupal module `Configuration translation` module in the core needs to be enabled. Note that this will enable the module `User Interface translation` as well. -Each field label needs to be translated through the Drupal GUI (Configuration >> Regional and Language: User interface translation). Alternatively, you can import existing translations, for instance from those provided at `https://github.com/Islandora/islandora_defaults/tree/8.x-1.x/translations`, or translations generated with an external translation editor (for example [Gtranslator](https://en.wikipedia.org/wiki/Gtranslator)). Go to `Interface translation import` (Configuration >> Regional and Language: User interface translation >> Import tab). Set the ` Treat imported strings as custom translations` option, select the import file, the target language, and click import. Clear the cache to see the changes. An example second language display is shown below. +Each field label needs to be translated through the Drupal GUI (Configuration >> Regional and Language: User interface translation). Alternatively, you can import existing translations, for instance from those provided at `https://github.com/Islandora/islandora_defaults/tree/8.x-1.x/translations`, or translations generated with an external translation editor (for example [Gtranslator](https://en.wikipedia.org/wiki/Gtranslator)). Go to `Interface translation import` (Configuration >> Regional and Language: User interface translation >> Import tab). Set the ` Treat imported strings as custom translations` option, select the import file, the target language, and click import. Clear the cache to see the changes. An example second language display is shown below. ![Multilingual Content Representation in Drupal](../assets/multilingual_repository_item_in_drupal.png) @@ -55,7 +55,7 @@ You can query the result and filter the results by a specific language. For exam PREFIX dcterm: select ?s ?o { ?s dcterm:title ?o -FILTER (lang(?o) = 'ta') +FILTER (lang(?o) = 'ta') } ``` ## Further Reading diff --git a/docs/user-documentation/oai.md b/docs/user-documentation/oai.md index 6b9b114e5..0ed2fc4ef 100644 --- a/docs/user-documentation/oai.md +++ b/docs/user-documentation/oai.md @@ -20,12 +20,12 @@ Enabling Islandora OAI-PMH provides: The rest_oai_pmh module indexes set membership, so repository items may not appear immediately in their respective sets. Indexing will happen automatically during cron runs but can be triggered manually at `/admin/config/services/rest/oai-pmh/queue`. ## OAI-DC Metadata Format/Metadata Mappings -By default, the mappings to OAI-DC are provided via the RDF mapping for the content type(s) output to OAI-PMH (e.g. rdf.mapping.node.islandora_object.yml). Any fields where the RDF predicate is not in the Dublin Core namespace are filtered out. +By default, the mappings to OAI-DC are provided via the RDF mapping for the content type(s) output to OAI-PMH (e.g. rdf.mapping.node.islandora_object.yml). Any fields where the RDF predicate is not in the Dublin Core namespace are filtered out. When you look at the [default OAI-PMH configuration](http://localhost:8000/admin/config/services/rest/oai-pmh), you will see that the "OAI Dublin Core (RDF Mapping)" is used to produce the oai_dc metadata format. This is not a separate RDF mapping, but refers to the RDF mapping(s) for content types output to OAI-PMH. !!! tip "Field values not showing up in OAI-DC record?" - If you want the value of a field to be emitted in the OAI-DC record, you must assign a Dublin Core predicate for that field in your content type's RDF mapping. If you are wondering why a field is not showing up in the OAI-DC record, the content type's RDF mapping is the first thing to check. + If you want the value of a field to be emitted in the OAI-DC record, you must assign a Dublin Core predicate for that field in your content type's RDF mapping. If you are wondering why a field is not showing up in the OAI-DC record, the content type's RDF mapping is the first thing to check. The OAI-DC metadata format is aided by the Islandora OAI-PMH module to include the RDF Mapping for the linked agent field (from Islandora Defaults). Including agent links in the OAI-PMH metadata currently requires updating the RDF mapping to include a Dublin Core predicate for that field or any other additional fields. @@ -34,8 +34,6 @@ The rest_oai_pmh module supports some alternate methods of defining mappings to ## Creating additional metadata formats This involves creating a new plugin. -The [Drupal rest_oai_pmh module's DefaultMap plugin](https://git.drupalcode.org/project/rest_oai_pmh/-/blob/2.0.x/src/Plugin/OaiMetadataMap/DefaultMap.php) provides a basic model to follow for creating a plugin. +The [Drupal rest_oai_pmh module's DefaultMap plugin](https://git.drupalcode.org/project/rest_oai_pmh/-/blob/2.0.x/src/Plugin/OaiMetadataMap/DefaultMap.php) provides a basic model to follow for creating a plugin. Exact implementation of your plugin will depend on your data model. The rest_oai_pmh module by default expects a flat list of fields and field values to output. This means that if your data model uses anything like Typed Relation field types, Paragraphs, or other complex nested entity modeling, you will need to add custom logic to build the values to emit via OAI-PMH for those fields. - - diff --git a/docs/user-documentation/objects_to_resource_nodes.md b/docs/user-documentation/objects_to_resource_nodes.md index 939021eb7..0dbf124be 100644 --- a/docs/user-documentation/objects_to_resource_nodes.md +++ b/docs/user-documentation/objects_to_resource_nodes.md @@ -12,7 +12,7 @@ In Islandora it is therefore helpful to think of objects as resource nodes. The The typical elements of a resource node: -- A content type defining metadata fields defined for the node. A content type may include any number of custom fields defined to store descriptive metadata about the object represented by the node. To function as an Islandora resource node, a content type must define two further fields: +- A content type defining metadata fields defined for the node. A content type may include any number of custom fields defined to store descriptive metadata about the object represented by the node. To function as an Islandora resource node, a content type must define two further fields: - A field denoting the 'type' of thing represented by the node (image, book, newspaper, etc.). The value of this field is used by Islandora to control views, derivative processing, and other behavior.[^1] - A field in which to record the node's [membership](resource-nodes.md#members) in another node. If populated, this field creates a hierarchical relationship between parent (the node recorded in the field) and child (the node in which the parent is recorded). This may be left empty, but is required for building hierarchies for collections, subcollections, and members of collections, as well as objects (books, "compound objects", etc.) consisting of [paged content](paged-content.md).[^2] - Media files (the actual files of JPEGs, MP3s, .zip, etc.) that get loaded through the form @@ -30,7 +30,7 @@ The following pages expand on the concepts discussed above: ### Copyright and Usage -This document was originally developed by [Alex Kent](https://github.com/alexkent0) and has been adapted for general use by the Islandora community. +This document was originally developed by [Alex Kent](https://github.com/alexkent0) and has been adapted for general use by the Islandora community. [![CC BY-NC 4.0](https://mirrors.creativecommons.org/presskit/buttons/88x31/svg/by-nc.svg)](https://creativecommons.org/licenses/by-nc/4.0/) diff --git a/docs/user-documentation/paged-content.md b/docs/user-documentation/paged-content.md index ed019188e..6a4deef7b 100644 --- a/docs/user-documentation/paged-content.md +++ b/docs/user-documentation/paged-content.md @@ -3,44 +3,44 @@ Paged content, books, periodicals, photographs with the front and back, etcetera This involves creating a resource node for the root record (e.g. the book or the photograph) and child resource nodes for each sub-component (e.g. "Page 1" and "Page 2" or "recto" and "verso") with their corresponding media. Each "child" resource node contains a reference to their "parent" resource node -using the `field_member_of` property. +using the `field_member_of` property. !!! Note "Child v. Member" Islandora uses the "child" and "member" descriptor for resource nodes that - store a reference to another resource node in the "Member Of" field interchangeably. - Administrators will more often see the "member" terminology more often while + store a reference to another resource node in the "Member Of" field interchangeably. + Administrators will more often see the "member" terminology more often while front-end users will usually see "child" terminology. Similar to the collection view showing members of a collection, Islandora provides an Islandora Model terms, _Paged Content_ and _Page_, that can be used to trigger paged -content behaviors. Islandora Defaults provides a Context for _Paged Content_ -resource nodes to trigger displaying an OpenSeadragon viewer showing the child +content behaviors. Islandora Defaults provides a Context for _Paged Content_ +resource nodes to trigger displaying an OpenSeadragon viewer showing the child resource nodes' service files. -To enable this, use the _Paged Content_ for the Islandora Model of the parent +To enable this, use the _Paged Content_ for the Islandora Model of the parent resource node and _Page_ for the Islandora Model of the child resource node. After the child resource nodes have services file Media (either generated via the built-in derivative -creation or added manually), they will be included in the OpenSeadragon paginated +creation or added manually), they will be included in the OpenSeadragon paginated viewer displayed on the parent resource node's page. (See the [IIIF Documentation](../user-documentation/iiif.md#using-iiif-in-islandora-8) for more details on controlling the viewer's behavior.) ![Screenshot of a Paged Content resource node displaying the OpenSeadragon viewer with the first child resource node displayed.](../assets/paged_content_openseadragon.png) -However, repository managers can use any method they like, such as a view-based +However, repository managers can use any method they like, such as a view-based list of teasers, a gallery, or a slide-show to display child resource nodes. By default child resource nodes are un-ordered. To order the sub-components of a -paged content resource node, Islandora provides a _Weight_ field to store a -integer value on child resource nodes. +paged content resource node, Islandora provides a _Weight_ field to store a +integer value on child resource nodes. Children resource nodes with smaller weight values will come before child resource nodes with larger weight values. This follows the usual ordering -pattern of `1` (smaller) coming before `2` (larger). +pattern of `1` (smaller) coming before `2` (larger). -Weight values do not need -to be sequential, just ordered from smallest to largest. For example, the first -child resource node can have a value of `10` and the next could have a value of -`20` and they will be ordered accordingly. Should a new child be added with the +Weight values do not need +to be sequential, just ordered from smallest to largest. For example, the first +child resource node can have a value of `10` and the next could have a value of +`20` and they will be ordered accordingly. Should a new child be added with the weight value of `15` it will automatically be sorted after the child with the weight value `10` and before the child with the weight value `20`. @@ -49,7 +49,7 @@ on the _Re-order Children_ button on the _Children_ tab of the parent resource n ![Re-order Children button](../assets/paged_content_reorder_children_button.png) -Re-ordering children resource nodes on this page and clicking _Save_ will cause +Re-ordering children resource nodes on this page and clicking _Save_ will cause each child resource node's weight value to be updated using sequential values. ![Re-order Children form](../assets/paged_content_reorder_children_form.png) @@ -60,12 +60,12 @@ each child resource node's weight value to be updated using sequential values. However, this module stores structure and pagination separately from the nodes making serializing these relationships as RDF we can provide to Fedora more difficult than simply using `field_member_of` with an RDF mapping. Support for the book module may be added in the future. - - Drupal also has a [weight module](https://www.drupal.org/project/weight) + + Drupal also has a [weight module](https://www.drupal.org/project/weight) that provides a weight field and a drag-and-drop - reordering user-interface. However, this module requires users to set a - specified range of values which includes their negative corresponding value. - E.g. a range setting of '20' will require all children to have a value between + reordering user-interface. However, this module requires users to set a + specified range of values which includes their negative corresponding value. + E.g. a range setting of '20' will require all children to have a value between '-20' to '20'. This presumes a repository manager can predict how many pages the largest paged content item in their repository will be beforehand. Also, these weight values are serialized into RDF using the Collections Ontology 'index' diff --git a/docs/user-documentation/recipes/alexa_search.md b/docs/user-documentation/recipes/alexa_search.md index a3b0735e2..5fd239c13 100644 --- a/docs/user-documentation/recipes/alexa_search.md +++ b/docs/user-documentation/recipes/alexa_search.md @@ -7,30 +7,30 @@ The following recipe details how to connect Islandora with Alexa, using custom A - Respond to user search queries (like how many objects match the subject in the repositories) - Answer specific questions about the object (“_Invocation Name_, when was this recorded?”) - Interact with other applications or modules (got a print ordering system? Want to add event calendar items to your exhibit?) -- Be accessed via web page, Alexa device, or phone app +- Be accessed via web page, Alexa device, or phone app !!! note "Note" This recipe has not been extensively tested. ## Ingredients -- Drupal 8 +- Drupal 8 - Islandora - Drupal Alexa Module - Islandora Oral Histories Module - Custom Alexa Skill -- Custom Search +- Custom Search ## Instructions -1. Create an Amazon Skill +1. Create an Amazon Skill 1. Log in https://developer.amazon.com go to Alexa > Skills Kit > add new skill - 1. Pick an _Invocation Name_ - 1. Configure SSL etc (Tutorial: https://www.drupal.org/docs/8/modules/alexa/tutorial) + 1. Pick an _Invocation Name_ + 1. Configure SSL etc (Tutorial: https://www.drupal.org/docs/8/modules/alexa/tutorial) 1. Save config, write down the Application ID on the Skill Information Tab! 1. Integrate with Drupal 1. Install the Alexa module using Composer: `composer require "drupal/alexa"` - 1. Enable modules (Alexa, Alexa_Demo) - 1. Go to Config > Alexa Configuration and put in the Application ID. + 1. Enable modules (Alexa, Alexa_Demo) + 1. Go to Config > Alexa Configuration and put in the Application ID. 1. Test with one question and answer (“Clawbster, say Hello world?” “Hello World!”) Now you can add as many questions and answers as you can configure: ![Screenshot of google form with questions and answers for chatbot](../../assets/recipe_alexa.png) diff --git a/docs/user-documentation/resource-nodes.md b/docs/user-documentation/resource-nodes.md index e62be12e7..09644d005 100644 --- a/docs/user-documentation/resource-nodes.md +++ b/docs/user-documentation/resource-nodes.md @@ -4,16 +4,16 @@ This page describes the Islandora concept of a Resource Node. For a step-by-step A resource node holds the descriptive metadata for an Islandora object, as well as groups together the various files that are part of the object for preservation or display, such as the original file - and various derivative files generated from it. + and various derivative files generated from it. The model for exactly what constitutes an object in Islandora is flexible and can be adapted to the needs of specific users. For example, the Islandora Defaults configuration considers an object as a resource node of the type "Repository Item" which contains descriptive metadata about the object. Attached to that Node are one or more Media, each representing a file that is part of this object, such as "Original File", "Thumbnail", "Preservation Master", etc. With this model, every original file uploaded into Islandora has its own resource node. Multi-file Media configurations also attach Media to a parent node, but allow for that node to be represened by multiple "Original File"s. In this model, a Media contains the original file as well as any derivative files created from it (thumbnail, service file, etc.). -For an example of where these two different approaches could apply, the basic configuration might make sense for a book that has rich page-level metadata, so that each page would be its own Node with its own metadata record; the multi-file media configuration might be a better fit for a book that does not have page-level metadata (except an ordering or page numbers), so that each Media would represent one page, and all pages (Media) would be attached to a single parent Node/metadata record for the entire book. +For an example of where these two different approaches could apply, the basic configuration might make sense for a book that has rich page-level metadata, so that each page would be its own Node with its own metadata record; the multi-file media configuration might be a better fit for a book that does not have page-level metadata (except an ordering or page numbers), so that each Media would represent one page, and all pages (Media) would be attached to a single parent Node/metadata record for the entire book. -As we learned in the [introduction](user-intro.md), objects in an Islandora repository are +As we learned in the [introduction](user-intro.md), objects in an Islandora repository are represented as a combination of resource nodes, media, and files 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 @@ -24,9 +24,9 @@ and effort when implementing your repository with Islandora. ## Properties -Resource nodes, as Drupal nodes, have some common basic properties regardless -of content type. These properties are not fields. This means that they -cannot be removed and have limited configurability. Their name, what type of +Resource nodes, as Drupal nodes, have some common basic properties regardless +of content type. These properties are not fields. This means that they +cannot be removed and have limited configurability. Their name, what type of data they hold, etc... are all baked in. Here's an example of the basic properties on nodes: @@ -64,7 +64,7 @@ status | Published, unpublished, etc... PID | uuid status | status -The small amount of configurability available for these properties is found on the +The small amount of configurability available for these properties is found on the content type editing form where a user can choose to change the label of the title field, whether or not to display author information on the node's page, etcetera. These settings will only apply to nodes of that particular content type. @@ -144,7 +144,7 @@ The node-level and global approaches are not exclusive to one another. One Conte ## Members Islandora has a notion of _membership_, which is used to create a parent/child relationship between -two resource nodes. Membership is denoted using another special field, "Member Of". +two resource nodes. Membership 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, but may also complicate the creation of breadcrumbs. Any two nodes can be related in this way, though typically, the parent node has a content @@ -157,8 +157,8 @@ model of [_Collection_](../concepts/collection.md) or [_Paged Content_](paged-co !!! Note "Child v. Member" Islandora uses the "child" and "member" descriptor for resource nodes that - store a reference to another resource node in the "Member Of" field interchangeably. - Administrators will more often see the "member" terminology more often while + store a reference to another resource node in the "Member Of" field interchangeably. + Administrators will more often see the "member" terminology more often while front-end users will usually see "child" terminology. For any node, its **Children** tab can be used to see all its members. You can also perform Actions in diff --git a/docs/user-documentation/searching.md b/docs/user-documentation/searching.md index c749f117f..7ed95e863 100644 --- a/docs/user-documentation/searching.md +++ b/docs/user-documentation/searching.md @@ -37,7 +37,7 @@ The _Edit_ tab allows repository managers to configure how the index works as a _Content_ (types) is the only data source enabled by default. Selecting _Taxonomy term_ will enable searching taxonomies which is recommended if the repository uses taxonomies for subjects or other discovery points. Once the data sources are enabled a configuration box for each of them will appear in a section just below the list of data sources. This allows repository managers to select which content types (or taxonomy vocabularies) will be included in the index. By default all the content types, and vocabularies if the taxonomy data source is enabled, are indexed. -!!! note "Defaults" +!!! note "Defaults" The defaults assume a repository is adding content using the web interface. If a repository manager plans on bulk-loading content they should disable the **Index items immediately** option in the expandable _Index Options_ box and increase the 'Cron batch size' option. #### Fields Tab @@ -60,10 +60,9 @@ The Search API SOLR module comes with a search page pre-configured (accessible a Repository managers may want to change the URL used to access the page, add it to the site navigation, or add a search box. In the 'Page Settings' box in the middle of the page, click on the existing path to open a shadow-box with an edit field. Change the URL as desired, for example, to 'search' and click **Apply**. Then, click the **No menu** link just below it to open the menu settings shadow-box. Selecting 'Normal menu entry' will allow a repository manager to add a menu link text, description, and place it within the site menu tree (the default, `
` works for most sites). A search box can be added by expanding the _Advanced_ options and changing the _Exposed form in block_ setting and then use the _Block Layout_ interface (found at '/admin/structure/block') to place the block where desired. After making changes to the View's settings, click the **Save** button to ensure the changes are not lost. -Islandora's Repository Items are displayed in the search results as a fully rendered entity by default. Repository managers can choose which view mode should be used for each search datasource by clicking the **Settings** link next to the _Show:_ setting under the _Format_ section of the search view configuration page (shown in a red box in the screenshot below). The _Teaser_ and _Search result highlighting input_ are the two most likely options. Alternatively, repository managers can select specific fields to display instead by clicking the **Rendered Entity** link and changing it to _Fields_ and then choosing which fields will be displayed in the _Fields_ section underneath. +Islandora's Repository Items are displayed in the search results as a fully rendered entity by default. Repository managers can choose which view mode should be used for each search datasource by clicking the **Settings** link next to the _Show:_ setting under the _Format_ section of the search view configuration page (shown in a red box in the screenshot below). The _Teaser_ and _Search result highlighting input_ are the two most likely options. Alternatively, repository managers can select specific fields to display instead by clicking the **Rendered Entity** link and changing it to _Fields_ and then choosing which fields will be displayed in the _Fields_ section underneath. -!!! note "Thumbnails" +!!! note "Thumbnails" thumbnails will not immediately be available using the _Fields_ display option without more advanced configurations. ![Screenshot of the default SOLR search view settings page with the format's type settings links highlighted. ](../assets/search-view-format-settings-highlighted.png) - diff --git a/docs/user-documentation/usage-stats.md b/docs/user-documentation/usage-stats.md index 160aa856d..811656600 100644 --- a/docs/user-documentation/usage-stats.md +++ b/docs/user-documentation/usage-stats.md @@ -1,6 +1,6 @@ Drupal 8 supports various web analytics integrations such as [google analytics](https://www.drupal.org/project/google_analytics) and [Matomo](https://www.drupal.org/project/matomo). For privacy reasons, Islandora integrates Matomo web analytics platforms by default. -The Matomo server is installed here: http://localhost:8000/matomo. The default configurations can be found in `http://localhost:8000/admin/config/system/matomo`. You can login to the Matomo server using username `admin` and password `islandora`. The dashboard will look like this: +The Matomo server is installed here: http://localhost:8000/matomo. The default configurations can be found in `http://localhost:8000/admin/config/system/matomo`. You can login to the Matomo server using username `admin` and password `islandora`. The dashboard will look like this: ![screenshot of Matomo dashboard](../assets/usage_stats_dashboard.jpg) diff --git a/docs/user-documentation/user-intro.md b/docs/user-documentation/user-intro.md index a4de9aef8..9c1d87aa0 100644 --- a/docs/user-documentation/user-intro.md +++ b/docs/user-documentation/user-intro.md @@ -11,12 +11,12 @@ The [Official Drupal User Guide](https://www.drupal.org/docs) and the ## Object Modeling -In Islandora, we often want to store (and manage, and preserve) sets of metadata with binaries (digital files). -We used to call this an "_object_" but in Islandora 2.0, are represented as multiple interconnected entities. +In Islandora, we often want to store (and manage, and preserve) sets of metadata with binaries (digital files). +We used to call this an "_object_" but in Islandora 2.0, are represented as multiple interconnected entities. - Metadata is stored in _nodes_ (a.k.a. _content_). - Specifically, metadata values are stored in _fields_ which are configurable properties attached to _nodes_. -- Different types of nodes can have different configurations of fields; these are called _content types_. +- Different types of nodes can have different configurations of fields; these are called _content types_. - Binary files are stored in are _media_, which are wrapper entities to help manage files. - Media can have fields too, and come in different _media types_. - Metadata values can be stored as _taxonomy terms_, which let you reuse the same value in multiple places. @@ -43,18 +43,15 @@ In Islandora repositories that use Fedora, all properties about Drupal nodes are ## Architecture - + ### Conceptual Diagram - + Many users of Islandora may be familiar with the metaphorical diagram of Islandora 7 as a cheeseburger, which provides a memorable approximation of how the different parts of the software stack interact in a vertically-integrated, relatively customizable fashion (ie, Drupal, Solr, Islandora, and Fedora are stable layers, and the "toppings" stand in for Solution Packs and other utilities that can be added or removed to customize Islandora): - + ![Islandora Leagcy as a cheeseburger](../assets/user-intro-islandoraburger.png) - -For a similar conceptual approach to Islandora, we present it as a bento box: a very modular platform, in which each piece may be removed and replaced with something different, without disrupting other parts of the stack: - -![Islandora as a bento box](../assets/user-intro-bento.png) - -For a true diagram of how the various parts of Islandora 2.0 interact, please see the full [Architecture Diagram](../technical-documentation/diagram.md) +For a similar conceptual approach to Islandora, we present it as a bento box: a very modular platform, in which each piece may be removed and replaced with something different, without disrupting other parts of the stack: +![Islandora as a bento box](../assets/user-intro-bento.png) +For a true diagram of how the various parts of Islandora interact, please see the full [Architecture Diagram](../technical-documentation/diagram.md) diff --git a/docs/user-documentation/users.md b/docs/user-documentation/users.md index 0675a2b00..8c1f9805c 100644 --- a/docs/user-documentation/users.md +++ b/docs/user-documentation/users.md @@ -6,7 +6,7 @@ Anyone who visits your Drupal site is a user. There are three different default - _Anonymous user_. This is anyone who is not logged in. - _Authenticated user_. These are all users who have an account on your site and can log in. -- _Administrator_. This is a special class of user that can access the administrative menus in your Drupal site and make changes. +- _Administrator_. This is a special class of user that can access the administrative menus in your Drupal site and make changes. Islandora adds an additional default role: @@ -67,4 +67,3 @@ To review/edit the permission for each role, in the *People* page click the **Pe For more information on managing users in Drupal visit the section [Managing User Accounts](https://www.drupal.org/docs/user_guide/en/user-chapter.html) of Drupal.org. - diff --git a/docs/user-documentation/versioning.md b/docs/user-documentation/versioning.md index 09b75277e..0c3a3f948 100644 --- a/docs/user-documentation/versioning.md +++ b/docs/user-documentation/versioning.md @@ -2,7 +2,7 @@ As a user of an Islandora repository, you may be wondering - Is this content being versioned? Could I restore from a previous version if I needed to? Can I see a list of versions for an object? The answer to these questions is two-fold, and largely yes. The architecture of Islandora provides users with a Drupal implementation and a Fedora implementation which are connected in Islandora. -!!! note "Islandora Software Versioning" +!!! note "Islandora Software Versioning" Looking for information about versions of Islandora itself? The latest Islandora follows [semantic versioning](https://semver.org/). Previously, Islandora's versions were tied to the version of Drupal and numbered in order of release, such as [Islandora 6.x-13.1](https://wiki.lyrasis.org/display/ISLANDORA6131/Islandora) or [Islandora 7.x-1.13](https://wiki.lyrasis.org/display/ISLANDORA/Start). [More information](../technical-documentation/versioning). ## Drupal Revisioning diff --git a/make-nav-tree.py b/make-nav-tree.py index e852171c6..0f6bf77c0 100755 --- a/make-nav-tree.py +++ b/make-nav-tree.py @@ -21,8 +21,6 @@ def expand_yaml_to_tree(data, tree, parent = None): tree = Tree() tree = expand_yaml_to_tree(top_level_item, tree) forest.append(tree) - -for tree in forest: - tree.show() - +for tree in forest: + tree.show() From e2ea357dd5144a3bdcbd0c8d24480d52b8cd5fdd Mon Sep 17 00:00:00 2001 From: Tom Misilo Date: Sun, 10 Apr 2022 18:12:52 -0500 Subject: [PATCH 10/18] Fix reference to Markdown --- docs/contributing/editing-docs.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/contributing/editing-docs.md b/docs/contributing/editing-docs.md index ee8bfc62f..dbac59c72 100644 --- a/docs/contributing/editing-docs.md +++ b/docs/contributing/editing-docs.md @@ -15,7 +15,7 @@ To edit documentation in Islandora, you must: - optionally, be a member of the Islandora [GitHub Organization](https://github.com/orgs/Islandora/people). - To request an invite, email community@islandora.ca or ask on the Islandora Slack. - This is only needed if you want to commit changes directly to the documentation. Non-members may still make pull requests. -- be willing to learn with [Markdown](http://en.wikipedia.org/wiki/Markdown) - a good [Markdown cheat sheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) can help. +- be willing to learn [Markdown](http://en.wikipedia.org/wiki/Markdown) - a good [Markdown cheat sheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) can help. - for example, you may use Markdown syntax to create links and section headings. - follow the [Islandora Documentation Style Guide](docs_style_guide.md). - have either an individual [Contributor License Agreement](https://github.com/Islandora/islandora/wiki/Contributor-License-Agreements) (CLA) on file with the Islandora Foundation, or work for an organization that has a corporate Contributor License Agreement on file with the Islandora Foundation. @@ -28,7 +28,7 @@ To edit documentation in Islandora, you must: ![Edit page button](../assets/editing-docs-button.png) -- You will be taken to GitHub. If you are not logged in, you will be prompted to log in or register for an account. If you are logged in, you will be taken to an in-browser editor where you will view the page in markdown. +- You will be taken to GitHub. If you are not logged in, you will be prompted to log in or register for an account. If you are logged in, you will be taken to an in-browser editor where you will view the page in Markdown. ![GitHub documentation GUI editor](../assets/editing-docs-gui.png) From 8f800ca20d5226447de3d6c21d031e2db1dcf8c7 Mon Sep 17 00:00:00 2001 From: Tom Misilo Date: Sun, 10 Apr 2022 18:24:25 -0500 Subject: [PATCH 11/18] Fix spelling of OpenSeadragon --- docs/contributing/releasing-islandora.md | 2 +- .../installation/manual/configuring_drupal.md | 4 +-- .../reference/islandora_defaults_reference.md | 10 +++---- docs/user-documentation/content_types.md | 2 +- docs/user-documentation/context.md | 4 +-- docs/user-documentation/file_viewers.md | 28 +++++++++---------- docs/user-documentation/iiif.md | 6 ++-- docs/user-documentation/resource-nodes.md | 2 +- 8 files changed, 29 insertions(+), 29 deletions(-) diff --git a/docs/contributing/releasing-islandora.md b/docs/contributing/releasing-islandora.md index c07428afa..84895a569 100644 --- a/docs/contributing/releasing-islandora.md +++ b/docs/contributing/releasing-islandora.md @@ -115,7 +115,7 @@ completed all the above steps and are absolutely certain the release is ready fo Release the `jsonld` module by creating a new release for it in Github. -### Release Openseadragon +### Release OpenSeadragon Release the `openseadragon` module by creating a new release for it in Github. diff --git a/docs/installation/manual/configuring_drupal.md b/docs/installation/manual/configuring_drupal.md index 6b414bcbc..c45044d71 100644 --- a/docs/installation/manual/configuring_drupal.md +++ b/docs/installation/manual/configuring_drupal.md @@ -133,9 +133,9 @@ Navigate to `/admin/config/islandora/iiif` to ensure that Islandora IIIF is poin ![Configuring Islandora IIIF](../../assets/configuring_iiif.png) -Next, configure Openseadragon by navigating to `/admin/config/media/openseadragon` and ensuring everything is set up properly. +Next, configure OpenSeadragon by navigating to `/admin/config/media/openseadragon` and ensuring everything is set up properly. -![Configuring Openseadragon](../../assets/configuring_openseadragon.png) +![Configuring OpenSeadragon](../../assets/configuring_openseadragon.png) ### Establishing Flysystem as the Default Download Method diff --git a/docs/reference/islandora_defaults_reference.md b/docs/reference/islandora_defaults_reference.md index d280deb37..533dbf0c0 100644 --- a/docs/reference/islandora_defaults_reference.md +++ b/docs/reference/islandora_defaults_reference.md @@ -54,10 +54,10 @@ The following new display modes are defined: | Type | View Mode | Comment | |---------|----------------|----------------------------------------------------------------------| | Content | Binary | | -| Content | Open Seadragon | | +| Content | OpenSeadragon | | | Content | PDFjs | | | Content | Teaser | This seems to be a re-definition of the built-in "Teaser" view mode. | -| Media | Open Seadragon | | +| Media | OpenSeadragon | | | Media | PDFjs | | @@ -165,9 +165,9 @@ The contexts provided by Islandora Defaults are organized into groups: **Indexin |---|---|---|---|---| | Binary (binary) | Binary Object Display |**Node has term with URI**: Binary (23)|**Change view mode**: Binary|See node.islandora_object.binary under Display Modes|| | Collection (collection) | Display block of children |**Node has term with URI**: Collection (24)|**Blocks**: "Members" placed in Content Suffix in Carapace|| -| Open Seadragon (open_seadragon) | Open Seadragon viewer for Images |**Node has term with URI**:Open Seadragon (2)|**Change view mode**: Open Seadragon |See node.islandora_object.open_seadragon under Display Modes|| +| OpenSeadragon (open_seadragon) | OpenSeadragon viewer for Images |**Node has term with URI**:OpenSeadragon (2)|**Change view mode**: OpenSeadragon |See node.islandora_object.open_seadragon under Display Modes|| | PDFjs Viewer (pdfjs) | Displays file using the PDFjs viewer |**Node has term with URI**: PDFjs (3)|**Change view mode:** PDFjs|See node.islandora_object.pdfjs under Display Modes| -| Paged Content - Openseadragon (openseadragon_block) | Display a block for Paged Content |**Node has term with URI:** Open Seadragon (2) AND Paged Content (28)|**Blocks** Openseadragon block placed in Main Content in Carapace|| +| Paged Content - OpenSeadragon (openseadragon_block) | Display a block for Paged Content |**Node has term with URI:** OpenSeadragon (2) AND Paged Content (28)|**Blocks** OpenSeadragon block placed in Main Content in Carapace|| ## Actions @@ -192,7 +192,7 @@ Contents of the islandora_defaults_tags migration: |Vocabulary|Term name|Description|External Uri| |---|---|---|---| -|islandora_display|"Open Seadragon"|"Display using the Open Seadragon viewer"|http://openseadragon.github.io| +|islandora_display|"OpenSeadragon"|"Display using the OpenSeadragon viewer"|http://openseadragon.github.io| |islandora_display|"PDFjs"|"Display using the PDF.js viewer"|http://mozilla.github.io/pdf.js| |resource_types|"Collection"|"An aggregation of resources"|http://purl.org/dc/dcmitype/Collection| |resource_types|"Dataset"|"Data encoded in a defined structure"|http://purl.org/dc/dcmitype/Dataset| diff --git a/docs/user-documentation/content_types.md b/docs/user-documentation/content_types.md index 8d827f769..d52144da4 100644 --- a/docs/user-documentation/content_types.md +++ b/docs/user-documentation/content_types.md @@ -28,7 +28,7 @@ There are multiple tabs with different options to configure your Content Type: - _Manage Fields_: A list of the fields available in this form. This is where you can add new fields and make adjustments to existing fields, such as whether the field has access restrictions or is required. - _Manage form display_: Set the order in which fields appear in a form, including nesting; set how the user will enter data into a field (i.e., text field, drop-down list, radio buttons, etc); set fields to be hidden in the form. -- _Manage display_: Set how the data stored in the fields will be displayed on the Node. Custom display settings can be set for different "view modes." For instance, a different view mode is applied for items using the Openseadragon viewer, which includes a field that displays the Media in Openseadragon instead of the standard Drupal image viewer. +- _Manage display_: Set how the data stored in the fields will be displayed on the Node. Custom display settings can be set for different "view modes." For instance, a different view mode is applied for items using the OpenSeadragon viewer, which includes a field that displays the Media in OpenSeadragon instead of the standard Drupal image viewer. !!! note "Changes not displaying?" If you make changes under _Manage display_ and don't see them reflected in your Node, double check that you have edited the right _view mode_ diff --git a/docs/user-documentation/context.md b/docs/user-documentation/context.md index ca3305356..d055148da 100644 --- a/docs/user-documentation/context.md +++ b/docs/user-documentation/context.md @@ -12,9 +12,9 @@ Let's look at the example of how Context can determine how an object is displaye ![Display Hints field in node edit form](../assets/resource_nodes_display_hints.png) - This functionality is accomplished via the "Open Seadragon" Context, which, as its configuration suggests, checks as its condition whether the node as the "Open Seadragon" tag and if so, reacts by using the view mode "Open Seadragon": + This functionality is accomplished via the "OpenSeadragon" Context, which, as its configuration suggests, checks as its condition whether the node as the "OpenSeadragon" tag and if so, reacts by using the view mode "OpenSeadragon": -![Open Seadragon Context configuration](../assets/context_openseadragon_configuration.png) +![OpenSeadragon Context configuration](../assets/context_openseadragon_configuration.png) ### Context and Actions diff --git a/docs/user-documentation/file_viewers.md b/docs/user-documentation/file_viewers.md index 042a67805..687a5b105 100644 --- a/docs/user-documentation/file_viewers.md +++ b/docs/user-documentation/file_viewers.md @@ -18,7 +18,7 @@ Both are included with Islandora Defaults. In the generic Islandora content modelling scenario, we often want the viewer to appear on a _"resource node"_ when the file itself is in a field on a Media that references that node. These layers of indirection make displaying viewers on nodes rather complex. -## Example - Open Seadragon (in Islandora Defaults) +## Example - OpenSeadragon (in Islandora Defaults) Here is how viewers are implemented in Islandora Defaults. This example uses OpenSeadragon, but pdf.js is configured with the same method. This method was chosen because it uses pure configuration and no extra code. It relies on users tagging nodes with appropriate "display hint" terms to trigger Contexts to switch the node's display mode to one that includes an EVA field, which renders the appropriate Media in a way that shows the desired file in the viewer. @@ -26,7 +26,7 @@ Here is how viewers are implemented in Islandora Defaults. This example uses Ope ### Expected behaviour for this scenario: -Create a Repository Item, and tag it with "Open Seadragon" (under Display Hints). Add a Media of type "File" to that node, upload a file such as a tiff or jpeg-2000, and tag it with "Original File" (under Media Use). Save and publish the Media. Go to the Repository Item's page, and you should see your file displayed in the viewer. +Create a Repository Item, and tag it with "OpenSeadragon" (under Display Hints). Add a Media of type "File" to that node, upload a file such as a tiff or jpeg-2000, and tag it with "Original File" (under Media Use). Save and publish the Media. Go to the Repository Item's page, and you should see your file displayed in the viewer. @@ -35,18 +35,18 @@ Create a Repository Item, and tag it with "Open Seadragon" (under Display Hints) ### Components of this scenario: 1. A viewer that includes a field formatter (e.g. the module OpenSeadragon) -1. A media display mode (e.g. the media display mode "Open Seadragon") +1. A media display mode (e.g. the media display mode "OpenSeadragon") 1. A media type (File, though Image is configured similarly) 1. A file field on that media type that can use that field formatter (e.g. field_media_file) 1. A field on that media type that points to a parent node (e.g. field_media_of) -1. Display Mode Configuration (make that display mode, on that media type, show only the file field rendered through that viewer's field formatter. e.g. see Media Types > File > Manage Display > Open Seadragon) +1. Display Mode Configuration (make that display mode, on that media type, show only the file field rendered through that viewer's field formatter. e.g. see Media Types > File > Manage Display > OpenSeadragon) 1. An EVA view (which shows a node's attached media as rendered by that Media display mode. e.g. the view "OpenSeadragon Media EVAs") -1. A content display mode (e.g. the node display mode called "Open Seadragon") +1. A content display mode (e.g. the node display mode called "OpenSeadragon") 1. A content type (e.g. Repository Item) -1. Display Mode Configuration (make that display mode, on that content type, display that EVA as well as whatever metadata is relevant - see Content Types > Repository Item > Manage Display > Open Seadragon ) -1. A taxonomy term with a URI (e.g. "Open Seadragon" (http://openseadragon.github.io) imported by a migration in Islandora Defaults) +1. Display Mode Configuration (make that display mode, on that content type, display that EVA as well as whatever metadata is relevant - see Content Types > Repository Item > Manage Display > OpenSeadragon ) +1. A taxonomy term with a URI (e.g. "OpenSeadragon" (http://openseadragon.github.io) imported by a migration in Islandora Defaults) 1. A field on that content type that can have that taxonomy term (e.g. the "Display Hints" field on Repository Item) -1. A context (which says if a node has that term, then change to the display mode. See the context "Open Seadragon") +1. A context (which says if a node has that term, then change to the display mode. See the context "OpenSeadragon") ### Logic: @@ -65,20 +65,20 @@ Islandora Defaults is a Feature, and the following YAML files in `islandora_defa | Filename | Comments| |---|---| -| `core.entity_view_mode.node.open_seadragon.yml` | (a media display mode) defines the Open Seadragon display mode as an option for any Media | +| `core.entity_view_mode.node.open_seadragon.yml` | (a media display mode) defines the OpenSeadragon display mode as an option for any Media | | `media.type.file.yml` | (a media type) define File media, or in this case, re-define an existing type provided by Core. This feature will override the core settings. | | `field.field.media.file.field_media_file.yml` | (a field that can use the viewer) Defines a file field on File media called field_media_file, or in this case, re-defines it because it was already part of core. Usually you need a field.storage too but it was already defined in core and is not overridden here. | | `field.field.media.file.field_media_of.yml` | (a field that points to a parent node) attach the the "Media Of" field to File media. In this case again, the field storage is not present because it was defined in Islandora Core Feature. | -| `core.entity_view_display.media.file.open_seadragon.yml` | (view mode configuration) configures the Open Seadragon display mode for File media, so it shows only the field_media_file using the Open Seadragon field formatter. | +| `core.entity_view_display.media.file.open_seadragon.yml` | (view mode configuration) configures the OpenSeadragon display mode for File media, so it shows only the field_media_file using the OpenSeadragon field formatter. | | `views.view.openseadragon_media_evas.yml` | (an EVA View) defines a view that shows a Media that is "Media Of" the current node (from URL) and is published and has "Media Use" = Original File. (there are two other EVAs defined by this view that use Preservation Master and Service File respectively.) | -| `core.entity_view_mode.node.open_seadragon.yml` | (a content display mode) defines the Open Seadragon display mode as an option for any Node | +| `core.entity_view_mode.node.open_seadragon.yml` | (a content display mode) defines the OpenSeadragon display mode as an option for any Node | | `node.type.islandora_object.yml` | (a content type) defines the Repository Item content type | -| `core.entity_view_display.node.islandora_object.open_seadragon.yml` | (view mode configuration) configures the Open Seadragon display mode for Repository Item, so it shows the Open Seadragon EVA for Original File as well as normal metadata | +| `core.entity_view_display.node.islandora_object.open_seadragon.yml` | (view mode configuration) configures the OpenSeadragon display mode for Repository Item, so it shows the Open Seadragon EVA for Original File as well as normal metadata | | `taxonomy.vocabulary.islandora_display.yml` | (taxonomy vocabulary) define a vocabulary to hold display hints | -| `migrate_plus.migration.islandora_defaults_tags.yml` | (migration) create a term in that vocabulary for "Open Seadragon." Taxonomy terms are "content" so must be entered through a migration. | +| `migrate_plus.migration.islandora_defaults_tags.yml` | (migration) create a term in that vocabulary for "OpenSeadragon." Taxonomy terms are "content" so must be entered through a migration. | | `field.storage.node.field_display_hints.yml` | (field storage for display hints) defines the display hints field as an option for any node | | `field.field.node.islandora_object.field_display_hints.yml` | (field for display hints) configures the display hints field on Repository Item | -| `context.context.open_seadragon.yml` | (a context) tells nodes with term "Open Seadragon" to use display mode "Open Seadragon" | +| `context.context.open_seadragon.yml` | (a context) tells nodes with term "OpenSeadragon" to use display mode "OpenSeadragon" | ## Improvements diff --git a/docs/user-documentation/iiif.md b/docs/user-documentation/iiif.md index 51bb9402a..3537181b6 100644 --- a/docs/user-documentation/iiif.md +++ b/docs/user-documentation/iiif.md @@ -13,15 +13,15 @@ At a practial level, because Islandora supports several of the IIIF specificatio ## Using IIIF in Islandora -Implementation of the IIIF Presentation API is new in Islandora, and using it is as simple as configuring a Context (in fact, you don't even need to configure it; the Context, Openseadragon Block, already exists by default). +Implementation of the IIIF Presentation API is new in Islandora, and using it is as simple as configuring a Context (in fact, you don't even need to configure it; the Context, OpenSeadragon Block, already exists by default). -To use this Context, all that is required is for your book or newspaper (or other paged content) to be given a model of "Paged Content" or "Publication Issue". Then, in the Openseadragon Block Context, make sure the term used in the "Node has term" condition (you can register more than one term there). Now, when you view a paged content Islandora object, you will see thumbnails of all of its child pages (assuming you have added some child pages to the object) in the OpenSeadragon viewer as illustrated above. +To use this Context, all that is required is for your book or newspaper (or other paged content) to be given a model of "Paged Content" or "Publication Issue". Then, in the OpenSeadragon Block Context, make sure the term used in the "Node has term" condition (you can register more than one term there). Now, when you view a paged content Islandora object, you will see thumbnails of all of its child pages (assuming you have added some child pages to the object) in the OpenSeadragon viewer as illustrated above. You can change how the paged content thumbnails are arranged in the OpenSeadragon viewport by doing the following: 1. Visit `admin/config/media/openseadragon` 1. Scroll to the bottom, where you will see the "Collection Mode" options. -1. The "Enable Collection Mode" checkbox will be unchecked. This is normal (unless you have already checked it). The Openseadragon Context automatically, and temporarily, puts OpenSeadragon in Collection mode when rendering a Paged Content object and then puts it back to Sequence mode (which is what mode it's in when the "Enable Collection Mode" checkbox is unchecked). _This means that in order for you to change options that apply to Collection Mode, you will need to check the "Enable Collection Mode" checkbox, change its options, save the form, then uncheck the "Enable Collection Mode" checkbox again._ Just follow these steps, and it will work! +1. The "Enable Collection Mode" checkbox will be unchecked. This is normal (unless you have already checked it). The OpenSeadragon Context automatically, and temporarily, puts OpenSeadragon in Collection mode when rendering a Paged Content object and then puts it back to Sequence mode (which is what mode it's in when the "Enable Collection Mode" checkbox is unchecked). _This means that in order for you to change options that apply to Collection Mode, you will need to check the "Enable Collection Mode" checkbox, change its options, save the form, then uncheck the "Enable Collection Mode" checkbox again._ Just follow these steps, and it will work! 1. Check the "Enable Collection Mode" checkbox. The Collection Mode options will appear. 1. Adjust the options to what you want. 1. Click the "Save Configuration" button. diff --git a/docs/user-documentation/resource-nodes.md b/docs/user-documentation/resource-nodes.md index 09644d005..a4be40861 100644 --- a/docs/user-documentation/resource-nodes.md +++ b/docs/user-documentation/resource-nodes.md @@ -119,7 +119,7 @@ To set the display mode on the resource node's edit form, select the display mod ![Display hints](../assets/resource_nodes_display_hints.png) -Due to the associated Context configurations ("Open Seadragon" and "PDFjs Viewer") that are shipped with Islandora Defaults, the selected display mode will then be used when the resource node's page is rendered. +Due to the associated Context configurations ("OpenSeadragon" and "PDFjs Viewer") that are shipped with Islandora Defaults, the selected display mode will then be used when the resource node's page is rendered. At a global level, there are a couple of ways to tell Drupal to use the PDFjs viewer to render the content of the media field whenever the media has a Mime type of `application/pdf`. From 56aa5e2b4b0a38068ce6a45cb9f2a3f56bb4d1b0 Mon Sep 17 00:00:00 2001 From: Tom Misilo Date: Sun, 10 Apr 2022 18:59:06 -0500 Subject: [PATCH 12/18] Standardized formatting for TIFF --- docs/technical-documentation/flysystem.md | 2 +- docs/tutorials/create-a-resource-node.md | 4 ++-- docs/user-documentation/file_viewers.md | 4 ++-- docs/user-documentation/media.md | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/technical-documentation/flysystem.md b/docs/technical-documentation/flysystem.md index cd75f966b..f270343bb 100644 --- a/docs/technical-documentation/flysystem.md +++ b/docs/technical-documentation/flysystem.md @@ -43,7 +43,7 @@ However, there are methods for saving files that can explicitly set a different As hinted in the previous section, Islandora, by default saves derivatives to the Drupal public file system. -For example, if I upload a Tiff to a repository item as a File Media with the term "Original File", the "Image Original File" ([image_original_file](https://github.com/Islandora/islandora_defaults/blob/8.x-1.x/config/install/context.context.image_original_file.yml)) Context is triggered. This fires the ['image_generate_a_service_file_from_an_original_file' action](https://github.com/Islandora/islandora_defaults/blob/8.x-1.x/config/install/system.action.image_generate_a_service_file_from_an_original_file.yml) which emits an event using the ['public' scheme (file system)](https://github.com/Islandora/islandora_defaults/blob/8.x-1.x/config/install/system.action.image_generate_a_service_file_from_an_original_file.yml#L17). +For example, if I upload a TIFF to a repository item as a File Media with the term "Original File", the "Image Original File" ([image_original_file](https://github.com/Islandora/islandora_defaults/blob/8.x-1.x/config/install/context.context.image_original_file.yml)) Context is triggered. This fires the ['image_generate_a_service_file_from_an_original_file' action](https://github.com/Islandora/islandora_defaults/blob/8.x-1.x/config/install/system.action.image_generate_a_service_file_from_an_original_file.yml) which emits an event using the ['public' scheme (file system)](https://github.com/Islandora/islandora_defaults/blob/8.x-1.x/config/install/system.action.image_generate_a_service_file_from_an_original_file.yml#L17). To make Islandora save future derivatives to Fedora instead of to Drupal, change the corresponding action's "File system" setting ('scheme' in the corresponding config file) to 'fedora' instead of 'public'. diff --git a/docs/tutorials/create-a-resource-node.md b/docs/tutorials/create-a-resource-node.md index e73ef815f..a90cd2239 100644 --- a/docs/tutorials/create-a-resource-node.md +++ b/docs/tutorials/create-a-resource-node.md @@ -59,9 +59,9 @@ The Media tab shows nothing listed, because this node has no files. So click on We want to add a jpg image, so click on _Image_. You are now presented with a form to create a media. -!!! warning "Images vs .tiffs" +!!! warning "Images vs TIFFs" 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 would have to choose + For other image types that require special viewers, such as TIFFs, you would have to choose _File_. [Learn more about Media in Islandora](../user-documentation/media.md). ![Fill out the media form](../assets/create_node_adding_image.png) diff --git a/docs/user-documentation/file_viewers.md b/docs/user-documentation/file_viewers.md index 687a5b105..08cbc0525 100644 --- a/docs/user-documentation/file_viewers.md +++ b/docs/user-documentation/file_viewers.md @@ -26,11 +26,11 @@ Here is how viewers are implemented in Islandora Defaults. This example uses Ope ### Expected behaviour for this scenario: -Create a Repository Item, and tag it with "OpenSeadragon" (under Display Hints). Add a Media of type "File" to that node, upload a file such as a tiff or jpeg-2000, and tag it with "Original File" (under Media Use). Save and publish the Media. Go to the Repository Item's page, and you should see your file displayed in the viewer. +Create a Repository Item, and tag it with "OpenSeadragon" (under Display Hints). Add a Media of type "File" to that node, upload a file such as a TIFF or jpeg-2000, and tag it with "Original File" (under Media Use). Save and publish the Media. Go to the Repository Item's page, and you should see your file displayed in the viewer. - + ### Components of this scenario: diff --git a/docs/user-documentation/media.md b/docs/user-documentation/media.md index 775c290f3..8a4069246 100644 --- a/docs/user-documentation/media.md +++ b/docs/user-documentation/media.md @@ -14,8 +14,8 @@ with the media's fields accessible at `/fcrepo/rest/2019-11/test.jpg/fcr:metadat ## Media types -Islandora Defaults makes use of the media types provided automatically by Drupal. The file extensions allowed by each media type have been configured at the Drupal level. It is possible to create your own media types, and/or to edit the allowed field types and functionality of the existing media types. However, with Islandora Defaults, the _Image_ media type only allows .png, .gif, .jpg or .jpeg files. Tiffs (.tiff files) must be added in the _File_ media type instead of _Image_. - +Islandora Defaults makes use of the media types provided automatically by Drupal. The file extensions allowed by each media type have been configured at the Drupal level. It is possible to create your own media types, and/or to edit the allowed field types and functionality of the existing media types. However, with Islandora Defaults, the _Image_ media type only allows .png, .gif, .jpg or .jpeg files. TIFFs (.tiff files) must be added in the _File_ media type instead of _Image_. + ## Media revisions From 5e8246e286d367dcbde18ef69bbacc9f8126ddd3 Mon Sep 17 00:00:00 2001 From: Tom Misilo Date: Sun, 10 Apr 2022 19:01:43 -0500 Subject: [PATCH 13/18] Standardize JPEG 2000 spelling, formatting --- docs/technical-documentation/ppa-documentation.md | 12 ++++++------ docs/user-documentation/file_viewers.md | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/technical-documentation/ppa-documentation.md b/docs/technical-documentation/ppa-documentation.md index 52fa4fee0..fafc7c6a9 100644 --- a/docs/technical-documentation/ppa-documentation.md +++ b/docs/technical-documentation/ppa-documentation.md @@ -2,7 +2,7 @@ ## Background -Ubuntu removed JPEG2000 support from ImageMagick since Vivid Vervet's 8:6.8.9.9-5 version. The PPA that we have created adds JPEG2000 support back into ImageMagick for Ubuntu 16.04 and 18.04. More information on why JPEG2000 support was removed can be found [here](https://bugs.launchpad.net/ubuntu/+source/imagemagick/+bug/1447968), and more information on `openjpeg` in Ubuntu can be found [here](https://bugs.launchpad.net/ubuntu/+source/openjpeg2/+bug/711061). +Ubuntu removed JPEG 2000 support from ImageMagick since Vivid Vervet's 8:6.8.9.9-5 version. The PPA that we have created adds JPEG 2000 support back into ImageMagick for Ubuntu 16.04 and 18.04. More information on why JPEG 2000 support was removed can be found [here](https://bugs.launchpad.net/ubuntu/+source/imagemagick/+bug/1447968), and more information on `openjpeg` in Ubuntu can be found [here](https://bugs.launchpad.net/ubuntu/+source/openjpeg2/+bug/711061). ## Prerequisites @@ -46,7 +46,7 @@ Index: imagemagick-6.9.7.4+dfsg/debian/control # for plugins ghostscript, libdjvulibre-dev, libexif-dev, - libjpeg-dev, --# libopenjp2-7-dev, Needed for JPEG2000 but not in main see MIR #711061 +-# libopenjp2-7-dev, Needed for JPEG 2000 but not in main see MIR #711061 + libjpeg-dev, libopenjp2-7-dev, libopenexr-dev, libperl-dev, libpng-dev, libtiff-dev, libwmf-dev, @@ -56,7 +56,7 @@ Index: imagemagick-6.9.7.4+dfsg/debian/control libmagickcore-6.q16-3-extra (= ${binary:Version}), libbz2-dev, libdjvulibre-dev, - libexif-dev, libfreetype6-dev, libjpeg-dev, --# libopenjp2-7-dev, Needed for JPEG2000 but not in main see MIR #711061 +-# libopenjp2-7-dev, Needed for JPEG 2000 but not in main see MIR #711061 + libexif-dev, libfreetype6-dev, libjpeg-dev, libopenjp2-7-dev, liblcms2-dev, liblqr-1-0-dev, libltdl-dev, libopenexr-dev, libpng-dev, librsvg2-dev, libtiff-dev, libwmf-dev, libx11-dev, libxext-dev, libxml2-dev, @@ -66,7 +66,7 @@ Index: imagemagick-6.9.7.4+dfsg/debian/control libmagickcore-6.q16hdri-3-extra (= ${binary:Version}), libbz2-dev, libdjvulibre-dev, - libexif-dev, libfreetype6-dev, libjpeg-dev, --# libopenjp2-7-dev, Needed for JPEG2000 but not in main see MIR #711061 +-# libopenjp2-7-dev, Needed for JPEG 2000 but not in main see MIR #711061 + libexif-dev, libfreetype6-dev, libjpeg-dev, libopenjp2-7-dev, liblcms2-dev, liblqr-1-0-dev, libltdl-dev, libopenexr-dev, libpng-dev, librsvg2-dev, libtiff-dev, libwmf-dev, libx11-dev, libxext-dev, libxml2-dev, @@ -80,7 +80,7 @@ Index: imagemagick-6.9.7.4+dfsg/debian/control.d/noquantum.in # for plugins ghostscript, libdjvulibre-dev, libexif-dev, - libjpeg-dev, --# libopenjp2-7-dev, Needed for JPEG2000 but not in main see MIR #711061 +-# libopenjp2-7-dev, Needed for JPEG 2000 but not in main see MIR #711061 + libjpeg-dev, libopenjp2-7-dev, libopenexr-dev, libperl-dev, libpng-dev, libtiff-dev, libwmf-dev, @@ -94,7 +94,7 @@ Index: imagemagick-6.9.7.4+dfsg/debian/control.d/quantum.in libmagickcore-${IMVERSION}.${QUANTUMDEPTH}-${CORESOVERSION}-extra (= ${binary:Version}), libbz2-dev, libdjvulibre-dev, - libexif-dev, libfreetype6-dev, libjpeg-dev, --# libopenjp2-7-dev, Needed for JPEG2000 but not in main see MIR #711061 +-# libopenjp2-7-dev, Needed for JPEG 2000 but not in main see MIR #711061 + libexif-dev, libfreetype6-dev, libjpeg-dev, libopenjp2-7-dev, liblcms2-dev, liblqr-1-0-dev, libltdl-dev, libopenexr-dev, libpng-dev, librsvg2-dev, libtiff-dev, libwmf-dev, libx11-dev, libxext-dev, libxml2-dev, diff --git a/docs/user-documentation/file_viewers.md b/docs/user-documentation/file_viewers.md index 08cbc0525..ed877fb46 100644 --- a/docs/user-documentation/file_viewers.md +++ b/docs/user-documentation/file_viewers.md @@ -26,11 +26,11 @@ Here is how viewers are implemented in Islandora Defaults. This example uses Ope ### Expected behaviour for this scenario: -Create a Repository Item, and tag it with "OpenSeadragon" (under Display Hints). Add a Media of type "File" to that node, upload a file such as a TIFF or jpeg-2000, and tag it with "Original File" (under Media Use). Save and publish the Media. Go to the Repository Item's page, and you should see your file displayed in the viewer. +Create a Repository Item, and tag it with "OpenSeadragon" (under Display Hints). Add a Media of type "File" to that node, upload a file such as a TIFF or JPEG 2000, and tag it with "Original File" (under Media Use). Save and publish the Media. Go to the Repository Item's page, and you should see your file displayed in the viewer. - + ### Components of this scenario: From 0cfc5cbc08d9950ca808921b33d88d76077e2802 Mon Sep 17 00:00:00 2001 From: Rosie Le Faive Date: Mon, 11 Apr 2022 09:51:48 -0300 Subject: [PATCH 14/18] Revert to the hard-coded stylings of OpenSeadragon. --- docs/reference/islandora_defaults_reference.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/reference/islandora_defaults_reference.md b/docs/reference/islandora_defaults_reference.md index 533dbf0c0..7d5a239d2 100644 --- a/docs/reference/islandora_defaults_reference.md +++ b/docs/reference/islandora_defaults_reference.md @@ -54,10 +54,10 @@ The following new display modes are defined: | Type | View Mode | Comment | |---------|----------------|----------------------------------------------------------------------| | Content | Binary | | -| Content | OpenSeadragon | | +| Content | Open Seadragon | | | Content | PDFjs | | | Content | Teaser | This seems to be a re-definition of the built-in "Teaser" view mode. | -| Media | OpenSeadragon | | +| Media | Open Seadragon | | | Media | PDFjs | | @@ -130,7 +130,7 @@ These configuration files enable content translation on their bundles. |-----------------------------------------------------|------------------------------------------------|----------------------------------------------------------------------------------------------|--------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------| | IIIF Manifest (iiif_manifest) | Generates IIIF manifests for paged content | REST Export (/node/%node/book-manifest);
REST Export - Single node (/node/%node/manifest) | | | | Members (members) | Displays members for content. | Members (block) | Show an unformatted list of published nodes that are "Member of" the current node (from URL), formatted as "Teaser"s, paged to 10 items. | | -| OpenSeadragon Media EVAs (openseadragon_media_evas) | Displays media for content as EVA's per model. | Original File;
Preservation Master;
Service File | Show 1 Media that is "Media of" the node (from URL) and having Media Use corresponding to each Display (Original file, etc.). The Media is rendered with display mode OpenSeadragon. See media.\*.open_seadragon under "Display Modes." The description's "per model" should read "per media use". Provides the EVA used in the islandora_object.open_seadragon display mode. The Preservation Master and Service File displays are not used. | +| OpenSeadragon Media EVAs (openseadragon_media_evas) | Displays media for content as EVA's per model. | Original File;
Preservation Master;
Service File | Show 1 Media that is "Media of" the node (from URL) and having Media Use corresponding to each Display (Original file, etc.). The Media is rendered with display mode Open Seadragon. See media.\*.open_seadragon under "Display Modes." The description's "per model" should read "per media use". Provides the EVA used in the islandora_object.open_seadragon display mode. The Preservation Master and Service File displays are not used. | | PDFjs Media EVAs (pdfjs_media_evas) | Displays media for content as EVA's per model. | Original File;
Preservation Master;
Service File | Show 1 Media that is "Media of" the node (from URL) and having Media Use corresponding to each Display (Original file, etc.). The Media is rendered with display mode PDFjs. The description's "per model" should read "per media use". Provides the EVA used in the islandora_object.pdfjs display mode. The Preservation Master and Service File displays are not used. | @@ -165,7 +165,7 @@ The contexts provided by Islandora Defaults are organized into groups: **Indexin |---|---|---|---|---| | Binary (binary) | Binary Object Display |**Node has term with URI**: Binary (23)|**Change view mode**: Binary|See node.islandora_object.binary under Display Modes|| | Collection (collection) | Display block of children |**Node has term with URI**: Collection (24)|**Blocks**: "Members" placed in Content Suffix in Carapace|| -| OpenSeadragon (open_seadragon) | OpenSeadragon viewer for Images |**Node has term with URI**:OpenSeadragon (2)|**Change view mode**: OpenSeadragon |See node.islandora_object.open_seadragon under Display Modes|| +| Open Seadragon (open_seadragon) | OpenSeadragon viewer for Images |**Node has term with URI**:Open Seadragon (2)|**Change view mode**: Open Seadragon |See node.islandora_object.open_seadragon under Display Modes|| | PDFjs Viewer (pdfjs) | Displays file using the PDFjs viewer |**Node has term with URI**: PDFjs (3)|**Change view mode:** PDFjs|See node.islandora_object.pdfjs under Display Modes| | Paged Content - OpenSeadragon (openseadragon_block) | Display a block for Paged Content |**Node has term with URI:** OpenSeadragon (2) AND Paged Content (28)|**Blocks** OpenSeadragon block placed in Main Content in Carapace|| @@ -192,7 +192,7 @@ Contents of the islandora_defaults_tags migration: |Vocabulary|Term name|Description|External Uri| |---|---|---|---| -|islandora_display|"OpenSeadragon"|"Display using the OpenSeadragon viewer"|http://openseadragon.github.io| +|islandora_display|"Open Seadragon"|"Display using the OpenSeadragon viewer"|http://openseadragon.github.io| |islandora_display|"PDFjs"|"Display using the PDF.js viewer"|http://mozilla.github.io/pdf.js| |resource_types|"Collection"|"An aggregation of resources"|http://purl.org/dc/dcmitype/Collection| |resource_types|"Dataset"|"Data encoded in a defined structure"|http://purl.org/dc/dcmitype/Dataset| From 66a4d50fe9306ef4c40117a260424c4c6a8c5745 Mon Sep 17 00:00:00 2001 From: Rosie Le Faive Date: Mon, 11 Apr 2022 09:52:34 -0300 Subject: [PATCH 15/18] Mention Legacy Committers. --- docs/contributing/contributing-workflow.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/contributing/contributing-workflow.md b/docs/contributing/contributing-workflow.md index fff6ca53d..1bd88a02f 100644 --- a/docs/contributing/contributing-workflow.md +++ b/docs/contributing/contributing-workflow.md @@ -53,6 +53,3 @@ We operate under the [Islandora Community Code of Conduct](https://www.islandora - If you add the keyword “fixes” or “resolves” on the same line when referencing the Github Issue in the PR description, it will auto-close the issue when the PR is merged. - Otherwise, make a comment referencing the new commit and close the issue manually. -#### Release Workflow - -During release, the same workflow holds, it is just performed against the ‘release’ branch of a repository instead of ‘dev’ or ‘8.x-1.x’. After pull requests are merged into the release branch, the changes can be merged back into dev from release. From d963422c254aa69f50eefd26375e0b0203079444 Mon Sep 17 00:00:00 2001 From: Rosie Le Faive Date: Mon, 11 Apr 2022 10:28:54 -0300 Subject: [PATCH 16/18] Re-break the styling of Open Seadragon to match UI. --- docs/user-documentation/file_viewers.md | 26 ++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/user-documentation/file_viewers.md b/docs/user-documentation/file_viewers.md index ed877fb46..52ec8d26c 100644 --- a/docs/user-documentation/file_viewers.md +++ b/docs/user-documentation/file_viewers.md @@ -26,7 +26,7 @@ Here is how viewers are implemented in Islandora Defaults. This example uses Ope ### Expected behaviour for this scenario: -Create a Repository Item, and tag it with "OpenSeadragon" (under Display Hints). Add a Media of type "File" to that node, upload a file such as a TIFF or JPEG 2000, and tag it with "Original File" (under Media Use). Save and publish the Media. Go to the Repository Item's page, and you should see your file displayed in the viewer. +Create a Repository Item, and tag it with "Open Seadragon" (under Display Hints). Add a Media of type "File" to that node, upload a file such as a TIFF or JPEG 2000, and tag it with "Original File" (under Media Use). Save and publish the Media. Go to the Repository Item's page, and you should see your file displayed in the viewer. @@ -35,18 +35,18 @@ Create a Repository Item, and tag it with "OpenSeadragon" (under Display Hints). ### Components of this scenario: 1. A viewer that includes a field formatter (e.g. the module OpenSeadragon) -1. A media display mode (e.g. the media display mode "OpenSeadragon") +1. A media display mode (e.g. the media display mode "Open Seadragon") 1. A media type (File, though Image is configured similarly) 1. A file field on that media type that can use that field formatter (e.g. field_media_file) 1. A field on that media type that points to a parent node (e.g. field_media_of) -1. Display Mode Configuration (make that display mode, on that media type, show only the file field rendered through that viewer's field formatter. e.g. see Media Types > File > Manage Display > OpenSeadragon) +1. Display Mode Configuration (make that display mode, on that media type, show only the file field rendered through that viewer's field formatter. e.g. see Media Types > File > Manage Display > Open Seadragon) 1. An EVA view (which shows a node's attached media as rendered by that Media display mode. e.g. the view "OpenSeadragon Media EVAs") -1. A content display mode (e.g. the node display mode called "OpenSeadragon") +1. A content display mode (e.g. the node display mode called "Open Seadragon") 1. A content type (e.g. Repository Item) -1. Display Mode Configuration (make that display mode, on that content type, display that EVA as well as whatever metadata is relevant - see Content Types > Repository Item > Manage Display > OpenSeadragon ) -1. A taxonomy term with a URI (e.g. "OpenSeadragon" (http://openseadragon.github.io) imported by a migration in Islandora Defaults) +1. Display Mode Configuration (make that display mode, on that content type, display that EVA as well as whatever metadata is relevant - see Content Types > Repository Item > Manage Display > Open Seadragon ) +1. A taxonomy term with a URI (e.g. "Open Seadragon" (http://openseadragon.github.io) imported by a migration in Islandora Defaults) 1. A field on that content type that can have that taxonomy term (e.g. the "Display Hints" field on Repository Item) -1. A context (which says if a node has that term, then change to the display mode. See the context "OpenSeadragon") +1. A context (which says if a node has that term, then change to the display mode. See the context "Open Seadragon") ### Logic: @@ -65,20 +65,20 @@ Islandora Defaults is a Feature, and the following YAML files in `islandora_defa | Filename | Comments| |---|---| -| `core.entity_view_mode.node.open_seadragon.yml` | (a media display mode) defines the OpenSeadragon display mode as an option for any Media | +| `core.entity_view_mode.node.open_seadragon.yml` | (a media display mode) defines the Open Seadragon display mode as an option for any Media | | `media.type.file.yml` | (a media type) define File media, or in this case, re-define an existing type provided by Core. This feature will override the core settings. | | `field.field.media.file.field_media_file.yml` | (a field that can use the viewer) Defines a file field on File media called field_media_file, or in this case, re-defines it because it was already part of core. Usually you need a field.storage too but it was already defined in core and is not overridden here. | | `field.field.media.file.field_media_of.yml` | (a field that points to a parent node) attach the the "Media Of" field to File media. In this case again, the field storage is not present because it was defined in Islandora Core Feature. | -| `core.entity_view_display.media.file.open_seadragon.yml` | (view mode configuration) configures the OpenSeadragon display mode for File media, so it shows only the field_media_file using the OpenSeadragon field formatter. | +| `core.entity_view_display.media.file.open_seadragon.yml` | (view mode configuration) configures the Open Seadragon display mode for File media, so it shows only the field_media_file using the OpenSeadragon field formatter. | | `views.view.openseadragon_media_evas.yml` | (an EVA View) defines a view that shows a Media that is "Media Of" the current node (from URL) and is published and has "Media Use" = Original File. (there are two other EVAs defined by this view that use Preservation Master and Service File respectively.) | -| `core.entity_view_mode.node.open_seadragon.yml` | (a content display mode) defines the OpenSeadragon display mode as an option for any Node | +| `core.entity_view_mode.node.open_seadragon.yml` | (a content display mode) defines the Open Seadragon display mode as an option for any Node | | `node.type.islandora_object.yml` | (a content type) defines the Repository Item content type | -| `core.entity_view_display.node.islandora_object.open_seadragon.yml` | (view mode configuration) configures the OpenSeadragon display mode for Repository Item, so it shows the Open Seadragon EVA for Original File as well as normal metadata | +| `core.entity_view_display.node.islandora_object.open_seadragon.yml` | (view mode configuration) configures the Open Seadragon display mode for Repository Item, so it shows the Open Seadragon EVA for Original File as well as normal metadata | | `taxonomy.vocabulary.islandora_display.yml` | (taxonomy vocabulary) define a vocabulary to hold display hints | -| `migrate_plus.migration.islandora_defaults_tags.yml` | (migration) create a term in that vocabulary for "OpenSeadragon." Taxonomy terms are "content" so must be entered through a migration. | +| `migrate_plus.migration.islandora_defaults_tags.yml` | (migration) create a term in that vocabulary for "Open Seadragon." Taxonomy terms are "content" so must be entered through a migration. | | `field.storage.node.field_display_hints.yml` | (field storage for display hints) defines the display hints field as an option for any node | | `field.field.node.islandora_object.field_display_hints.yml` | (field for display hints) configures the display hints field on Repository Item | -| `context.context.open_seadragon.yml` | (a context) tells nodes with term "OpenSeadragon" to use display mode "OpenSeadragon" | +| `context.context.open_seadragon.yml` | (a context) tells nodes with term "Open Seadragon" to use display mode "Open Seadragon" | ## Improvements From 59aaed423df4bed3277ff9832829d813390d720d Mon Sep 17 00:00:00 2001 From: Rosie Le Faive Date: Mon, 11 Apr 2022 10:46:18 -0300 Subject: [PATCH 17/18] Proofread and change some D8 to Drupal. --- docs/concepts/accessibility.md | 12 ++++++------ docs/contributing/committers.md | 2 +- .../install-enable-drupal-modules.md | 2 +- docs/technical-documentation/migrate-7x.md | 2 +- docs/technical-documentation/migrate-csv.md | 14 +++++++------- docs/technical-documentation/updating_drupal.md | 2 +- .../using-rest-endpoints.md | 2 +- docs/user-documentation/content_types.md | 2 +- docs/user-documentation/context.md | 4 ++-- docs/user-documentation/iiif.md | 4 ++-- .../objects_to_resource_nodes.md | 2 +- docs/user-documentation/resource-nodes.md | 8 ++++---- docs/user-documentation/user-intro.md | 10 +++++----- 13 files changed, 33 insertions(+), 33 deletions(-) diff --git a/docs/concepts/accessibility.md b/docs/concepts/accessibility.md index e8f98bc38..515eb35eb 100644 --- a/docs/concepts/accessibility.md +++ b/docs/concepts/accessibility.md @@ -1,7 +1,7 @@ -Islandoras accessibility features are currently provided by Drupal 8 and contributed Drupal 8 modules. These pages within the Accessibility section of the Drupal documentation can provide guidance: +Islandora's accessibility features are currently provided by Drupal and contributed Drupal modules. These pages within the Accessibility section of the Drupal documentation can provide guidance: -- [Drupal 8 Accessibility Features](https://www.drupal.org/docs/8/accessibility/drupal-8-accessibility-features) (included in core Drupal) -- [Contributed Modules for Extending Accessibility in Drupal 8](https://www.drupal.org/docs/8/accessibility/contributed-modules-for-extending-accessibility-in-drupal-8) -- [Hiding Content Properly (for all users including users with screen readers)](https://www.drupal.org/docs/8/accessibility/hide-content-properly) -- [How to do an accessibility review?](https://www.drupal.org/docs/8/accessibility/how-to-do-an-accessibility-review) -- List of [External Accessibility Resources](https://www.drupal.org/docs/8/accessibility/external-accessibility-resources) +- [Drupal Accessibility Features](https://www.drupal.org/docs/accessibility/drupal-accessibility-features) (included in core Drupal) +- [Contributed Modules for Extending Accessibility in Drupal](https://www.drupal.org/docs/accessibility/contributed-modules-for-extending-accessibility-in-drupal) +- [Hiding Content Properly (for all users including users with screen readers)](https://www.drupal.org/docs/accessibility/hide-content-properly) +- [How to do an accessibility review?](https://www.drupal.org/docs/accessibility/how-to-do-an-accessibility-review) +- List of [External Accessibility Resources](https://www.drupal.org/docs/accessibility/external-accessibility-resources) diff --git a/docs/contributing/committers.md b/docs/contributing/committers.md index 718087a50..231401215 100644 --- a/docs/contributing/committers.md +++ b/docs/contributing/committers.md @@ -1,6 +1,6 @@ # Islandora Committers -Islandora is open source and released under MIT and GPLv2 licenses. The software and associated documentation is developed collectively by a community of contributors and committers. All interested community members are encouraged to contribute to the project. Contributors who demonstrate sustained engagement with the project through quality participation in meetings, mailing lists, documentation and code updates can be nominated by existing committers to also become a committers. It should be emphasized that committers need not be limited to software developers. Community members with skills in documentation and testing, for example, can also be committers. +Islandora is open source and released under MIT and GPLv2 licenses. The software and associated documentation is developed collectively by a community of contributors and committers. All interested community members are encouraged to contribute to the project. Contributors who demonstrate sustained engagement with the project through quality participation in meetings, mailing lists, documentation and code updates can be nominated by existing committers to also become a committers. It should be emphasized that committers need not be limited to software developers. Community members with skills in documentation and testing, for example, can also be committers. We maintain a separate list of [Islandora Legacy Committers](https://github.com/Islandora/islandora/wiki/Islandora-Committers) ## Rights diff --git a/docs/technical-documentation/install-enable-drupal-modules.md b/docs/technical-documentation/install-enable-drupal-modules.md index 4638e1af5..ea19abfe2 100644 --- a/docs/technical-documentation/install-enable-drupal-modules.md +++ b/docs/technical-documentation/install-enable-drupal-modules.md @@ -1,6 +1,6 @@ ## Downloading and Enabling Drupal Modules and Themes -Islandora can make use of majority of the Drupal 8 [modules](https://www.drupal.org/project/project_module) and [themes](https://www.drupal.org/project/project_theme). Common use cases have been documented in the [Islandora Cookbook](https://github.com/Islandora-Labs/Islandora-Cookbook). There are several ways to download and install Drupal modules. Please refer to [this guide](https://www.drupal.org/docs/8/extending-drupal-8) on Drupal.org. +Islandora can make use of majority of Drupal [modules](https://www.drupal.org/project/project_module) and [themes](https://www.drupal.org/project/project_theme). Common use cases have been documented in the [Islandora Cookbook](/documentation/user-documentation/extending/). There are several ways to download and install Drupal modules. Please refer to [this guide](https://www.drupal.org/docs/extending-drupal) on Drupal.org. [Composer](https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies) is the recommended method to install and update drupal modules and themes in Islandora. ```shell diff --git a/docs/technical-documentation/migrate-7x.md b/docs/technical-documentation/migrate-7x.md index c8ba7afe0..b7f559f84 100644 --- a/docs/technical-documentation/migrate-7x.md +++ b/docs/technical-documentation/migrate-7x.md @@ -1,6 +1,6 @@ ## Migrating from Islandora Legacy to Islandora (YouTube Video) -[![Islandora Webinar: Migrating from Islandora Legacy to Islandora](https://img.youtube.com/vi/n0kLOB8ZdbM/0.jpg)](https://www.youtube.com/watch?v=n0kLOB8ZdbM) +[![Islandora Webinar: Migrating from Islandora 7 to 8](https://img.youtube.com/vi/n0kLOB8ZdbM/0.jpg)](https://www.youtube.com/watch?v=n0kLOB8ZdbM) Nov 21, 2019 For tools to migrate into Islandora from an existing Islandora Legacy 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 index 5526f506f..5b809e58e 100644 --- a/docs/technical-documentation/migrate-csv.md +++ b/docs/technical-documentation/migrate-csv.md @@ -133,8 +133,8 @@ source: # 1 means you have a header row, 0 means you don't header_row_count: 1 - # Each migration needs a unique key per row in the CSV. Here we're using the file path. - keys: + # Each migration needs a unique key ("id") per row in the CSV. Here we're using the file path. + ids: - file # You can't enter string literals into a process plugin, but you can give it a constant as a 'source'. @@ -201,12 +201,12 @@ source: path: '/var/www/html/drupal/web/modules/contrib/migrate_islandora_csv/data/migration.csv' delimiter: ',' header_row_count: 1 - keys: + ids: - file constants: destination_dir: 'fedora://csv_migration' ``` -You can see we provide a path to its location, what delimiter to use, if it uses a header row, and which column contains a unique key for each entry. Constants can also be defined here (more on those later). +You can see we provide a path to its location, what delimiter to use, if it uses a header row, and which column contains a unique id for each entry. Constants can also be defined here (more on those later). #### Process @@ -342,8 +342,8 @@ source: # 1 means you have a header row, 0 means you don't header_row_count: 1 - # Each migration needs a unique key per row in the csv. Here we're using the file path. - keys: + # Each migration needs a unique id per row in the csv. Here we're using the file path. + ids: - file # You can't enter string literals into a process plugin, but you can give it a constant as a 'source'. @@ -719,7 +719,7 @@ source: header_row_count: 1 # Each migration needs a unique key per row in the csv. Here we're using the file path. - keys: + ids: - file # You can't enter string literals into a process plugin, but you can give it a constant as a 'source'. diff --git a/docs/technical-documentation/updating_drupal.md b/docs/technical-documentation/updating_drupal.md index adea71ed2..66d5a1da0 100644 --- a/docs/technical-documentation/updating_drupal.md +++ b/docs/technical-documentation/updating_drupal.md @@ -5,7 +5,7 @@ This section describes how to update Drupal and its modules using Composer. If you installed Islandora using the Islandora Playbook, then your Drupal was installed by Composer, so it is considered best practice to continue using Composer for updates. The method on this section is not specific to Islandora, and does not (yet) include how to update Islandora Features. ### What is Composer -It is recommended by Drupal.org and the Islandora community to use Composer with Drupal 8 for various tasks. +It is recommended by Drupal.org and the Islandora community to use Composer with Drupal for various tasks. "[Composer](https://getcomposer.org/) is a [dependency manager](https://en.wikipedia.org/wiki/Package_manager) for PHP. Drupal core uses Composer to manage core dependencies like Symfony components and Guzzle." [[Source](https://www.drupal.org/docs/develop/using-composer/using-composer-with-drupal)] diff --git a/docs/technical-documentation/using-rest-endpoints.md b/docs/technical-documentation/using-rest-endpoints.md index 8c89eead7..1c9653ca8 100644 --- a/docs/technical-documentation/using-rest-endpoints.md +++ b/docs/technical-documentation/using-rest-endpoints.md @@ -1,6 +1,6 @@ # Islandora via REST -Each node, media and file in Drupal 8 has its own URI and we can GET the resources, some in a variety of formats. +Each node, media and file in Drupal has its own URI and we can GET the resources, some in a variety of formats. We can also create nodes, media and files in Drupal by using PUT and/or POST requests. diff --git a/docs/user-documentation/content_types.md b/docs/user-documentation/content_types.md index d52144da4..386c6fbf5 100644 --- a/docs/user-documentation/content_types.md +++ b/docs/user-documentation/content_types.md @@ -2,7 +2,7 @@ ## Overview -Since metadata in Islandora is stored as fields in Nodes, the standard Drupal Content Types system provides our 'ingest forms'. For more information about Content Types in general, please see [Content Types in Drupal 8](https://www.drupal.org/docs/8/administering-drupal-8-site/managing-content-0/working-with-content-types-and-fields). If you are already familiar with Drupal Field UI, you’re already well equipped to create and modify your own ingest forms in Islandora. +Since metadata in Islandora is stored as fields in Nodes, the standard Drupal Content Types system provides our 'ingest forms'. For more information about Content Types in general, please see [Content Types in Drupal](https://www.drupal.org/docs/administering-a-drupal-site/managing-content-0/working-with-content-types-and-fields). If you are already familiar with Drupal Field UI, you’re already well equipped to create and modify your own ingest forms in Islandora. This page will address how to create and modify ingest forms by editing fields and form display settings on Content Types via the graphical user interface (GUI). This page will also cover editing the RDF mapping to accommodate changes to fields. diff --git a/docs/user-documentation/context.md b/docs/user-documentation/context.md index d055148da..8eb4a28ca 100644 --- a/docs/user-documentation/context.md +++ b/docs/user-documentation/context.md @@ -1,10 +1,10 @@ ## Context in Islandora -[Context](https://www.drupal.org/project/context) is a Drupal contrib module that allows configuration of "if this, then that" logic using an administrative user interface. Context defines "conditions" and "reactions" to enact the "if this [condition], then that [reaction]" logic. Some Islandora 7.x repositories use the community-contributed [Islandora Context](https://github.com/SFULibrary/islandora_context) module to apply this sort of logic to Islandora objects. An example Context from Islandora 7.x is +[Context](https://www.drupal.org/project/context) is a Drupal contrib module that allows configuration of "if this, then that" logic using an administrative user interface. Context defines "conditions" and "reactions" to enact the "if this [condition], then that [reaction]" logic. Some Islandora Legacy repositories use the community-contributed [Islandora Context](https://github.com/SFULibrary/islandora_context) module to apply this sort of logic to Islandora objects. An example Context from Islandora Legacy is > If an object's namespace is 'customnamespace', render the block containing the rights statement "Please contact Special Collections before reusing this item". -The Context project page on drupal.org says "You can think of each context as representing a 'section' of your site", but that doesn't tell the whole story, since it gives the impression that Context is all about defining subsites. Context in Drupal 8 is much more powerful than in Drupal 7 due to how it interacts with the rest of Drupal (specifically, through Drupal 8's new plugin API). Because of this increased flexibility and power, and because Context provides a ready-made user interface for site administrators to combine conditions and reactions, Islandora uses Context to drive the logic underlying many important aspects of Islandora, including which derivatives get generated and how objects are displayed. In Islandora 7, many of these things are managed (and often hard-coded) within solution packs and utility modules. +The Context project page on drupal.org says "You can think of each context as representing a 'section' of your site", but that doesn't tell the whole story, since it gives the impression that Context is all about defining subsites. Context in Drupal 8 (and above) is much more powerful than in Drupal 7 due to how it interacts with the rest of Drupal (specifically, through Drupal 8's new plugin API). Because of this increased flexibility and power, and because Context provides a ready-made user interface for site administrators to combine conditions and reactions, Islandora uses Context to drive the logic underlying many important aspects of Islandora, including which derivatives get generated and how objects are displayed. In Islandora Legacy, many of these things are managed (and often hard-coded) within solution packs and utility modules. ### An Example diff --git a/docs/user-documentation/iiif.md b/docs/user-documentation/iiif.md index 3537181b6..2c1af909b 100644 --- a/docs/user-documentation/iiif.md +++ b/docs/user-documentation/iiif.md @@ -15,13 +15,13 @@ At a practial level, because Islandora supports several of the IIIF specificatio Implementation of the IIIF Presentation API is new in Islandora, and using it is as simple as configuring a Context (in fact, you don't even need to configure it; the Context, OpenSeadragon Block, already exists by default). -To use this Context, all that is required is for your book or newspaper (or other paged content) to be given a model of "Paged Content" or "Publication Issue". Then, in the OpenSeadragon Block Context, make sure the term used in the "Node has term" condition (you can register more than one term there). Now, when you view a paged content Islandora object, you will see thumbnails of all of its child pages (assuming you have added some child pages to the object) in the OpenSeadragon viewer as illustrated above. +To use this Context, all that is required is for your book or newspaper (or other paged content) to be given a model of "Paged Content" or "Publication Issue". Then, in the Open Seadragon Block Context, make sure the term used in the "Node has term" condition (you can register more than one term there). Now, when you view a paged content Islandora object, you will see thumbnails of all of its child pages (assuming you have added some child pages to the object) in the OpenSeadragon viewer as illustrated above. You can change how the paged content thumbnails are arranged in the OpenSeadragon viewport by doing the following: 1. Visit `admin/config/media/openseadragon` 1. Scroll to the bottom, where you will see the "Collection Mode" options. -1. The "Enable Collection Mode" checkbox will be unchecked. This is normal (unless you have already checked it). The OpenSeadragon Context automatically, and temporarily, puts OpenSeadragon in Collection mode when rendering a Paged Content object and then puts it back to Sequence mode (which is what mode it's in when the "Enable Collection Mode" checkbox is unchecked). _This means that in order for you to change options that apply to Collection Mode, you will need to check the "Enable Collection Mode" checkbox, change its options, save the form, then uncheck the "Enable Collection Mode" checkbox again._ Just follow these steps, and it will work! +1. The "Enable Collection Mode" checkbox will be unchecked. This is normal (unless you have already checked it). The Open Seadragon Context automatically, and temporarily, puts OpenSeadragon in Collection mode when rendering a Paged Content object and then puts it back to Sequence mode (which is what mode it's in when the "Enable Collection Mode" checkbox is unchecked). _This means that in order for you to change options that apply to Collection Mode, you will need to check the "Enable Collection Mode" checkbox, change its options, save the form, then uncheck the "Enable Collection Mode" checkbox again._ Just follow these steps, and it will work! 1. Check the "Enable Collection Mode" checkbox. The Collection Mode options will appear. 1. Adjust the options to what you want. 1. Click the "Save Configuration" button. diff --git a/docs/user-documentation/objects_to_resource_nodes.md b/docs/user-documentation/objects_to_resource_nodes.md index 0dbf124be..b94f6532c 100644 --- a/docs/user-documentation/objects_to_resource_nodes.md +++ b/docs/user-documentation/objects_to_resource_nodes.md @@ -4,7 +4,7 @@ This document attempts to show the shift in how objects work from Islandora Lega ## Traditional objects become resource nodes -The conventional Islandora Legacy definition of an object is a file loaded in the repository with associated derivatives. In Islandora 7, objects (video files, audio files, PDFs, etc.) are loaded through the user interface, and Datastreams are generated automatically. These consist of access and display copies, the metadata, OCH/HOCR, technical metadata, and more. All of these Datastreams are directly connected to the object and accessed through the admin interface. +The conventional Islandora Legacy definition of an object is a file loaded in the repository with associated derivatives. In Islandora Legacy, objects (video files, audio files, PDFs, etc.) are loaded through the user interface, and Datastreams are generated automatically. These consist of access and display copies, the metadata, OCH/HOCR, technical metadata, and more. All of these Datastreams are directly connected to the object and accessed through the admin interface. In Islandora, the traditional Islandora Legacy objects (video files, audio files, etc. that were represented in different content models) are now Drupal nodes. Islandora object nodes are a special kind of Drupal node, distinct from nodes that exist for other content types such as a blog post, an article, a page (like the About page on a site), and others. These Islandora objects are still loaded through the interface and described with the data entry form, and derivatives are still generated. However, the Datastreams are no longer connected to the original object in the same immutable way. Each of these Datastreams can be manipulated through Drupal by non-developers. You can create a variety of ways to view this metadata and information related to the objects. Doing so requires knowledge of Drupal 8, but this essentially means that there are many ways to view the metadata and access the related objects in Islandora. diff --git a/docs/user-documentation/resource-nodes.md b/docs/user-documentation/resource-nodes.md index a4be40861..bad001590 100644 --- a/docs/user-documentation/resource-nodes.md +++ b/docs/user-documentation/resource-nodes.md @@ -54,8 +54,8 @@ changed | Timestamp of when the 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 are analogous to following Islandora 7.x object properties: +!!! note "Compared to Islandora Legacy" + These node properties are analogous to following Islandora Legacy object properties: Islandora Legacy | Islandora ----------- | ----------- @@ -96,8 +96,8 @@ of how to handle the node in response to certain events, like choosing a viewer ![Model tags](../assets/resource_nodes_model_tags.png) -!!! note "Compared to Islandora 7" - Content models in Islandora 7 were immutable and contained restrictions as to what +!!! note "Compared to Islandora Legacy" + Content models in Islandora Legacy were immutable and contained restrictions as to what types of datastreams could be associated with an object. Islandora 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. diff --git a/docs/user-documentation/user-intro.md b/docs/user-documentation/user-intro.md index 9c1d87aa0..550aced93 100644 --- a/docs/user-documentation/user-intro.md +++ b/docs/user-documentation/user-intro.md @@ -12,7 +12,7 @@ The [Official Drupal User Guide](https://www.drupal.org/docs) and the ## Object Modeling In Islandora, we often want to store (and manage, and preserve) sets of metadata with binaries (digital files). -We used to call this an "_object_" but in Islandora 2.0, are represented as multiple interconnected entities. +We used to call this an "_object_" but in Islandora, are represented as multiple interconnected entities. - Metadata is stored in _nodes_ (a.k.a. _content_). - Specifically, metadata values are stored in _fields_ which are configurable properties attached to _nodes_. @@ -28,9 +28,9 @@ They can represent everything from simple labels to more complex concepts such a 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 2.0, using Fedora is optional. That's right, optional. Drupal, and not Fedora, is the primary source of all aspects of an Islandora 2.0 object, and, with some variations, Drupal, not Fedora, is the primary datastore in an Islandora repository. If Fedora is present in an Islandora 2.0 repository, content in it is a tightly synchronized copy of object properties and files managed by Drupal. +In Islandora, using Fedora is optional. That's right, optional. Drupal, and not Fedora, is the primary source of all aspects of an Islandora object, and, with some variations, Drupal, not Fedora, is the primary datastore in an Islandora repository. If Fedora is present in an Islandora repository, content in it is a tightly synchronized copy of object properties and files managed by Drupal. -Even though Fedora is optional in Islandora 2.0, most repositories will use it since it provides its own set of services that are worth taking advantage of, such as: +Even though Fedora is optional in Islandora, 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 @@ -39,14 +39,14 @@ Even though Fedora is optional in Islandora 2.0, most repositories will use it s * Integration with Microservices via API-X * WebAC Policies for access control (not currently leveraged by default) -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). In addition, the Drupal media associated with Islandora objects are persisted to Fedora, although exactly which media is configurable within the Islandora 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 2.0 repository in the [metadata](metadata.md) and [media](media.md) sections. +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). In addition, the Drupal media associated with Islandora objects are persisted to Fedora, although exactly which media is configurable within the Islandora 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 repository in the [metadata](metadata.md) and [media](media.md) sections. ## Architecture ### Conceptual Diagram -Many users of Islandora may be familiar with the metaphorical diagram of Islandora 7 as a cheeseburger, which provides a memorable approximation of how the different parts of the software stack interact in a vertically-integrated, relatively customizable fashion (ie, Drupal, Solr, Islandora, and Fedora are stable layers, and the "toppings" stand in for Solution Packs and other utilities that can be added or removed to customize Islandora): +Many users of Islandora may be familiar with the metaphorical diagram of Islandora Legacy as a cheeseburger, which provides a memorable approximation of how the different parts of the software stack interact in a vertically-integrated, relatively customizable fashion (ie, Drupal, Solr, Islandora, and Fedora are stable layers, and the "toppings" stand in for Solution Packs and other utilities that can be added or removed to customize Islandora): ![Islandora Leagcy as a cheeseburger](../assets/user-intro-islandoraburger.png) From 6bda87749334e35d5edd58160ff32a4140e72a13 Mon Sep 17 00:00:00 2001 From: Rosie Le Faive Date: Mon, 11 Apr 2022 10:53:03 -0300 Subject: [PATCH 18/18] Add entry for Islandora 8 in glossary --- docs/user-documentation/glossary.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/user-documentation/glossary.md b/docs/user-documentation/glossary.md index fe6d9bd68..956951044 100644 --- a/docs/user-documentation/glossary.md +++ b/docs/user-documentation/glossary.md @@ -100,6 +100,9 @@ To ingest an object is to add an entry for it in Islandora. This can be done thr In the context of digital repositories, ingest refers to the process by which the repository software imports and subsequently processes an object, creating derivatives automatically, and running any other processing that is configured to occur when an object is added. This would be distinguished by software which simply stores objects after import (with or without associated files) and performs no processing. The Islandora GUI and the documentation sometimes use other terms such as 'import' or 'add resource node'. In such contexts, these terms generally refer to the ingest process. +## Islandora 8 (8.x, 2.0) +Islandora 8, 8.x, 2.0, and CLAW are all deprecated names for the current version of Islandora. They referred to Islandora's use of Drupal 8, and being a major shift away from Islandora Legacy (formerly known as Islandora 7 or 7.x as it runs on Drupal 7). + ## Islandora model ## Islandora playbook