From baba7a4e79f1689e394eff5277bdf45225819d03 Mon Sep 17 00:00:00 2001 From: Rosie Le Faive Date: Mon, 12 Aug 2024 17:06:32 -0300 Subject: [PATCH] Fix broken links and anchors. Also add MIG definitions for GUI and Islandora Model. --- docs/concepts/node-media.md | 2 +- docs/concepts/starter-site.md | 4 +- docs/index.md | 2 +- .../docker/isle-dc/docker-custom.md | 2 +- .../docker/isle-dc/docker-local.md | 4 +- .../docker/site-template/updating.md | 2 +- .../installation/manual/configuring-drupal.md | 4 +- .../installing-composer-drush-and-drupal.md | 4 +- .../manual/installing-crayfish.md | 2 +- docs/installation/manual/installing-solr.md | 2 +- .../installing-tomcat-and-cantaloupe.md | 4 +- docs/installation/manual/introduction.md | 2 +- .../manual/preparing-a-webserver.md | 2 +- docs/installation/quickstart.md | 6 +-- docs/models/video.md | 2 +- .../install-enable-drupal-modules.md | 2 +- docs/technical-documentation/migrate-csv.md | 7 ++-- .../migration-migrate-api.md | 2 +- .../migration-overview.md | 2 +- docs/technical-documentation/rest-create.md | 6 +-- docs/technical-documentation/rest-delete.md | 6 +-- docs/technical-documentation/rest-get.md | 2 +- docs/technical-documentation/rest-patch.md | 6 +-- .../using-rest-endpoints.md | 10 ++--- docs/tutorials/create-update-views.md | 2 +- docs/user-documentation/access-control.md | 4 +- docs/user-documentation/advanced-search.md | 6 +-- docs/user-documentation/file-viewers.md | 2 +- docs/user-documentation/glossary.md | 40 ++++++++++++++----- docs/user-documentation/iiif.md | 6 +-- .../user-documentation/metadata-harvesting.md | 2 +- docs/user-documentation/metadata.md | 28 ++++++------- docs/user-documentation/multilingual.md | 2 +- docs/user-documentation/paged-content.md | 2 +- docs/user-documentation/versioning.md | 7 ++-- mkdocs.yml | 2 +- 36 files changed, 105 insertions(+), 85 deletions(-) diff --git a/docs/concepts/node-media.md b/docs/concepts/node-media.md index fd9f7837d..c287d1043 100644 --- a/docs/concepts/node-media.md +++ b/docs/concepts/node-media.md @@ -69,6 +69,6 @@ Media (file) and tag it as "Transcript". See [Audio](../models/audio.md) and !!! note "Standard vs Multi-file media model" This describes the standard file-media relationship in Islandora. There is an alternative method of arranging files and their derivatives - which we call the ["Multi-file media"](../user-documentation/media/#multi-file-media) method. + which we call the ["Multi-file media"](../user-documentation/media.md#multi-file-media) method. diff --git a/docs/concepts/starter-site.md b/docs/concepts/starter-site.md index ecbae7b2a..4c59370d9 100644 --- a/docs/concepts/starter-site.md +++ b/docs/concepts/starter-site.md @@ -11,6 +11,6 @@ The Islandora Starter Site contains no code, only references to other modules an To experience the full Islandora Starter Site, it requires access to external services such as Solr, Fedora, Alpaca, and Matomo. It is therefore suggested to deploy the Starter Site using one of our -two deployment platforms: [ISLE-DC](../../installation/docker-local) (using the `make starter` or `make starter_dev` commands), or -the [Islandora Playbook](../../installation/playbook) (using the `starter` (default) or `starter_dev` option in the Vagrantfile). + deployment platforms: [ISLE-DC](../installation/docker/isle-dc/docker-local.md) (using the `make starter` or `make starter_dev` commands), [ISLE Site Template](../installation/docker/site-template/site-template.md), or +the [Islandora Playbook](../installation/playbook.md) (using the `starter` (default) or `starter_dev` option in the Vagrantfile). diff --git a/docs/index.md b/docs/index.md index 70cae95d5..a06629e6e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -17,7 +17,7 @@ Islandora: [//]: # (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 by our automated installation methods. Community members have created additional features for doing [digital preservation using Islandora](https://github.com/mjordan/digital_preservation_using_islandora), which are not yet part of our automated setup. -- **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 Starter Site also offers a full configuration for exposing [OAI-PMH](user-documentation/metadata_harvesting/#oai-pmh) so that metadata can be harvested by aggregators, and [IIIF support](https://github.com/Islandora/islandora/tree/8.x-1.x/modules/islandora_iiif) means images in Islandora can be viewed in any IIIF-compliant viewer. +- **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 Starter Site also offers a full configuration for exposing [OAI-PMH](user-documentation/metadata-harvesting.md#oai-pmh) so that metadata can be harvested by aggregators, and [IIIF support](https://github.com/Islandora/islandora/tree/8.x-1.x/modules/islandora_iiif) means images in Islandora can be viewed in any IIIF-compliant viewer. - **Offers flexibility** - As Islandora content is Drupal content, migrations and batch editing can be done through Drupal's built-in migrate framework and vocabularies can be 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). diff --git a/docs/installation/docker/isle-dc/docker-custom.md b/docs/installation/docker/isle-dc/docker-custom.md index 9c057191a..737f7022b 100644 --- a/docs/installation/docker/isle-dc/docker-custom.md +++ b/docs/installation/docker/isle-dc/docker-custom.md @@ -10,7 +10,7 @@ image. ## Creating your Image -In order to generate that custom Drupal image we need to [set up a development environment](../docker-local). You will do this +In order to generate that custom Drupal image we need to [set up a development environment](docker-local.md). You will do this on your development computer, rather than your production server. Once your development site is set up you will need somewhere to store your custom Drupal image. You should create a private diff --git a/docs/installation/docker/isle-dc/docker-local.md b/docs/installation/docker/isle-dc/docker-local.md index 2e94e59e3..64f55cd37 100644 --- a/docs/installation/docker/isle-dc/docker-local.md +++ b/docs/installation/docker/isle-dc/docker-local.md @@ -14,7 +14,7 @@ Tagged versions are available [here](https://github.com/Islandora-Devops/isle-dc ## Getting Started -If you don't already have a Drupal site, you'll be given a basic setup using Drupal 9 and the +If you don't already have a Drupal site, you'll be given a basic setup using Drupal 10 and the [Islandora Starter Site](https://github.com/Islandora-Devops/islandora-starter-site). If you do already have a Drupal site, use git to clone it into place as the `codebase` folder. @@ -56,7 +56,7 @@ make starter 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 +Enjoy your Islandora instance! Check out the [basic usage documentation](docker-basic-usage.md) to see 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 starter`. diff --git a/docs/installation/docker/site-template/updating.md b/docs/installation/docker/site-template/updating.md index c14a3a677..c5814a41d 100644 --- a/docs/installation/docker/site-template/updating.md +++ b/docs/installation/docker/site-template/updating.md @@ -70,7 +70,7 @@ Drupal updates are performed through composer on your development site. Once the ### Development -Composer commands need to [run in your Drupal container](/documentation/installation/docker/site-template/containers.md). For example: +Composer commands need to [run in your Drupal container](../docker-prereq.md#containers). For example: ​​`docker compose exec drupal-dev composer update -W` diff --git a/docs/installation/manual/configuring-drupal.md b/docs/installation/manual/configuring-drupal.md index 640ab9c69..f5b88ea7a 100644 --- a/docs/installation/manual/configuring-drupal.md +++ b/docs/installation/manual/configuring-drupal.md @@ -1,7 +1,7 @@ # Configuring Drupal !!! warning "Needs Maintenance" - The manual installation documentation is in need of attention. We are aware that some components no longer work as documented here. If you are interested in helping us improve the documentation, please see [Contributing](../../../contributing/CONTRIBUTING). + The manual installation documentation is in need of attention. We are aware that some components no longer work as documented here. If you are interested in helping us improve the documentation, please see [Contributing](../../contributing/CONTRIBUTING.md). After all of the above pieces are in place, installed, configured, started, and otherwise prepared, the last thing we need to do is to finally configure the front-end Drupal instance to wire all the installed components together. @@ -53,7 +53,7 @@ drush -y cr ## Islandora !!! note "Skip this by using the Islandora Starter Site" - The Islandora Starter Site, which was presented as an option in the ["Installing Composer, Drush, and Drupal"](installing_composer_drush_and_drupal) step, + The Islandora Starter Site, which was presented as an option in the ["Installing Composer, Drush, and Drupal"](installing-composer-drush-and-drupal.md) step, installs Islandora and other modules and configures them, allowing you to skip this section. You may want to use this manual method in the case where you want to pick and choose which Islandora modules you use. diff --git a/docs/installation/manual/installing-composer-drush-and-drupal.md b/docs/installation/manual/installing-composer-drush-and-drupal.md index 0d055d138..4c1d0f3be 100644 --- a/docs/installation/manual/installing-composer-drush-and-drupal.md +++ b/docs/installation/manual/installing-composer-drush-and-drupal.md @@ -1,7 +1,7 @@ # Installing Composer, Drush, and Drupal !!! warning "Needs Maintenance" - The manual installation documentation is in need of attention. We are aware that some components no longer work as documented here. If you are interested in helping us improve the documentation, please see [Contributing](../../../contributing/CONTRIBUTING). + The manual installation documentation is in need of attention. We are aware that some components no longer work as documented here. If you are interested in helping us improve the documentation, please see [Contributing](../../contributing/CONTRIBUTING.md). ## In this section, we will install: @@ -131,7 +131,7 @@ exit ## Install Drupal using Drush -The Drupal installation process can be done through the GUI in a series of form steps, or can be done quickly using Drush's `site-install` command. It can be invoked with the full list of parameters (such as `--db-url` and `--site-name`), but if parameters are missing, they will be asked of you interactively. +The Drupal installation process can be done through the [GUI](../../user-documentation/glossary.md#gui) in a series of form steps, or can be done quickly using Drush's `site-install` command. It can be invoked with the full list of parameters (such as `--db-url` and `--site-name`), but if parameters are missing, they will be asked of you interactively. ### Option 1: Site install the Starter Site with existing configs diff --git a/docs/installation/manual/installing-crayfish.md b/docs/installation/manual/installing-crayfish.md index 4f2f6d76b..672649fcf 100644 --- a/docs/installation/manual/installing-crayfish.md +++ b/docs/installation/manual/installing-crayfish.md @@ -1,7 +1,7 @@ # Installing Crayfish !!! warning "Needs Maintenance" - The manual installation documentation is in need of attention. We are aware that some components no longer work as documented here. If you are interested in helping us improve the documentation, please see [Contributing](../../../contributing/CONTRIBUTING). + The manual installation documentation is in need of attention. We are aware that some components no longer work as documented here. If you are interested in helping us improve the documentation, please see [Contributing](../../contributing/CONTRIBUTING.md). ## In this section, we will install: - [FITS Web Service](https://projects.iq.harvard.edu/fits), a webservice for identifying file metadata diff --git a/docs/installation/manual/installing-solr.md b/docs/installation/manual/installing-solr.md index ec3868adc..0b6b2c17e 100644 --- a/docs/installation/manual/installing-solr.md +++ b/docs/installation/manual/installing-solr.md @@ -1,7 +1,7 @@ # Installing Solr !!! warning "Needs Maintenance" - The manual installation documentation is in need of attention. We are aware that some components no longer work as documented here. If you are interested in helping us improve the documentation, please see [Contributing](../../../contributing/CONTRIBUTING). + The manual installation documentation is in need of attention. We are aware that some components no longer work as documented here. If you are interested in helping us improve the documentation, please see [Contributing](../../contributing/CONTRIBUTING.md). ## In this section, we will install: - [Apache Solr 8](https://lucene.apache.org/solr/), the search engine used to index and find Drupal content diff --git a/docs/installation/manual/installing-tomcat-and-cantaloupe.md b/docs/installation/manual/installing-tomcat-and-cantaloupe.md index 1af119e42..37e5386c2 100644 --- a/docs/installation/manual/installing-tomcat-and-cantaloupe.md +++ b/docs/installation/manual/installing-tomcat-and-cantaloupe.md @@ -1,7 +1,7 @@ # Installing Tomcat and Cantaloupe !!! warning "Needs Maintenance" - The manual installation documentation is in need of attention. We are aware that some components no longer work as documented here. If you are interested in helping us improve the documentation, please see [Contributing](../../../contributing/CONTRIBUTING). + The manual installation documentation is in need of attention. We are aware that some components no longer work as documented here. If you are interested in helping us improve the documentation, please see [Contributing](../../contributing/CONTRIBUTING.md). ## In this section, we will install: @@ -185,4 +185,4 @@ If you have trouble connecting, check the status of your port and allow it if ne ```bash sudo ufw status verbose sudo ufw allow 8182/tcp -``` \ No newline at end of file +``` diff --git a/docs/installation/manual/introduction.md b/docs/installation/manual/introduction.md index 419adb6b2..4c2e004cd 100644 --- a/docs/installation/manual/introduction.md +++ b/docs/installation/manual/introduction.md @@ -1,7 +1,7 @@ # Introduction !!! warning "Needs Maintenance" - The manual installation documentation is in need of attention. We are aware that some components no longer work as documented here. If you are interested in helping us improve the documentation, please see [Contributing](../../../contributing/CONTRIBUTING). + The manual installation documentation is in need of attention. We are aware that some components no longer work as documented here. If you are interested in helping us improve the documentation, please see [Contributing](../../contributing/CONTRIBUTING.md). !!! notice 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. diff --git a/docs/installation/manual/preparing-a-webserver.md b/docs/installation/manual/preparing-a-webserver.md index b1a9cdcb0..db90ecd53 100644 --- a/docs/installation/manual/preparing-a-webserver.md +++ b/docs/installation/manual/preparing-a-webserver.md @@ -1,7 +1,7 @@ # Preparing a LAPP Server !!! warning "Needs Maintenance" - The manual installation documentation is in need of attention. We are aware that some components no longer work as documented here. If you are interested in helping us improve the documentation, please see [Contributing](../../../contributing/CONTRIBUTING). + The manual installation documentation is in need of attention. We are aware that some components no longer work as documented here. If you are interested in helping us improve the documentation, please see [Contributing](../../contributing/CONTRIBUTING.md). ## In this section, we will install: diff --git a/docs/installation/quickstart.md b/docs/installation/quickstart.md index 300da5240..1deacacc7 100644 --- a/docs/installation/quickstart.md +++ b/docs/installation/quickstart.md @@ -19,14 +19,14 @@ Alternately, you can use Docker and install the Online Sandbox repository locall ## Ansible Playbook -To provision a local Vagrant or remote Ubuntu virtual machine (without Docker), you can use the [Islandora Ansible Playbook](https://github.com/Islandora-Devops/islandora-playbook). The playbook results in all services installed on a single machine, but can be altered to spread services across various machines. This is a full-fledged VM where you can install modules and themes using Composer. This method requires basic command-line usage and it's advantageous if you are familiar with provisioning software on Ubuntu. This Playbook is suitable for local or production use, though local use (through VirtualBox and Vagrant) is not supported yet by Apple hardware (i.e. M1/M2 machines). See documentation: [Installation - Ansible Playbook](installation/playbook) for more details. +To provision a local Vagrant or remote Ubuntu virtual machine (without Docker), you can use the [Islandora Ansible Playbook](https://github.com/Islandora-Devops/islandora-playbook). The playbook results in all services installed on a single machine, but can be altered to spread services across various machines. This is a full-fledged VM where you can install modules and themes using Composer. This method requires basic command-line usage and it's advantageous if you are familiar with provisioning software on Ubuntu. This Playbook is suitable for local or production use, though local use (through VirtualBox and Vagrant) is not supported yet by Apple hardware (i.e. M1/M2 machines). See documentation: [Installation - Ansible Playbook](playbook.md) for more details. ## ISLE Site Template -[ISLE Site Template](https://github.com/Islandora-Devops/isle-site-template) uses Docker and is based off images created by [ISLE Buildkit](https://github.com/Islandora-Devops/isle-buildkit), but is a simpler tool than ISLE-DC. This is a full-fledged Docker installation where you can install modules and themes using Composer, either by executing commands in the container or by using the built-in IDE. It is suitable for local development or production. See documentation: [Installation - Site Template](http://localhost:8111/documentation/installation/docker/site-template/site-template/) for more details. +[ISLE Site Template](https://github.com/Islandora-Devops/isle-site-template) uses Docker and is based off images created by [ISLE Buildkit](https://github.com/Islandora-Devops/isle-buildkit), but is a simpler tool than ISLE-DC. This is a full-fledged Docker installation where you can install modules and themes using Composer, either by executing commands in the container or by using the built-in IDE. It is suitable for local development or production. See documentation: [Installation - Site Template](docker/site-template/site-template.md) for more details. ## ISLE-DC -[ISLE-DC](https://github.com/Islandora-Devops/isle-dc) uses Docker and provisions each service in the Islandora stack in a separate container. The containers are also based off of the images in ISLE Buildkit. ISLE-DC uses the [GNU Make](https://www.gnu.org/software/make/) tool to provide several shortcuts to performing common management functions. It is suitable for local development or production. See documentation: [Installation - Docker ISLE](installation/docker-introduction) for more details. +[ISLE-DC](https://github.com/Islandora-Devops/isle-dc) uses Docker and provisions each service in the Islandora stack in a separate container. The containers are also based off of the images in ISLE Buildkit. ISLE-DC uses the [GNU Make](https://www.gnu.org/software/make/) tool to provide several shortcuts to performing common management functions. It is suitable for local development or production. See documentation: [Installation - Docker ISLE](docker/isle-dc/docker-local.md) for more details. diff --git a/docs/models/video.md b/docs/models/video.md index b684cee2f..b8670af30 100644 --- a/docs/models/video.md +++ b/docs/models/video.md @@ -20,7 +20,7 @@ Islandora Starter Site sets up a context to automatically create this derivative * The Video media is tagged with the "Original File" term (a term with External URI `http://pcdm.org/use#OriginalFile`) * The media's parent node is tagged with the "Video" model (a term with External URI `http://purl.org/coar/resource_type/c_18cc`) -The mimetype formats allowed by Homarus are configured in Homarus itself - see [Installing Crayfish](../installation/manual/installing_crayfish#homarus-audiovideo-derivatives) +The mimetype formats allowed by Homarus are configured in Homarus itself - see [Installing Crayfish](../installation/manual/installing-crayfish.md#homarus-audiovideo-derivatives) ## Display diff --git a/docs/technical-documentation/install-enable-drupal-modules.md b/docs/technical-documentation/install-enable-drupal-modules.md index b1e3dea4e..3dbdac32a 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 the 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. +Islandora can make use of the 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](../user-documentation/extending.md). 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. Drupal modules provided by Islandora can be accessed at the `drupal/` namespace. ```shell diff --git a/docs/technical-documentation/migrate-csv.md b/docs/technical-documentation/migrate-csv.md index 7a10e890a..53a470073 100644 --- a/docs/technical-documentation/migrate-csv.md +++ b/docs/technical-documentation/migrate-csv.md @@ -2,7 +2,6 @@ * [Summary](#summary) * [Introduction](#introduction) -* [Dependencies](#dependencies) * [Overview](#overview) * [Installation](#installation) * [Ingesting Files](#ingesting-files) @@ -11,7 +10,7 @@ * [Process](#process) * [Destination](#destination) * [The Process Section in Depth](#the-process-section-in-depth) - * [Running the File Migration](#Running-the-file-migration) + * [Running the File Migration](#running-the-file-migration) * [Ingesting Nodes](#ingesting-nodes) * [Complex Fields](#complex-fields) * [Running the node migration](#running-the-node-migration) @@ -31,7 +30,7 @@ This tutorial uses the configurations and code available in the [migrate_islando 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.) -The module also contains a Migrate process plugin that transforms strings into associative arrays. This is useful for populating multiple Contributor (field_linked_agent) fields. (See "[Typed Relation](../../user-documentation/metadata#typed-relation)" for more information on the Contributor field's type.) It will be available when this module is enabled, and the node migration uses it. It was written generically and will hopefully become part of Migrate Plus, but for now it is here. +The module also contains a Migrate process plugin that transforms strings into associative arrays. This is useful for populating multiple Contributor (field_linked_agent) fields. (See "[Typed Relation](../user-documentation/metadata.md#typed-relation)" for more information on the Contributor field's type.) It will be available when this module is enabled, and the node migration uses it. It was written generically and will hopefully become part of Migrate Plus, but for now it is here. When you are ready to create your actual migrations, the contents of this repository can function as a template for you to create the YAML files defining your own migrations. @@ -92,7 +91,7 @@ From your `islandora-playbook` directory, issue the following commands to enable - `git clone https://github.com/Islandora/migrate_islandora_csv` to clone down the repository from GitHub. - `drush en -y migrate_islandora_csv` to enable the module, installing the migrations as configuration. -Optionally, flush the cache (`drush cr`), so the migrations become visible in the GUI at Manage > Structure > Migrations > migrate_islandora_csv (http://localhost:8000/admin/structure/migrate/manage/migrate_islandora_csv/migrations) +Optionally, flush the cache (`drush cr`), so the migrations become visible in the [GUI](../user-documentation/glossary.md#gui) at Manage > Structure > Migrations > migrate_islandora_csv (http://localhost:8000/admin/structure/migrate/manage/migrate_islandora_csv/migrations) Now lets go migrate some files. diff --git a/docs/technical-documentation/migration-migrate-api.md b/docs/technical-documentation/migration-migrate-api.md index 1c9f28ae0..37955d1b0 100644 --- a/docs/technical-documentation/migration-migrate-api.md +++ b/docs/technical-documentation/migration-migrate-api.md @@ -31,7 +31,7 @@ Why use the Migrate API? - **migrate_7x_claw** - - A tool to get all your Islandora Legacy content migrated over - - Documentation section on [migrate_7x_claw](migrate-7x) + - Documentation section on [migrate_7x_claw](migrate-7x.md) #### Recap of migrate_islandora_csv diff --git a/docs/technical-documentation/migration-overview.md b/docs/technical-documentation/migration-overview.md index ad7ac82fd..8add721ef 100644 --- a/docs/technical-documentation/migration-overview.md +++ b/docs/technical-documentation/migration-overview.md @@ -35,7 +35,7 @@ Why use the Migrate API? - Updating metadata is as simple as: `drush mim node --update` -Two tools that use the Migrate API are [migrate_islandora_csv](migrate-csv.md) and [migrate_7x_claw](migrate-7x). +Two tools that use the Migrate API are [migrate_islandora_csv](migrate-csv.md) and [migrate_7x_claw](migrate-7x.md). Visit the [Migrate API](migration-migrate-api.md) migration documentation section for more details. diff --git a/docs/technical-documentation/rest-create.md b/docs/technical-documentation/rest-create.md index 2245c4253..17b56d95f 100644 --- a/docs/technical-documentation/rest-create.md +++ b/docs/technical-documentation/rest-create.md @@ -8,7 +8,7 @@ You will need to use one of the configured authorization methods to create content, media and/or files. -These are defined under [Authorization](./using-rest-endpoints.md#authorization) on the overview. +These are defined under [Authorization](rest-authorization.md) on the overview. ## Content (Nodes) @@ -26,7 +26,7 @@ For the Repository Item content type included in the Islandora Starter Site, the 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. @@ -106,7 +106,7 @@ So the body of the request will be: If you do provide credentials but don't have permission, you will receive a `403 Forbidden` response. -You can find more information about [Authorization here](./using-rest-endpoints.md#authorization) +You can find more information about [Authorization here](rest-authorization.md) 🍎 For example: diff --git a/docs/technical-documentation/rest-delete.md b/docs/technical-documentation/rest-delete.md index 454c3e3e6..77c108668 100644 --- a/docs/technical-documentation/rest-delete.md +++ b/docs/technical-documentation/rest-delete.md @@ -1,6 +1,6 @@ # 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. +Deleting is as easy as [getting](rest-get.md) resources and more difficult than [creating](rest-create.md) resources. If you can perform a GET request then you have the information required to perform a DELETE request. @@ -15,11 +15,11 @@ Check out the examples below. If you have restricted access to view your content, you will need to use one of the configured authorization methods to access your content, media and/or files. -These are defined under [Authorization](./using-rest-endpoints.md#authorization) on the overview. +These are defined under [Authorization](rest-authorization.md) on the overview. ## Content (Nodes) -You will need your _node id_, you can find more information in the [GET](./rest-get.md#content-nodes) documentation. +You will need your _node id_, you can find more information in the [GET](rest-get.md#content-nodes) documentation. A delete is simply the same request as a `GET` but sending a `DELETE` http verb. diff --git a/docs/technical-documentation/rest-get.md b/docs/technical-documentation/rest-get.md index 419f4f37e..b970ee4c0 100644 --- a/docs/technical-documentation/rest-get.md +++ b/docs/technical-documentation/rest-get.md @@ -9,7 +9,7 @@ If you have restricted access to view your content, you will need to use one of the configured authorization methods to access your content, media and/or files. -These are defined under [Authorization](./using-rest-endpoints.md#authorization) on the overview. +These are defined under [Authorization](rest-authorization.md) on the overview. ## Content (Nodes) diff --git a/docs/technical-documentation/rest-patch.md b/docs/technical-documentation/rest-patch.md index 50f55b4a2..b10c9a2af 100644 --- a/docs/technical-documentation/rest-patch.md +++ b/docs/technical-documentation/rest-patch.md @@ -4,7 +4,7 @@ PATCH requests allow you to update resources in place via a REST call. In this c Our example node is at `http://localhost:8000/node/3`. -If you perform a [GET](./rest-get.md) against another node or media you can see all of the fields, some of these are calculated (change based on others, i.e. "changed"), some are references to other entities (nodes, media, files in Drupal. i.e. "field_model") and others are pure text fields (i.e. "title"). +If you perform a [GET](rest-get.md) against another node or media you can see all of the fields, some of these are calculated (change based on others, i.e. "changed"), some are references to other entities (nodes, media, files in Drupal. i.e. "field_model") and others are pure text fields (i.e. "title"). The fields will be different between different node types and media types, but the syntax to update them is the same. @@ -16,9 +16,9 @@ The fields will be different between different node types and media types, but t If you have restricted access to view your content, you will need to use one of the configured authorization methods to access your content, media and/or files. -These are defined under [Authorization](./using-rest-endpoints.md#authorization) on the overview. +These are defined under [Authorization](rest-authorization.md) on the overview. -This with assume you have already created a [node](./rest-create.md#content-nodes) or [media](./rest-create.md#files-and-media) at some location. +This with assume you have already created a [node](rest-create.md#content-nodes) or [media](rest-create.md#files-and-media) at some location. ## Change a text field diff --git a/docs/technical-documentation/using-rest-endpoints.md b/docs/technical-documentation/using-rest-endpoints.md index 1c9653ca8..d639f9430 100644 --- a/docs/technical-documentation/using-rest-endpoints.md +++ b/docs/technical-documentation/using-rest-endpoints.md @@ -16,11 +16,11 @@ This screenshot shows the setup for resources, you can see the various HTTP meth ![REST configuration](../assets/rest-node-configuration.png) -1. [Authorization](./rest-authorization.md) -1. [Getting resources - GET](./rest-get.md) -1. [Creating resources - POST/PUT](./rest-create.md) -1. [Updating resources - PATCH](./rest-patch.md) -1. [Deleting resources - DELETE](./rest-delete.md) +1. [Authorization](rest-authorization.md) +1. [Getting resources - GET](rest-get.md) +1. [Creating resources - POST/PUT](rest-create.md) +1. [Updating resources - PATCH](rest-patch.md) +1. [Deleting resources - DELETE](rest-delete.md) ## Further Reading diff --git a/docs/tutorials/create-update-views.md b/docs/tutorials/create-update-views.md index 3f06d47d1..7bd9fe9d4 100644 --- a/docs/tutorials/create-update-views.md +++ b/docs/tutorials/create-update-views.md @@ -9,7 +9,7 @@ Views are powerful content filters that enable you to present Islandora (and oth ## Before you start -- The following How-To assumes that you are using the (optional) **[Islandora Starter Site](https://github.com/Islandora/islandora-starter-site)** configuration. This configuration is deployed automatically if you build your Islandora site using the [Ansible Playbook](../installation/playbook), [ISLE with Docker-Compose](../installation/docker-compose), or are using the [sandbox or a Virtual Machine Image](https://sandbox.islandora.ca/) +- The following How-To assumes that you are using the (optional) **[Islandora Starter Site](https://github.com/Islandora/islandora-starter-site)** configuration. This configuration is deployed automatically if you build your Islandora site using the [Ansible Playbook](../installation/playbook.md), [ISLE](../installation/docker/docker-introduction.md), or are using the [sandbox or a Virtual Machine Image](https://sandbox.islandora.ca/) - This How-To assumes familiarity with Drupal terms such as [Node](https://www.drupal.org/docs/7/nodes-content-types-and-fields/about-nodes), [Content Type](https://www.drupal.org/docs/7/nodes-content-types-and-fields/working-with-content-types-and-fields-drupal-7-and-later), and [Media](https://www.drupal.org/docs/8/core/modules/media). ## How to modify an existing view diff --git a/docs/user-documentation/access-control.md b/docs/user-documentation/access-control.md index 5b4c72df2..0ca902aef 100644 --- a/docs/user-documentation/access-control.md +++ b/docs/user-documentation/access-control.md @@ -27,7 +27,7 @@ Known strategies for implementing access control in Drupal include: 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: @@ -98,7 +98,7 @@ The Search API Module, which connects Drupal to Solr, provides configuration so Both are enabled out of the box in the Islandora Starter Site. 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. !!! warning "Solr Admin Client" - Anyone with access to the Solr Admin Client may see the full contents of the index, regardless of permissions. If this is not desired, you should restrict access to the Solr endpoint and GUI. By default, the Islandora Playbook exposes Solr at `http://localhost:8983/solr/`. ISLE-DC on the other hand can expose or not expose individual services, including Solr. Since [December 2021](https://github.com/Islandora-Devops/isle-dc/commit/996b46cc2b7aa617f1aa3a2b8089268afbcdf9bf) this has been available as an option in the `.env` file and since that time, Solr (and some other services) are not exposed by default. + Anyone with access to the Solr Admin Client may see the full contents of the index, regardless of permissions. If this is not desired, you should restrict access to the Solr endpoint and [GUI](glossary.md#gui). By default, the Islandora Playbook exposes Solr at `http://localhost:8983/solr/`. ISLE-DC on the other hand can expose or not expose individual services, including Solr. Since [December 2021](https://github.com/Islandora-Devops/isle-dc/commit/996b46cc2b7aa617f1aa3a2b8089268afbcdf9bf) this has been available as an option in the `.env` file and since that time, Solr (and some other services) are not exposed by default. ## Group (contributed module) diff --git a/docs/user-documentation/advanced-search.md b/docs/user-documentation/advanced-search.md index 677bfe8a1..ea4044071 100644 --- a/docs/user-documentation/advanced-search.md +++ b/docs/user-documentation/advanced-search.md @@ -11,14 +11,14 @@ - [Paging](#paging) - [Sorting](#sorting) - [Configure Facets](#configure-facets) - - [Include / Exclude Facets](#include--exclude-facets) + - [Include / Exclude Facets](#include-exclude-facets) - [Configure Blocks](#configure-blocks) - [Advanced Search Block](#advanced-search-block) ## Introduction -Advanced Search adds additional functionality beyond the [basic Solr search](../user-documentation/searching.md). It enables the use +Advanced Search adds additional functionality beyond the [basic Solr search](searching.md). It enables the use of Ajax with search blocks, facets, and search results. ![animated gif demonstrating advanced search in action](../assets/advanced_search_demo.gif) @@ -58,7 +58,7 @@ You can set the following configuration at **Administration** >> **Configuration ## Configuring Solr Please review -[Configure Search](../user-documentation/searching.md) before continuing. The following assumes you already have a working Solr and the +[Configure Search](searching.md) before continuing. The following assumes you already have a working Solr and the Drupal Search API setup. ## Configure collection search diff --git a/docs/user-documentation/file-viewers.md b/docs/user-documentation/file-viewers.md index a2b1d96ef..19d6591c0 100644 --- a/docs/user-documentation/file-viewers.md +++ b/docs/user-documentation/file-viewers.md @@ -2,7 +2,7 @@ ## What are viewers? -[Viewers](../user-documentation/glossary#viewer) allow site builders to display files in interactive JavaScript-based widgets, that provide functionality like zooming in/out, turning pages, playing/pausing, viewing in full screen, etc. +[Viewers](glossary.md#viewer) allow site builders to display files in interactive JavaScript-based widgets, that provide functionality like zooming in/out, turning pages, playing/pausing, viewing in full screen, etc. In Drupal, a common way to implement a viewer is through a [module](glossary.md#module) that provides a Drupal field formatter that interfaces with the appropriate JavaScript 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). Some viewer modules in Islandora also provide a block, that can display appropriate files based on the context. diff --git a/docs/user-documentation/glossary.md b/docs/user-documentation/glossary.md index fad65474d..0df9e73d4 100644 --- a/docs/user-documentation/glossary.md +++ b/docs/user-documentation/glossary.md @@ -23,10 +23,10 @@ Also API; a connection between computers or between computer programs. It is a t 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. ## Bundle -A bundle is the generic name for a sub-type of a [Content Entity](#content-entity) type in [Drupal](#drupal). To illustrate: Node and Taxonomy Term are both names of Content Entity types, and both have sub-types ("bundles"). The bundles of Node are called ["Content Types"](#content-types) and the bundles of [Taxonomy Term](#taxonomy-term) are called ["Vocabularies"](#vocabulary). Each bundle includes its own configurations of what [fields](#field) are present on the bundle and how they are entered and displayed. A bundle is thus part of the [configuration](#configuration) of your site. Some Content Entity Types, such as User, do not have bundles. +A bundle is the generic name for a sub-type of a [Content Entity](#content-entity) type in [Drupal](#drupal). To illustrate: Node and Taxonomy Term are both names of Content Entity types, and both have sub-types ("bundles"). The bundles of Node are called ["Content Types"](#content-type) and the bundles of [Taxonomy Term](#taxonomy-term) are called ["Vocabularies"](#vocabulary). Each bundle includes its own configurations of what [fields](#field) are present on the bundle and how they are entered and displayed. A bundle is thus part of the [configuration](#configuration) of your site. Some Content Entity Types, such as User, do not have bundles. ## Cantaloupe -[Cantaloupe](https://cantaloupe-project.github.io) is an image server written in Java. It implements the [IIIF](#iiif) Image API, which means it handles deep zooming of large images and other image manipulations. It is required to serve images to some [viewers](#viewers) such as [Mirador](#mirador) and [OpenSeadragon](#openseadragon). +[Cantaloupe](https://cantaloupe-project.github.io) is an image server written in Java. It implements the [IIIF](#iiif) Image API, which means it handles deep zooming of large images and other image manipulations. It is required to serve images to some [viewers](#viewer) such as [Mirador](#mirador) and [OpenSeadragon](#openseadragon). ## 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. @@ -56,24 +56,24 @@ See also: [Content Entity](#content-entity) Contrast: [Configuration](#configuration) -In [Drupal](#drupal), your content is the total set of things that have been created or uploaded "as content" in your website. This includes all [content entities](#content-entities) - the actual nodes, media, files, taxonomy terms, etc, but does not include anything that is [configuration](#configuration). Content can be exported and imported, but only between sites with exactly the same configuration. +In [Drupal](#drupal), your content is the total set of things that have been created or uploaded "as content" in your website. This includes all [content entities](#content-entity) - the actual nodes, media, files, taxonomy terms, etc, but does not include anything that is [configuration](#configuration). Content can be exported and imported, but only between sites with exactly the same configuration. -Sometimes, "Content" is used to refer to [Nodes](#nodes) but not other content entities. This is the case when creating a new [View](#view) and one of the options is to make a view of "Content". +Sometimes, "Content" is used to refer to [Nodes](#node) but not other content entities. This is the case when creating a new [View](#view) and one of the options is to make a view of "Content". ## Content entity See also: [Content](#content) Contrast: [Configuration entity](#configuration-entity) -In [Drupal](#drupal), content entities are the actual [nodes](#node), [media](#media), [taxonomy terms](#taxonomy-term), users, comments, and files that you've created on your site. For example, you may have 223 nodes, 534 media, 1000 taxonomy terms, 14 users, and 535 files in your site - those counts represent the numbers of content entities present in your site. "Node", "Media", "Taxonomy term" etc. are the high-level "types" of content entities. Some of these types have sub-types which are called [bundles](#bundles). +In [Drupal](#drupal), content entities are the actual [nodes](#node), [media](#media), [taxonomy terms](#taxonomy-term), users, comments, and files that you've created on your site. For example, you may have 223 nodes, 534 media, 1000 taxonomy terms, 14 users, and 535 files in your site - those counts represent the numbers of content entities present in your site. "Node", "Media", "Taxonomy term" etc. are the high-level "types" of content entities. Some of these types have sub-types which are called [bundles](#bundle). -Content entities should not be confused with [content types](#content-types), which are [bundles](#bundles) of [nodes](#nodes), and are part of a site's [configuration](#configuration). +Content entities should not be confused with [content types](#content-type), which are [bundles](#bundle) of [nodes](#node), and are part of a site's [configuration](#configuration). ## Content model Deprecated concept used in Islandora Legacy; see [Islandora Model](#islandora-model). ## Content type -A type of [Node](#node). Content types are the "[bundles](#bundle)" of Nodes, which are a type of [Content Entity](#content-entity in [Drupal](#drupal). A content type importantly defines a set of [fields](#field) and how they are displayed. While a content type describes a type of content entity, the information that makes up the content type itself is all part of your site's [configuration](#configuration). +A type of [Node](#node). Content types are the "[bundles](#bundle)" of Nodes, which are a type of [Content Entity](#content-entity) in [Drupal](#drupal). A content type importantly defines a set of [fields](#field) and how they are displayed. While a content type describes a type of content entity, the information that makes up the content type itself is all part of your site's [configuration](#configuration). The standard Drupal Content types are 'Article' and 'Basic page'. _Islandora Starter Site_ adds 'Repository Item' as a Content type, defining metadata fields typically used to describe digital resources. You can easily create your own content types. @@ -133,6 +133,9 @@ Flysystem is a filesystem abstraction library for PHP. Islandora uses Flysystem ## GLAM Acronym for "galleries, libraries, archives, and museums". +## GUI +Acronym for "Graphical User Interface". Often refers to taking actions through Drupal's administrative interface in a web browser as opposed to effecting the same changes through Drush or programmatically. + ## Greenfield An installation without legacy constraints. Usually refers to a brand new system where users load new content, as opposed to migrating content from a previous system. @@ -177,6 +180,25 @@ The Islandora Starter Site is a way to install Drupal that provides a functional ## Islandora model +"Islandora Models" is a taxonomy vocabulary that comes by default with Islandora. As of 2024-08-12, it includes the following terms: + +- Audio +- Binary +- Collection +- Compound Object +- Digital Document +- Image +- Newspaper +- Page +- Paged Content +- Publication Issue +- Video + +The Repository Item Content type (part of the Islandora Starter Site) has a “Model” field instance which is an Entity reference field configured to be populated by references to terms in this vocabulary. The “Model” field is one of only two required fields on the Repository Item in the default settings. + +Contexts and other system code (such as themes) may use this field to control the display and behavior of different Repository Item types. + + ## Islandora playbook A set of human-readable [YAML](#yaml) files, containing instructions for automatically configuring a server environment and installing the different components of the Islandora software stack. The instructions recorded in Playbook are executed by [Ansible](#ansible). The Islandora Playbook for Ansible is one of the installation methods currently supported by the Islandora community. @@ -252,7 +274,7 @@ The term 'Resource node' is specific to Islandora. Typically, Resource nodes in 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 term -A [Drupal](#drupal) [Content Entity](#content-entity) of the type 'taxonomy term'. Taxonomy terms belong to [vocabularies](#vocabularies) which define what [fields](#fields) are available and how they behave. Drupal generally uses [terms contained in taxonomies or vocabularies](#taxonomy-term) to classify content (tag or category). Taxonomy terms are used in Islandora to establish locally controlled vocabularies for describing resources, for instance for standardised spellings of names or subject terms. +A [Drupal](#drupal) [Content Entity](#content-entity) of the type 'taxonomy term'. Taxonomy terms belong to [vocabularies](#vocabulary) which define what [fields](#field) are available and how they behave. Drupal generally uses [terms contained in taxonomies or vocabularies](#taxonomy-term) to classify content (tag or category). Taxonomy terms are used in Islandora to establish locally controlled vocabularies for describing resources, for instance for standardised spellings of names or subject terms. ## Tesseract [Tesseract](https://github.com/tesseract-ocr/tesseract) is an open-source OCR (Optical Character Recognition) software. It can perform OCR in multiple languages. It can produce OCR (plain text) and [hOCR](#hocr) (HTML, which includes positional data). In Islandora, Tesseract is provided by the [Crayfish](#crayfish) [Microservice](#microservice), [Hypercube](#hypercube). @@ -268,7 +290,7 @@ Software and asset files (images, CSS, PHP code, and/or templates) that determin See [Views Bulk Operations](#views-bulk-operations). ## View -Drupal Views let you query the database to generate lists of [content](#content-entity), and format them as lists, tables, slideshows, maps, [blocks](#blocks), and many more. The Views UI module, part of Drupal Core, provides a powerful administrator interface for creating and editing views without any code. There is a large ecosystem of extension modules for Views. +Drupal Views let you query the database to generate lists of [content](#content-entity), and format them as lists, tables, slideshows, maps, blocks, and many more. The Views UI module, part of Drupal Core, provides a powerful administrator interface for creating and editing views without any code. There is a large ecosystem of extension modules for Views. Views power many of the Islandora features, including [viewers](#viewer), [IIIF Manifests](#iiif-manifest), and search. diff --git a/docs/user-documentation/iiif.md b/docs/user-documentation/iiif.md index 98768bf4e..673f85d37 100644 --- a/docs/user-documentation/iiif.md +++ b/docs/user-documentation/iiif.md @@ -4,7 +4,7 @@ At a practical level, because Islandora supports several of the IIIF specifications, we can: -- Zoom, pan, and rotate images within a IIIF-compliant [viewer](../file_viewers) like OpenSeadragon or Mirador +- Zoom, pan, and rotate images within a IIIF-compliant [viewer](file-viewers.md) like OpenSeadragon or Mirador - 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 capability 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: @@ -16,7 +16,7 @@ At a practical level, because Islandora supports several of the IIIF specificati If you're not using one of our provisioning tools, you will need to: - install and configure the Cantaloupe (or another IIIF-compliant) image server -- install a [viewer](../file-viewers) module and configure it to point to the IIIF Image server location +- install a [viewer](file-viewers.md) module and configure it to point to the IIIF Image server location - if using the viewer to show single images, configure it as a file formatter in one of the display modes for your media - if using the viewer to show multi-paged content, install the [Islandora IIIF](https://github.com/Islandora/islandora/tree/2.x/modules/islandora_iiif) module and create a IIIF view (see the one in the Starter Site as an example), then configure the viewer's _block_ to show up where desired (see below for details on how it could be configured) @@ -26,7 +26,7 @@ If you're not using one of our provisioning tools, you will need to: ![Mirador rendering book pages](../assets/iiif-mirador-paged.png) ### Contexts and Mirador (default) -The Islandora Starter Site uses a Context to automatically use the IIIF Presentation API with the Mirador viewer for showing [paged content](../paged-content). +The Islandora Starter Site uses a Context to automatically use the IIIF Presentation API with the Mirador viewer for showing [paged content](paged-content.md). To use this Context, give your book or newspaper (or other paged content) a model of "Paged Content" or "Publication Issue". To double-check this, in the _Mirador Block - Multipaged items_ Context, you should see those terms used in the "Node has term" condition (you can register more than one term there, and having one of these on your node will activate this Context). Now, when you view a paged content Islandora node, you will see service files of all of its child pages (assuming you have added some child pages to the object) in the Mirador viewer as illustrated above. diff --git a/docs/user-documentation/metadata-harvesting.md b/docs/user-documentation/metadata-harvesting.md index 9e74911ff..c3a56c315 100644 --- a/docs/user-documentation/metadata-harvesting.md +++ b/docs/user-documentation/metadata-harvesting.md @@ -33,7 +33,7 @@ However, - any field mappings that are not part of the Dublin Core namespace will be filtered out. - any field mappings using Dublin Core Terms (e.g. http://purl.org/dc/terms/extent) will be mapped to their Dublin Core Elements equivalents (e.g. http://purl.org/dc/elements/1.1/format) -- the ability to vary the mappings in [Typed Relation](../../user-documentation/metadata#typed-relation) fields by relationship, used in JSON-LD mappings to Blazegraph and Fedora, is not available. If you want to expose data in a Typed Relation field to OAI-PMH, you must provide a DC mapping for that field in the RDF mapping. By default, the Repository Item RDF mapping does not include a mapping for the Contributors field (field_linked_agent). +- the ability to vary the mappings in [Typed Relation](metadata.md#typed-relation) fields by relationship, used in JSON-LD mappings to Blazegraph and Fedora, is not available. If you want to expose data in a Typed Relation field to OAI-PMH, you must provide a DC mapping for that field in the RDF mapping. By default, the Repository Item RDF mapping does not include a mapping for the Contributors field (field_linked_agent). !!! tip "Field values not showing up in OAI-DC record?" diff --git a/docs/user-documentation/metadata.md b/docs/user-documentation/metadata.md index 00139c8a8..d581de0bd 100644 --- a/docs/user-documentation/metadata.md +++ b/docs/user-documentation/metadata.md @@ -14,38 +14,38 @@ As described in the [resource nodes section](content-models.md#resource-nodes), ## Content Types -In Drupal, Nodes come in different subtypes called [Content Type](../user-documentation/glossary#content-type). These let you define a type of content ("Article" and "Basic Page" are Drupal defaults and "Repository Item" is an Islandora specific example), the set of metadata fields that are attached to that content, and how those fields can be edited and displayed. Each [Content Type](../user-documentation/glossary#content-type) is essentially a metadata profile that can be used for a piece of web content, or to describe a digital resource. You can create your own [Content Types](../user-documentation/glossary#content-type) for your Islandora project or use a pre-defined one like Repository Item from the Islandora Starter Site. We will go over the metadata specific aspects of Content Types below, but for a fuller walk-through of creating a [Content Type](../user-documentation/glossary#content-type) [see here](content-types.md#create-a-content-type). +In Drupal, Nodes come in different subtypes called [Content Types](glossary.md#content-type). These let you define a type of content ("Article" and "Basic Page" are Drupal defaults and "Repository Item" is an Islandora specific example), the set of metadata fields that are attached to that content, and how those fields can be edited and displayed. Each content type is essentially a metadata profile that can be used for a piece of web content, or to describe a digital resource. You can create your own content types for your Islandora project or use a pre-defined one like Repository Item from the Islandora Starter Site. We will go over the metadata specific aspects of Content Types below, but see [our tutorial for a fuller walk-through of creating a content type](content-types.md#create-a-content-type). -Not all [Content Types](../user-documentation/glossary#content-type) in your Drupal site need be [Islandora Resource Nodes](content-models.md#resource-nodes). Making a [Content Type](../user-documentation/glossary#content-type) a Resource Node will associate Islandora specific behaviours (such as syncing to Fedora or causing derivatives to be generated) with it. The decision to make a content an Islandora resource node is left to the discretion of the site manager. In Islandora, a "resource node" is usually considered a descriptive record for "a thing", and is conceptually similar to an "Islandora Object" in 7.x, i.e. a "Fedora Object" in Fedora 3.x and below. Read more on configuring a [Content Type](../user-documentation/glossary#content-type) to be treated as a [Resource Node](content-types.md#create-a-content-type). +Not all content types in your Drupal site need be [Islandora Resource Nodes](content-models.md#resource-nodes). Making a content type a Resource Node will associate Islandora specific behaviours (such as syncing to Fedora or causing derivatives to be generated) with it. The decision to make a content an Islandora resource node is left to the discretion of the site manager. In Islandora, a "resource node" is usually considered a descriptive record for "a thing", and is conceptually similar to an "Islandora Object" in 7.x, i.e. a "Fedora Object" in Fedora 3.x and below. Read more on configuring a content type to be treated as a Resource Node. ### Fields -The administrator will define the fields that are associated with a specific [Content Type](../user-documentation/glossary#content-type). The same fields can be applied to different [Content Type](../user-documentation/glossary#content-type), but the field display and editing configurations are unique to each [Content Type](../user-documentation/glossary#content-type). The names and definitions of these fields are specific to Drupal and do not have to correspond to an outside metadata schema. You will give each field a Label, Machine Name, and a specific [Field Type](#field-types), like Text, Integer, EDTF, or Entity Reference (see below). Specific to the Field Type you will then define the maximum length of the field, the number of values it can contain, and what taxonomies it might link to. +The administrator will define the fields that are associated with a specific content type . The same fields can be applied to different content type , but the field display and editing configurations are unique to each content type. The names and definitions of these fields are specific to Drupal and do not have to correspond to an outside metadata schema. You will give each field a Label, Machine Name, and a specific [Field Type](#field-types), like Text, Integer, EDTF, or Entity Reference (see below). Specific to the Field Type you will then define the maximum length of the field, the number of values it can contain, and what taxonomies it might link to. Fields can be added under **Administration** >> **Structure** >> **Content types** >> _Your Content Type's Name_ >> **Manage fields** (/admin/structure/types/your_type/fields). This tab will list all Fields, their Label, Machine Name, Field Type, and give you the option to make what edits to the definition of that field that you can. -Certain decisions must be made when fields are created, and before any content is added, because they can not be changed later. Field Type can not be changed, so you wouldn't be able to change a text field to a taxonomy field after creation. The field's machine name also can't be changed. The number of values allowed in a field or its maximum length or type of item to reference (in the case of Entity reference fields) can not be changed after content has been added. You can, however, always add new fields to a [Content Type](../user-documentation/glossary#content-type), even after content has been added. +Certain decisions must be made when fields are created, and before any content is added, because they can not be changed later. Field Type can not be changed, so you wouldn't be able to change a text field to a taxonomy field after creation. The field's machine name also can't be changed. The number of values allowed in a field or its maximum length or type of item to reference (in the case of Entity reference fields) can not be changed after content has been added. You can, however, always add new fields to a content type, even after content has been added. !!! islandora "7.x Migration Note: What About My MODS XML?" - Even when using the Islandora Starter Site, there is no "official" metadata schema in Islandora. Where Islandora 7.x used MODS, and took advantage of its hierarchical/extensible structure, Drupal Fields are a flat structure working with distinct, individual elements. You can base your fields on those in MODS, or any other schema, but that structure is up to you. The Metadata Interest Group has developed a sample [MODS-Drupal-RDF mapping](https://docs.google.com/spreadsheets/d/18u2qFJ014IIxlVpM3JXfDEFccwBZcoFsjbBGpvL0jJI/edit?pli=1#gid=0), which provides a structure upon which you can build your Drupal fields. It is used by the Repository Item [Content Type](../user-documentation/glossary#content-type) in the Islandora Starter Site. + Even when using the Islandora Starter Site, there is no "official" metadata schema in Islandora. Where Islandora 7.x used MODS, and took advantage of its hierarchical/extensible structure, Drupal Fields are a flat structure working with distinct, individual elements. You can base your fields on those in MODS, or any other schema, but that structure is up to you. The Metadata Interest Group has developed a sample [MODS-Drupal-RDF mapping](https://docs.google.com/spreadsheets/d/18u2qFJ014IIxlVpM3JXfDEFccwBZcoFsjbBGpvL0jJI/edit?pli=1#gid=0), which provides a structure upon which you can build your Drupal fields. It is used by the Repository Item content type in the Islandora Starter Site. -!!! tip "You Cannot Change The [Content Type](../user-documentation/glossary#content-type) Of A Node" - Once a node is created, its [Content Type](../user-documentation/glossary#content-type) cannot be changed. Just as you are unable to change many aspects of a Field once it has been created, once a node has been created it is now permanently of that [Content Type](../user-documentation/glossary#content-type) and the fields associated with it. At that point your only option would be to create a new node of the intended content type, map the field values (programmatically or by copy-paste), and update any media or children that refer to the old node to refer to the new one. +!!! tip "you cannot change the Content Type of a node" + Once a node is created, its content type cannot be changed. Just as you are unable to change many aspects of a Field once it has been created, once a node has been created it is now permanently of that content type and the fields associated with it. At that point your only option would be to create a new node of the intended content type, map the field values (programmatically or by copy-paste), and update any media or children that refer to the old node to refer to the new one. -The Islandora Starter Site provides a **Repository Item** [Content Type](../user-documentation/glossary#content-type) that can be used as a structure to build your collection around, or it can be used as a sample to see how fields in [Content Type](../user-documentation/glossary#content-type) work. It pre-defines fields, including **Alternative Title** and **Date Issued** that could be of use in many digital repositories. The full list of fields and their field types can be seen in the screenshot below. +The Islandora Starter Site provides a **Repository Item** content type that can be used as a structure to build your collection around, or it can be used as a sample to see how fields in content types work. It pre-defines fields, including **Alternative Title** and **Date Issued** that could be of use in many digital repositories. The full list of fields and their field types can be seen in the screenshot below. -![Screenshot of the "Manage fields" page for the "Repository Item" [Content Type](../user-documentation/glossary#content-type) from Islandora Starter Site.](../assets/metadata_content_type_screenshot.png) +![Screenshot of the "Manage fields" page for the "Repository Item" content type from Islandora Starter Site.](../assets/metadata_content_type_screenshot.png) !!! tip "Titles Aren't Conventionally-Configurable Fields" - The field *title* is built-in to each [Content Type](../user-documentation/glossary#content-type) by default, and can be referenced in views, templates, and indexing like other fields, but it cannot be configured like other fields. The only aspect you can change about *title* is its label. It has a built-in maximum length of 255 characters which cannot be changed. If your content requires longer titles we recommend you create a separate "long_title" field to store the full title and reserve the default title field for a display title. + The field *title* is built-in to each content type by default, and can be referenced in views, templates, and indexing like other fields, but it cannot be configured like other fields. The only aspect you can change about *title* is its label. It has a built-in maximum length of 255 characters which cannot be changed. If your content requires longer titles we recommend you create a separate "long_title" field to store the full title and reserve the default title field for a display title. There is a contributed module called [Node Title Length](https://www.drupal.org/project/title_length), which allows an administrator to configure the length of the title field in the core node table. However, this only works on nodes (not media or other entities) and involves meddling in a core Drupal database schema, which makes some people uneasy. ### Content Entry Form/Manage Form Display -After creating the Fields for a [Content Type](../user-documentation/glossary#content-type) you'll be able to manage the form used by content creators to create Nodes of that [Content Type](../user-documentation/glossary#content-type). On the **Manage form display** tab you'll be able to edit this form by arranging the order of the fields, choose what Widget will define the entry options for a field, and then set certain settings for that Widget. Fields are arranged by dragging the cross to the left of the **Label**. They can also be removed from the form, but not the [Content Type](../user-documentation/glossary#content-type), by dragging them to the bottom of the list under the **Disabled** heading. Widgets are defined by Field Type, so an Entity reference field could use auto complete, a select list, or even checkboxes, and are chosen from a drop-down list. The widget settings are accessed through the gear on the far right of a row and may allow you to set the size of an entry field, whether the field *Label* is displayed, or if you use placeholder text. +After creating the Fields for a content type you'll be able to manage the form used by content creators to create Nodes of that content type. On the **Manage form display** tab you'll be able to edit this form by arranging the order of the fields, choose what Widget will define the entry options for a field, and then set certain settings for that Widget. Fields are arranged by dragging the cross to the left of the **Label**. They can also be removed from the form, but not the content type, by dragging them to the bottom of the list under the **Disabled** heading. Widgets are defined by Field Type, so an Entity reference field could use auto complete, a select list, or even checkboxes, and are chosen from a drop-down list. The widget settings are accessed through the gear on the far right of a row and may allow you to set the size of an entry field, whether the field *Label* is displayed, or if you use placeholder text. ### Content Display/Manage Display @@ -60,7 +60,7 @@ hidden. See also: [MIG Presentation on Taxonomies](https://docs.google.com/presentation/d/1LfpU6H4qxXtnYQPFntwMNtsgtU30yzp2MxwKKAllUOc/edit?usp=sharing) by Kristina Spurgin, 2021-07-19 -In Drupal, _Taxonomy Vocabularies_ (or simply _Vocabularies_) are also entity subtypes that define a set of fields and their configurations. Whereas instances of content types are called _nodes_, items in a vocabulary are called _taxonomy terms_ (or simply _terms_). Traditionally, taxonomy terms are used to classify content in Drupal. For instance, the Article [Content Type](../user-documentation/glossary#content-type) includes a field `field_tags` that can refer to terms in the Tags vocabulary. +In Drupal, _Taxonomy Vocabularies_ (or simply _Vocabularies_) are also entity subtypes that define a set of fields and their configurations. Whereas instances of content types are called _nodes_, items in a vocabulary are called _taxonomy terms_ (or simply _terms_). Traditionally, taxonomy terms are used to classify content in Drupal. For instance, the Article content type includes a field `field_tags` that can refer to terms in the Tags vocabulary. There are two ways that users can interact with taxonomies: they can be "closed," e.g. a fixed list to pick from in a dropdown, or "open," e.g. `field_tags` where users can enter new terms, which are created on the fly. This is not set on the _vocabulary_ itself, but in the configuration of the field (typically on a node). Terms within vocabularies have an ordering, and can have hierarchical structure, but do not need to. @@ -83,7 +83,7 @@ The Controlled Access Terms module provides additional vocabularies: - Resource Types - Subject -Each of these vocabularies has its own set of fields allowing repositories to further describe them. The Repository Item [Content Type](../user-documentation/glossary#content-type) has fields that can reference terms in these vocabularies. See 'Entity Reference fields' in the 'Field Types' section below. +Each of these vocabularies has its own set of fields allowing repositories to further describe them. The Repository Item content type has fields that can reference terms in these vocabularies. See 'Entity Reference fields' in the 'Field Types' section below. The vocabularies provided by default are a starting point, and a repository administrator can create whatever vocabularies are desired. @@ -379,7 +379,7 @@ will map the Repository item's *title* field to `http://purl.org/dc/terms/title` Unlike other fields, which can be assigned RDF predicates in RDF Mapping YAML files, a typed relation field uses a different predicate depending on the chosen type. These predicates are assigned using the 'keys' in the key\|value configuration. The key must be formatted `namespace:predicate`, e.g. `relators:act`. !!! bug Current RDF limitations - The Drupal RDF module is currently limited in the complexity of graph you can generate. All fields must be mapped directly to either a literal value, or a reference to another [Content Type](../user-documentation/glossary#content-type) instance, media type instance, or taxonomy term instance. It is not currently possible to create [blank nodes](https://en.wikipedia.org/wiki/Blank_node) or [skolemized nodes](https://www.w3.org/2011/rdf-wg/wiki/Skolemisation) for nesting fields under more complex structures. + The Drupal RDF module is currently limited in the complexity of graph you can generate. All fields must be mapped directly to either a literal value, or a reference to another content type instance, media type instance, or taxonomy term instance. It is not currently possible to create [blank nodes](https://en.wikipedia.org/wiki/Blank_node) or [skolemized nodes](https://www.w3.org/2011/rdf-wg/wiki/Skolemisation) for nesting fields under more complex structures. ## Batch editing metadata in fields diff --git a/docs/user-documentation/multilingual.md b/docs/user-documentation/multilingual.md index c83b204e9..1c4ae63c7 100644 --- a/docs/user-documentation/multilingual.md +++ b/docs/user-documentation/multilingual.md @@ -35,7 +35,7 @@ Go back to home, you should be able to view content in the language selected in ### 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. -Each field label needs to be translated through the Drupal GUI (Configuration >> Regional and Language: User interface translation). Alternatively, you can import existing 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](glossary.md#gui) (Configuration >> Regional and Language: User interface translation). Alternatively, you can import existing 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) diff --git a/docs/user-documentation/paged-content.md b/docs/user-documentation/paged-content.md index 790f1870c..5483f2966 100644 --- a/docs/user-documentation/paged-content.md +++ b/docs/user-documentation/paged-content.md @@ -25,7 +25,7 @@ resource node and _Page_ for the Islandora Model of the child resource node. Aft child resource nodes have "service file" media (either generated via the built-in derivative creation or added manually), they will be included in the Mirador paginated viewer displayed on the parent resource node's page. -(See the [IIIF Documentation](../iiif#using-iiif-in-islandora) +(See the [IIIF Documentation](iiif.md#using-iiif-in-islandora) for more details on controlling the viewer's behavior.) ![Screenshot of a Paged Content resource node displaying the Mirador viewer with the first child resource node displayed.](../assets/paged_content_mirador.png) diff --git a/docs/user-documentation/versioning.md b/docs/user-documentation/versioning.md index 4bb187487..33215a434 100644 --- a/docs/user-documentation/versioning.md +++ b/docs/user-documentation/versioning.md @@ -3,17 +3,16 @@ As a user of an Islandora repository, you may be wondering - Is this content bei 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" - 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). + 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.md). ## Drupal Revisioning -Drupal provides a concept of revisions which allows you to track the differences between multiple versions of your content and revert to older ones. The list of revisions for a node are available at [http://localhost:8000/node/1/revisions](http://localhost:8000/node/1/revisions). There are [Drupal docs](https://www.drupal.org/docs/8/administering-a-drupal-8-site/node-revisions) on revisioning. Media objects are also versioned in Drupal but there is not a UI component for this - [see related issue](https://github.com/Islandora/documentation/issues/1035). +Drupal provides a concept of revisions which allows you to track the differences between multiple versions of your content and revert to older ones. The list of revisions for a node, media, or taxonomy term are available at the entity's page, with `/revisions` appended to the URL. There are [Drupal docs](https://www.drupal.org/docs/8/administering-a-drupal-8-site/node-revisions) on revisioning. ## Fedora and Memento Fedora implements the [Memento](http://mementoweb.org/about/) specification for versioning resources, which is a time-based HTTP framework. Fedora provides [documentation](https://wiki.lyrasis.org/display/FEDORA5x/Versioning) as well as an [API implementation](https://wiki.lyrasis.org/display/FEDORA5x/RESTful+HTTP+API+-+Versioning). - ## Basic Data Flow 1. A node or media object is created or updated in Drupal. 2. When an entity is revisionable, and it isn't the initial creation, it [adds a flag](https://github.com/Islandora/islandora/blob/8.x-1.x/src/EventGenerator/EventGenerator.php#L109) to the event object that gets passed to Alpaca. 3. The [islandora-indexing-fcrepo module](https://github.com/Islandora/Alpaca/tree/dev/islandora-indexing-fcrepo) of Alpaca looks for that flag and fires a call to the [versioning endpoint](https://github.com/Islandora/Crayfish/blob/dev/Milliner/src/app.php#L52) of [Milliner](https://github.com/Islandora/Crayfish/tree/dev/Milliner). -4. Milliner uses the [Chullo library](https://github.com/Islandora/chullo/blob/dev/src/FedoraApi.php#L320) to [create a version](https://github.com/Islandora/Crayfish/blob/dev/Milliner/src/Service/MillinerService.php#L551) in Fedora. \ No newline at end of file +4. Milliner uses the [Chullo library](https://github.com/Islandora/chullo/blob/dev/src/FedoraApi.php#L320) to [create a version](https://github.com/Islandora/Crayfish/blob/dev/Milliner/src/Service/MillinerService.php#L551) in Fedora. diff --git a/mkdocs.yml b/mkdocs.yml index 03b3ad258..22b7320a1 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -121,7 +121,7 @@ nav: # 'non-technical' user in mind who wants to test. The Manual installation # guides mention that users will need additional knowledge about server administration. - 'Release Notes': - - '8.x-2.0 Release Notes': 'release-notes/8.x-2.0.md' + - '8.x-2.0 Release Notes': 'release_notes/8.x-2.0.md' - 'Older Release Notes': 'https://github.com/Islandora/documentation/tree/main/docs/release_notes' - 'Install a Demo': 'installation/install-a-demo.md' - 'Docker':