Skip to content

Commit

Permalink
Merge branch 'master' into 0489-multimedia-canvas
Browse files Browse the repository at this point in the history
  • Loading branch information
triplingual committed Jul 18, 2024
2 parents 2fb9bdb + 95e72d1 commit e860842
Show file tree
Hide file tree
Showing 8 changed files with 68 additions and 9 deletions.
2 changes: 0 additions & 2 deletions .github/ISSUE_TEMPLATE/recipe-issue-template.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,5 @@ assignees: ''
## Recipe Name
(this will usually be the same as the issue name)

(Provide link to `index.md` of the issue, if available. To be filled in after issue is created - you need the issue number!)

## Use case
(This might be the same text as the use case section of the issue, if your recipe is already well understood. Or it might require development in the issue discussion and be more provisional in nature).
2 changes: 2 additions & 0 deletions _data/topics.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,5 @@ realWorldObject:
label: Real World Object Recipes
geo-recipes:
label: Geo Recipes
content-state:
label: Recipes involving Content State
2 changes: 2 additions & 0 deletions _includes/links.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@

[0377]: {{ site.cookbook_url | absolute_url }}/recipe/0377-image-in-annotation/ "Image in annotation"

[0466]: {{ site.cookbook_url | absolute_url }}/recipe/0466-link-for-loading-manifest/ "Loading a manifest with a viewer using a link"

[0434]: {{ site.cookbook_url | absolute_url }}/recipe/0434-choice-av/ "Multiple Choice of Audio Formats in a Single View (Canvas)"
[0489]: {{ site.cookbook_url | absolute_url }}/recipe/0489-multimedia-canvas/ "Complex Multimedia Canvas"

Expand Down
7 changes: 7 additions & 0 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,13 @@ _(leading on to segmentation examples later)_
* Linking between Presentation API representations
* [Linking to Structured Metadata][0053] (8)


## Sharing IIIF content
Recipes using [Content State API](https://iiif.io/api/content-state/1.0/)

* [Loading a manifest with a viewer using a link][0466]


## Technical

* extensions (18)
Expand Down
3 changes: 2 additions & 1 deletion recipe/0024-book-4-toc/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ summary: "Using Ranges to create a table of contents for a book"
viewers:
- UV
- Mirador
- Glycerine Viewer
topic: structure
property: structures
---
Expand Down Expand Up @@ -36,7 +37,7 @@ In this example, an Ethiopic manuscript contains multiple works, one of which co
* Monday
* Tuesday

{% include manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %}
{% include manifest_links.html viewers="UV, Mirador, Glycerine Viewer" manifest="manifest.json" %}

{% include jsonviewer.html src="manifest.json" config='data-line="246-326, 247-254, 275-282"' %}

Expand Down
3 changes: 2 additions & 1 deletion recipe/0031-bound-multivolume/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ summary: "Recipe for a multi-volume object where the volumes are bound together
viewers:
- UV
- Mirador
- Glycerine Viewer
topic:
- structure
---
Expand Down Expand Up @@ -66,7 +67,7 @@ This will produce an index of the constituent volumes like so:
* Erste Ausgabe... (Vol. 1)
* Zweyte Ausgabe... (Vol. 2)

{% include manifest_links.html viewers="UV, Mirador" manifest="manifest.json" %}
{% include manifest_links.html viewers="UV, Mirador, Glycerine Viewer" manifest="manifest.json" %}

{% include jsonviewer.html src="manifest.json" config='data-line="246-315"'%}

Expand Down
46 changes: 46 additions & 0 deletions recipe/0466-link-for-loading-manifest/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
title: Sharing a link to open a Manifest in a specific viewer
id: 466
layout: recipe
tags: [annotation]
summary: "Allows users to use links that can be clicked to open a viewer with a selected manifest."
viewers:
- Mirador
- Clover
topic:
- content-state
---

# Use case
You would like to provide the user a link to click that will open a specific Manifest directly in a preselected viewer application. For example, on your web page or in an email to a user or colleague, you share a link to a IIIF Manifest for a book that will automatically open in a Mirador instance.

# Implementation notes
This type of request can be implemented using the [IIIF Content State API](https://iiif.io/api/content-state) following the [HTTP GET (Query String) Parameter](https://iiif.io/api/content-state/1.0/#initialization-mechanisms-link) section.

The Manifest URL is provided as the value of the `iiif-content` parameter following the viewer instance URL. Assuming the viewer can be accessed at `https://example.org/viewer` we can pass the `iiif-content` parameter as follows:

```
https://example.org/viewer?iiif-content=manifest-url
```

Note when the content state is a plain URI, rather than a JSON object, it must not be [content-state-encoded](https://iiif.io/api/content-state/0.9/#62-content-state-encoding-and-uri-requirements).

**However, the current specs do not provide a standardized approach to interpret URIs containing special characters, please see the issue https://github.com/IIIF/api/issues/2292 for a detailed explanation and updates regarding this issue.**

## Example

To open the IIIF Manifest [https://iiif.io/api/cookbook/recipe/0001-mvm-image/manifest.json](https://iiif.io/api/cookbook/recipe/0001-mvm-image/manifest.json) in the Mirador viewer hosted at [https://projectmirador.org/embed/](https://projectmirador.org/embed/), we construct the link as follows:

[https://projectmirador.org/embed/?iiif-content=https://iiif.io/api/cookbook/recipe/0001-mvm-image/manifest.json](https://projectmirador.org/embed/?iiif-content=https://iiif.io/api/cookbook/recipe/0001-mvm-image/manifest.json)

Similarly with Clover we append the `iiif-content` parameter to the viewer location as so:

[https://samvera-labs.github.io/clover-iiif/docs/viewer/demo?iiif-content=https://iiif.io/api/cookbook/recipe/0001-mvm-image/manifest.json](https://samvera-labs.github.io/clover-iiif/docs/viewer/demo?iiif-content=https://iiif.io/api/cookbook/recipe/0001-mvm-image/manifest.json)

## Related Recipes

* [Simplest Manifest - Image][0001] shows the basic structure of a IIIF Manifest using presentation API 3.0.

{% include acronyms.md %}
{% include links.md %}

12 changes: 7 additions & 5 deletions recipe/matrix.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,27 +21,29 @@ topics:
- key: AV
note: Please note there are other IIIF AV viewers that are not listed like the [Europeana Player](https://github.com/europeana/media-player). These are not included in the matrix due to a lack of public linkable instance rather than them not supporting some of the recipes.
- annotation
- key: content-state
note: These recipes demonstrate use cases for the [content-state](https://iiif.io/api/content-state/) API.
- key: geo-recipes
note: Please note there are many viewers built to view GeoJSON like [Leaflet](https://leafletjs.com/) and [geojson.io](https://geojson.io/). These viewers do not know to parse objects for a `navPlace` property or look into the `body` property of Annotations for GeoJSON. However, they are easily customizable and can be made to find GeoJSON in these properties. The Navplace Viewer is an [Open Source customization](https://github.com/CenterForDigitalHumanities/navplace-viewer) which intelligently gathers and formats GeoJSON from provided IIIF resources and hands that GeoJSON to a Leaflet viewer for rendering.
note: Please note there are many viewers built to view GeoJSON like [Leaflet](https://leafletjs.com/) and [geojson.io](https://geojson.io/), but they are not able to parse objects for a `navPlace` property or look into the `body` property of Annotations for GeoJSON. However, they are easily customizable and can be made to find GeoJSON in these properties. The Navplace Viewer is an [Open Source customization](https://github.com/CenterForDigitalHumanities/navplace-viewer) of Leaflet that intelligently gathers and formats GeoJSON from provided IIIF resources and hands that GeoJSON to a Leaflet viewer for rendering.
---

<link rel='stylesheet' href="{{ site.cookbook_url | absolute_url }}/css/style.css"/>

# IIIF 3.0 Viewer Matrix

In the 2021 Working meeting there was a presentation on viewer support for IIIF 3.0 and the community asked if this presentation could be turned into a matrix so the community can see which viewers support which area of the IIIF specifications. This matrix is generated automatically from the recipes and if you notice any thing that is incorrect please report it to the [cookbook GitHub site](https://github.com/IIIF/cookbook-recipes/issues/new).
In the 2021 Working meeting there was a presentation on viewer support for IIIF Presentation 3.0. The community asked if this presentation could be turned into a matrix so people can see which viewers support which area(s) of the IIIF specifications. This matrix, shown below, is generated automatically from the latest version of cookbook recipes approved by the IIIF TRC. If you notice an error or inaccuracy, please report it as an Issue at the [cookbook GitHub site](https://github.com/IIIF/cookbook-recipes/issues/new).

## Which viewers are included?

Currently [Mirador 3](https://projectmirador.org/), the [Universal Viewer](https://universalviewer.io/) (UV) V3, [Annona](https://ncsu-libraries.github.io/annona/multistoryboard/), [Clover](https://samvera-labs.github.io/clover-iiif/), [Navplace Viewer](https://map.rerum.io/), and [Ramp](https://iiif-react-media-player.netlify.app/) are listed on the cookbook and we welcome the addition of other IIIF viewers but they must support the following features:
Currently [Mirador 3](https://projectmirador.org/), the [Universal Viewer](https://universalviewer.io/) (UV) V3, [Annona](https://ncsu-libraries.github.io/annona/multistoryboard/), [Clover](https://samvera-labs.github.io/clover-iiif/), [Navplace Viewer](https://map.rerum.io/), [Ramp](https://iiif-react-media-player.netlify.app/), [Aviary](https://iiif.aviaryplatform.com/), and [Glycerine](https://demo.viewer.glycerine.io/) are listed on the cookbook and we welcome the addition of other IIIF viewers but they must support the following features:

- Support for the [IIIF version 3.0 Presentation API](https://iiif.io/api/presentation/3.0/)
- Have a public instance available that we can link to, ideally using the `iiif-content` parameter from the [IIIF Content State API](https://iiif.io/api/content-state/)
- A public, linkable instance, ideally using the `iiif-content` parameter from the [IIIF Content State API](https://iiif.io/api/content-state/)
- Support at least 1 cookbook recipe

## Viewer Matrix

The possible values for viewer support are YES, NO or Partial. Check the recipe to see the full behaviour of the viewer to check it achieves the required function in the way you expect.
The possible values for viewer support are YES, NO or Partial. Click on the recipe name to see links to supporting viewers' behaviour with the recipe manifest. This will allow you to see whether it achieves the required function in the way you expect.
{% for topic in page.topics %}
{% if topic.key %}
{% assign topic_key = topic.key %}
Expand Down

0 comments on commit e860842

Please sign in to comment.