Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support IIIF canvas labels and metadata from node #1072

Merged
merged 2 commits into from
Mar 4, 2025

Conversation

seth-shaw-asu
Copy link
Member

What does this Pull Request do?

This PR allows us to use content fields to populate canvas labels and metadata for the IIIF Manifest views style plugin.

E.g. currently when we use Mirador the media's name is used for the canvas label in viewer. However, our child nodes have title metadata, even if it is simply as "Cover", "Page 1", etc. or "Recto" and "Verso" which this PR allows us to configure. Also, Mirador can display metadata with each canvas (see IIIF Presentation API section on metadata and "Metadata on any Resource" from the cookbook), which we didn't support. This PR allows us to add fields to the view and include them in metadata display.

What's new?

  • Two new configuration settings on the IIIF Manifest settings which use the currently configured field views as options:
    • "Canvas label" source field select box.
    • "Fields to include in canvas metadata" multi-select.
  • Updated IIIF Manifest render to add the canvas label and metadata fields as configured for that view.
  • A coding style update.
  • A sanity check for a feature throwing warnings when not configured.

How should this be tested?

  • Create a paged content item with pages that include nice titles and a few fields populated (e.g. description or date created).
  • Either view the book-manifest and see the canvas labels using the media name OR load the Mirador viewer and see the same. 😢
  • Apply the PR
  • Either use the included views configuration (see the additional notes section) which updates the existing starter-site configuration OR update the iiif_manifest view's book-manifest display:
    • Add fields from the Content section. E.g. "Title" which will display as "(field_media_of: Content) Title"
    • Update the IIIF Manifest style settings to use "Title" as the canvas label.
    • Select title, or any of the other content fields, to be included in the canvas metadata.
    • Save the configuration
  • Either view the book-manifest and see the canvas labels using node titles and the other metadata being included OR load the Mirador viewer and see the same. 🎉

Documentation Status

Additional Notes:

`views.view.iiif_manifest.yml` for testing canvas metadata
langcode: en
status: true
dependencies:
  config:
    - field.storage.media.field_media_file
    - field.storage.media.field_media_image
    - field.storage.node.field_description
    - field.storage.node.field_edtf_date
    - field.storage.node.field_edtf_date_created
    - field.storage.node.field_identifier
    - field.storage.node.field_linked_agent
  module:
    - controlled_access_terms
    - file
    - image
    - islandora_iiif
    - media
    - node
    - rest
    - serialization
    - taxonomy
    - user
id: iiif_manifest
label: 'IIIF Manifest'
module: views
description: 'Generates IIIF manifests for paged content'
tag: ''
base_table: media_field_data
base_field: mid
display:
  default:
    id: default
    display_title: Main
    display_plugin: default
    position: 0
    display_options:
      title: ''
      fields:
        field_media_file:
          id: field_media_file
          table: media__field_media_file
          field: field_media_file
          relationship: none
          group_type: group
          admin_label: ''
          plugin_id: field
          label: ''
          exclude: false
          alter:
            alter_text: false
            text: ''
            make_link: false
            path: ''
            absolute: false
            external: false
            replace_spaces: false
            path_case: none
            trim_whitespace: false
            alt: ''
            rel: ''
            link_class: ''
            prefix: ''
            suffix: ''
            target: ''
            nl2br: false
            max_length: 0
            word_boundary: true
            ellipsis: true
            more_link: false
            more_link_text: ''
            more_link_path: ''
            strip_tags: false
            trim: false
            preserve_tags: ''
            html: false
          element_type: ''
          element_class: ''
          element_label_type: ''
          element_label_class: ''
          element_label_colon: false
          element_wrapper_type: ''
          element_wrapper_class: ''
          element_default_classes: true
          empty: ''
          hide_empty: false
          empty_zero: false
          hide_alter_empty: true
          click_sort_column: target_id
          type: file_default
          settings:
            use_description_as_link_text: true
          group_column: ''
          group_columns: {  }
          group_rows: true
          delta_limit: 0
          delta_offset: 0
          delta_reversed: false
          delta_first_last: false
          multi_type: separator
          separator: ', '
          field_api_classes: false
        field_media_image:
          id: field_media_image
          table: media__field_media_image
          field: field_media_image
          relationship: none
          group_type: group
          admin_label: ''
          plugin_id: field
          label: ''
          exclude: false
          alter:
            alter_text: false
            text: ''
            make_link: false
            path: ''
            absolute: false
            external: false
            replace_spaces: false
            path_case: none
            trim_whitespace: false
            alt: ''
            rel: ''
            link_class: ''
            prefix: ''
            suffix: ''
            target: ''
            nl2br: false
            max_length: 0
            word_boundary: true
            ellipsis: true
            more_link: false
            more_link_text: ''
            more_link_path: ''
            strip_tags: false
            trim: false
            preserve_tags: ''
            html: false
          element_type: ''
          element_class: ''
          element_label_type: ''
          element_label_class: ''
          element_label_colon: false
          element_wrapper_type: ''
          element_wrapper_class: ''
          element_default_classes: true
          empty: ''
          hide_empty: false
          empty_zero: false
          hide_alter_empty: true
          click_sort_column: target_id
          type: image
          settings:
            image_link: ''
            image_style: ''
            image_loading:
              attribute: lazy
          group_column: ''
          group_columns: {  }
          group_rows: true
          delta_limit: 0
          delta_offset: 0
          delta_reversed: false
          delta_first_last: false
          multi_type: separator
          separator: ', '
          field_api_classes: false
        title:
          id: title
          table: node_field_data
          field: title
          relationship: field_media_of
          group_type: group
          admin_label: Title
          entity_type: node
          entity_field: title
          plugin_id: field
          label: Title
          exclude: false
          alter:
            alter_text: false
            text: ''
            make_link: false
            path: ''
            absolute: false
            external: false
            replace_spaces: false
            path_case: none
            trim_whitespace: false
            alt: ''
            rel: ''
            link_class: ''
            prefix: ''
            suffix: ''
            target: ''
            nl2br: false
            max_length: 0
            word_boundary: true
            ellipsis: true
            more_link: false
            more_link_text: ''
            more_link_path: ''
            strip_tags: false
            trim: false
            preserve_tags: ''
            html: false
          element_type: ''
          element_class: ''
          element_label_type: ''
          element_label_class: ''
          element_label_colon: false
          element_wrapper_type: ''
          element_wrapper_class: ''
          element_default_classes: true
          empty: ''
          hide_empty: false
          empty_zero: false
          hide_alter_empty: true
          click_sort_column: value
          type: string
          settings:
            link_to_entity: false
          group_column: value
          group_columns: {  }
          group_rows: true
          delta_limit: 0
          delta_offset: 0
          delta_reversed: false
          delta_first_last: false
          multi_type: separator
          separator: ', '
          field_api_classes: false
        field_linked_agent:
          id: field_linked_agent
          table: node__field_linked_agent
          field: field_linked_agent
          relationship: field_media_of
          group_type: group
          admin_label: Contributors
          plugin_id: field
          label: ''
          exclude: false
          alter:
            alter_text: false
            text: ''
            make_link: false
            path: ''
            absolute: false
            external: false
            replace_spaces: false
            path_case: none
            trim_whitespace: false
            alt: ''
            rel: ''
            link_class: ''
            prefix: ''
            suffix: ''
            target: ''
            nl2br: false
            max_length: 0
            word_boundary: true
            ellipsis: true
            more_link: false
            more_link_text: ''
            more_link_path: ''
            strip_tags: false
            trim: false
            preserve_tags: ''
            html: false
          element_type: ''
          element_class: ''
          element_label_type: ''
          element_label_class: ''
          element_label_colon: false
          element_wrapper_type: ''
          element_wrapper_class: ''
          element_default_classes: true
          empty: ''
          hide_empty: false
          empty_zero: false
          hide_alter_empty: true
          click_sort_column: target_id
          type: typed_relation_default
          settings:
            link: false
          group_column: ''
          group_columns: {  }
          group_rows: true
          delta_limit: 0
          delta_offset: 0
          delta_reversed: false
          delta_first_last: false
          multi_type: separator
          separator: ', '
          field_api_classes: false
        field_edtf_date:
          id: field_edtf_date
          table: node__field_edtf_date
          field: field_edtf_date
          relationship: field_media_of
          group_type: group
          admin_label: ''
          plugin_id: field
          label: Date
          exclude: false
          alter:
            alter_text: false
            text: ''
            make_link: false
            path: ''
            absolute: false
            external: false
            replace_spaces: false
            path_case: none
            trim_whitespace: false
            alt: ''
            rel: ''
            link_class: ''
            prefix: ''
            suffix: ''
            target: ''
            nl2br: false
            max_length: 0
            word_boundary: true
            ellipsis: true
            more_link: false
            more_link_text: ''
            more_link_path: ''
            strip_tags: false
            trim: false
            preserve_tags: ''
            html: false
          element_type: ''
          element_class: ''
          element_label_type: ''
          element_label_class: ''
          element_label_colon: false
          element_wrapper_type: ''
          element_wrapper_class: ''
          element_default_classes: true
          empty: ''
          hide_empty: false
          empty_zero: false
          hide_alter_empty: true
          click_sort_column: value
          type: edtf_default
          settings:
            date_separator: dash
            date_order: big_endian
            month_format: mm
            day_format: dd
            year_format: 'y'
            relationship: field_media_of
            fieldsets:
              - more
              - admin_label
            custom_label: 0
            label: ''
            element_label_colon: 0
            exclude: 0
            element_type_enable: 0
            element_type: ''
            element_class_enable: 0
            element_class: ''
            element_label_type_enable: 0
            element_label_type: ''
            element_label_class_enable: 0
            element_label_class: ''
            element_wrapper_type_enable: 0
            element_wrapper_type: ''
            element_wrapper_class_enable: 0
            element_wrapper_class: ''
            element_default_classes: 1
            alter:
              alter_text: 0
              text: ''
              make_link: 0
              path: ''
              absolute: 0
              replace_spaces: 0
              external: 0
              path_case: none
              link_class: ''
              alt: ''
              rel: ''
              prefix: ''
              suffix: ''
              target: ''
              trim: 0
              max_length: '0'
              word_boundary: 1
              ellipsis: 1
              more_link: 0
              more_link_text: ''
              more_link_path: ''
              html: 0
              strip_tags: 0
              preserve_tags: ''
              trim_whitespace: 0
              nl2br: 0
            empty: ''
            empty_zero: 0
            hide_empty: 0
            hide_alter_empty: 1
            group_rows: 1
            multi_type: separator
            separator: ', '
            delta_limit: '0'
            delta_offset: '0'
            delta_reversed: 0
            delta_first_last: 0
            click_sort_column: value
            type: edtf_default
            field_api_classes: 0
          group_column: value
          group_columns: {  }
          group_rows: true
          delta_limit: 0
          delta_offset: 0
          delta_reversed: false
          delta_first_last: false
          multi_type: separator
          separator: ', '
          field_api_classes: false
        field_edtf_date_created:
          id: field_edtf_date_created
          table: node__field_edtf_date_created
          field: field_edtf_date_created
          relationship: field_media_of
          group_type: group
          admin_label: 'Date Created'
          plugin_id: field
          label: ''
          exclude: false
          alter:
            alter_text: false
            text: ''
            make_link: false
            path: ''
            absolute: false
            external: false
            replace_spaces: false
            path_case: none
            trim_whitespace: false
            alt: ''
            rel: ''
            link_class: ''
            prefix: ''
            suffix: ''
            target: ''
            nl2br: false
            max_length: 0
            word_boundary: true
            ellipsis: true
            more_link: false
            more_link_text: ''
            more_link_path: ''
            strip_tags: false
            trim: false
            preserve_tags: ''
            html: false
          element_type: ''
          element_class: ''
          element_label_type: ''
          element_label_class: ''
          element_label_colon: false
          element_wrapper_type: ''
          element_wrapper_class: ''
          element_default_classes: true
          empty: ''
          hide_empty: false
          empty_zero: false
          hide_alter_empty: true
          click_sort_column: value
          type: edtf_default
          settings:
            date_separator: dash
            date_order: big_endian
            month_format: mm
            day_format: dd
            year_format: 'y'
            relationship: field_media_of
            fieldsets:
              - more
              - admin_label
            custom_label: 0
            label: ''
            element_label_colon: 0
            exclude: 0
            element_type_enable: 0
            element_type: ''
            element_class_enable: 0
            element_class: ''
            element_label_type_enable: 0
            element_label_type: ''
            element_label_class_enable: 0
            element_label_class: ''
            element_wrapper_type_enable: 0
            element_wrapper_type: ''
            element_wrapper_class_enable: 0
            element_wrapper_class: ''
            element_default_classes: 1
            alter:
              alter_text: 0
              text: ''
              make_link: 0
              path: ''
              absolute: 0
              replace_spaces: 0
              external: 0
              path_case: none
              link_class: ''
              alt: ''
              rel: ''
              prefix: ''
              suffix: ''
              target: ''
              trim: 0
              max_length: '0'
              word_boundary: 1
              ellipsis: 1
              more_link: 0
              more_link_text: ''
              more_link_path: ''
              html: 0
              strip_tags: 0
              preserve_tags: ''
              trim_whitespace: 0
              nl2br: 0
            empty: ''
            empty_zero: 0
            hide_empty: 0
            hide_alter_empty: 1
            group_rows: 1
            multi_type: separator
            separator: ', '
            delta_limit: '0'
            delta_offset: '0'
            delta_reversed: 0
            delta_first_last: 0
            click_sort_column: value
            type: edtf_default
            field_api_classes: 0
          group_column: value
          group_columns: {  }
          group_rows: true
          delta_limit: 0
          delta_offset: 0
          delta_reversed: false
          delta_first_last: false
          multi_type: separator
          separator: ', '
          field_api_classes: false
        field_description:
          id: field_description
          table: node__field_description
          field: field_description
          relationship: field_media_of
          group_type: group
          admin_label: ''
          plugin_id: field
          label: Description
          exclude: false
          alter:
            alter_text: false
            text: ''
            make_link: false
            path: ''
            absolute: false
            external: false
            replace_spaces: false
            path_case: none
            trim_whitespace: false
            alt: ''
            rel: ''
            link_class: ''
            prefix: ''
            suffix: ''
            target: ''
            nl2br: false
            max_length: 0
            word_boundary: true
            ellipsis: true
            more_link: false
            more_link_text: ''
            more_link_path: ''
            strip_tags: false
            trim: false
            preserve_tags: ''
            html: false
          element_type: ''
          element_class: ''
          element_label_type: ''
          element_label_class: ''
          element_label_colon: false
          element_wrapper_type: ''
          element_wrapper_class: ''
          element_default_classes: true
          empty: ''
          hide_empty: false
          empty_zero: false
          hide_alter_empty: true
          click_sort_column: value
          type: basic_string
          settings: {  }
          group_column: value
          group_columns: {  }
          group_rows: true
          delta_limit: 0
          delta_offset: 0
          delta_reversed: false
          delta_first_last: false
          multi_type: separator
          separator: ', '
          field_api_classes: false
        field_identifier:
          id: field_identifier
          table: node__field_identifier
          field: field_identifier
          relationship: field_media_of
          group_type: group
          admin_label: Identifier
          plugin_id: field
          label: ''
          exclude: false
          alter:
            alter_text: false
            text: ''
            make_link: false
            path: ''
            absolute: false
            external: false
            replace_spaces: false
            path_case: none
            trim_whitespace: false
            alt: ''
            rel: ''
            link_class: ''
            prefix: ''
            suffix: ''
            target: ''
            nl2br: false
            max_length: 0
            word_boundary: true
            ellipsis: true
            more_link: false
            more_link_text: ''
            more_link_path: ''
            strip_tags: false
            trim: false
            preserve_tags: ''
            html: false
          element_type: ''
          element_class: ''
          element_label_type: ''
          element_label_class: ''
          element_label_colon: false
          element_wrapper_type: ''
          element_wrapper_class: ''
          element_default_classes: true
          empty: ''
          hide_empty: false
          empty_zero: false
          hide_alter_empty: true
          click_sort_column: value
          type: string
          settings:
            link_to_entity: false
          group_column: value
          group_columns: {  }
          group_rows: true
          delta_limit: 0
          delta_offset: 0
          delta_reversed: false
          delta_first_last: false
          multi_type: separator
          separator: ', '
          field_api_classes: false
      pager:
        type: mini
        options:
          offset: 0
          pagination_heading_level: h4
          items_per_page: 10
          total_pages: null
          id: 0
          tags:
            next: ››
            previous: ‹‹
          expose:
            items_per_page: false
            items_per_page_label: 'Items per page'
            items_per_page_options: '5, 10, 25, 50'
            items_per_page_options_all: false
            items_per_page_options_all_label: '- All -'
            offset: false
            offset_label: Offset
      exposed_form:
        type: basic
        options:
          submit_button: Apply
          reset_button: false
          reset_button_label: Reset
          exposed_sorts_label: 'Sort by'
          expose_sort_order: true
          sort_asc_label: Asc
          sort_desc_label: Desc
      access:
        type: perm
        options:
          perm: 'view media'
      cache:
        type: tag
        options: {  }
      empty: {  }
      sorts:
        field_weight_value:
          id: field_weight_value
          table: node__field_weight
          field: field_weight_value
          relationship: field_media_of
          group_type: group
          admin_label: ''
          plugin_id: standard
          order: ASC
          expose:
            label: ''
            field_identifier: field_weight_value
          exposed: false
        created:
          id: created
          table: node_field_data
          field: created
          relationship: field_media_of
          group_type: group
          admin_label: ''
          entity_type: node
          entity_field: created
          plugin_id: date
          order: ASC
          expose:
            label: ''
            field_identifier: ''
          exposed: false
          granularity: second
      arguments:
        field_member_of_target_id:
          id: field_member_of_target_id
          table: node__field_member_of
          field: field_member_of_target_id
          relationship: field_media_of
          group_type: group
          admin_label: ''
          plugin_id: entity_target_id
          default_action: default
          exception:
            value: all
            title_enable: false
            title: All
          title_enable: false
          title: ''
          default_argument_type: node
          default_argument_options: {  }
          summary_options:
            base_path: ''
            count: true
            override: false
            items_per_page: 25
          summary:
            sort_order: asc
            number_of_records: 0
            format: default_summary
          specify_validation: true
          validate:
            type: 'entity:node'
            fail: 'not found'
          validate_options:
            bundles: {  }
            access: true
            operation: view
            multiple: 0
          break_phrase: false
          not: false
          target_entity_type_id: node
      filters:
        status:
          id: status
          table: media_field_data
          field: status
          entity_type: media
          entity_field: status
          plugin_id: boolean
          value: '1'
          group: 1
          expose:
            operator: ''
            operator_limit_selection: false
            operator_list: {  }
        field_external_uri_uri:
          id: field_external_uri_uri
          table: taxonomy_term__field_external_uri
          field: field_external_uri_uri
          relationship: field_media_use
          group_type: group
          admin_label: ''
          plugin_id: string
          operator: '='
          value: 'http://pcdm.org/use#OriginalFile'
          group: 1
          exposed: false
          expose:
            operator_id: ''
            label: ''
            description: ''
            use_operator: false
            operator: ''
            operator_limit_selection: false
            operator_list: {  }
            identifier: ''
            required: false
            remember: false
            multiple: false
            remember_roles:
              authenticated: authenticated
            placeholder: ''
          is_grouped: false
          group_info:
            label: ''
            description: ''
            identifier: ''
            optional: true
            widget: select
            multiple: false
            remember: false
            default_group: All
            default_group_multiple: {  }
            group_items: {  }
      filter_groups:
        operator: AND
        groups:
          1: AND
      style:
        type: serializer
      row:
        type: fields
        options:
          default_field_elements: true
          inline: {  }
          separator: ''
          hide_empty: false
      query:
        type: views_query
        options:
          query_comment: ''
          disable_sql_rewrite: false
          distinct: false
          replica: false
          query_tags: {  }
      relationships:
        field_media_of:
          id: field_media_of
          table: media__field_media_of
          field: field_media_of
          relationship: none
          group_type: group
          admin_label: 'field_media_of: Content'
          plugin_id: standard
          required: true
        field_media_use:
          id: field_media_use
          table: media__field_media_use
          field: field_media_use
          relationship: none
          group_type: group
          admin_label: 'field_media_use: Taxonomy term'
          plugin_id: standard
          required: false
      header: {  }
      footer: {  }
      display_extenders: {  }
    cache_metadata:
      max-age: -1
      contexts:
        - 'languages:language_content'
        - 'languages:language_interface'
        - request_format
        - url
        - url.query_args
        - user.permissions
      tags:
        - 'config:field.storage.media.field_media_file'
        - 'config:field.storage.media.field_media_image'
        - 'config:field.storage.node.field_description'
        - 'config:field.storage.node.field_edtf_date'
        - 'config:field.storage.node.field_edtf_date_created'
        - 'config:field.storage.node.field_identifier'
        - 'config:field.storage.node.field_linked_agent'
  rest_export_1:
    id: rest_export_1
    display_title: 'REST export'
    display_plugin: rest_export
    position: 1
    display_options:
      pager:
        type: none
        options:
          offset: 0
      filters:
        status:
          id: status
          table: media_field_data
          field: status
          entity_type: media
          entity_field: status
          plugin_id: boolean
          value: '1'
          group: 1
          expose:
            operator: ''
            operator_limit_selection: false
            operator_list: {  }
        field_external_uri_uri:
          id: field_external_uri_uri
          table: taxonomy_term__field_external_uri
          field: field_external_uri_uri
          relationship: field_media_use
          group_type: group
          admin_label: ''
          plugin_id: string
          operator: '='
          value: 'http://pcdm.org/use#ServiceFile'
          group: 1
          exposed: false
          expose:
            operator_id: ''
            label: ''
            description: ''
            use_operator: false
            operator: ''
            operator_limit_selection: false
            operator_list: {  }
            identifier: ''
            required: false
            remember: false
            multiple: false
            remember_roles:
              authenticated: authenticated
            placeholder: ''
          is_grouped: false
          group_info:
            label: ''
            description: ''
            identifier: ''
            optional: true
            widget: select
            multiple: false
            remember: false
            default_group: All
            default_group_multiple: {  }
            group_items: {  }
      filter_groups:
        operator: AND
        groups:
          1: AND
      style:
        type: iiif_manifest
        options:
          iiif_tile_field:
            field_media_file: field_media_file
            field_media_image: field_media_image
          search_endpoint: ''
          canvas_label: title
          metadata_fields:
            title: title
            field_linked_agent: field_linked_agent
            field_edtf_date: field_edtf_date
            field_edtf_date_created: field_edtf_date_created
            field_description: field_description
            field_identifier: field_identifier
          advanced:
            custom_width_height:
              height_field: ''
              width_field: ''
            iiif_ocr_file_field:
              field_media_file: 0
              field_media_image: 0
          structured_text_term: null
      row:
        type: data_field
        options:
          field_options:
            name:
              alias: ''
              raw_output: false
      defaults:
        filters: false
        filter_groups: false
      display_extenders: {  }
      path: node/%node/book-manifest
    cache_metadata:
      max-age: -1
      contexts:
        - 'languages:language_content'
        - 'languages:language_interface'
        - url
        - user.permissions
      tags:
        - 'config:field.storage.media.field_media_file'
        - 'config:field.storage.media.field_media_image'
        - 'config:field.storage.node.field_description'
        - 'config:field.storage.node.field_edtf_date'
        - 'config:field.storage.node.field_edtf_date_created'
        - 'config:field.storage.node.field_identifier'
        - 'config:field.storage.node.field_linked_agent'
  rest_export_2:
    id: rest_export_2
    display_title: 'REST export - single node'
    display_plugin: rest_export
    position: 1
    display_options:
      pager:
        type: none
        options:
          offset: 0
      arguments:
        field_media_of_target_id:
          id: field_media_of_target_id
          table: media__field_media_of
          field: field_media_of_target_id
          relationship: none
          group_type: group
          admin_label: ''
          plugin_id: entity_target_id
          default_action: default
          exception:
            value: all
            title_enable: false
            title: All
          title_enable: false
          title: ''
          default_argument_type: node
          default_argument_options: {  }
          summary_options:
            base_path: ''
            count: true
            override: false
            items_per_page: 25
          summary:
            sort_order: asc
            number_of_records: 0
            format: default_summary
          specify_validation: false
          validate:
            type: none
            fail: 'not found'
          validate_options: {  }
          break_phrase: false
          not: false
          target_entity_type_id: node
      filters:
        status:
          id: status
          table: media_field_data
          field: status
          entity_type: media
          entity_field: status
          plugin_id: boolean
          value: '1'
          group: 1
          expose:
            operator: ''
            operator_limit_selection: false
            operator_list: {  }
        field_external_uri_uri:
          id: field_external_uri_uri
          table: taxonomy_term__field_external_uri
          field: field_external_uri_uri
          relationship: field_media_use
          group_type: group
          admin_label: ''
          plugin_id: string
          operator: '='
          value: 'http://pcdm.org/use#ServiceFile'
          group: 1
          exposed: false
          expose:
            operator_id: ''
            label: ''
            description: ''
            use_operator: false
            operator: ''
            operator_limit_selection: false
            operator_list: {  }
            identifier: ''
            required: false
            remember: false
            multiple: false
            remember_roles:
              authenticated: authenticated
            placeholder: ''
          is_grouped: false
          group_info:
            label: ''
            description: ''
            identifier: ''
            optional: true
            widget: select
            multiple: false
            remember: false
            default_group: All
            default_group_multiple: {  }
            group_items: {  }
      filter_groups:
        operator: AND
        groups:
          1: AND
      style:
        type: iiif_manifest
        options:
          iiif_tile_field:
            field_media_file: field_media_file
            field_media_image: field_media_image
      row:
        type: data_field
        options:
          field_options:
            name:
              alias: ''
              raw_output: false
      defaults:
        relationships: false
        arguments: false
        filters: false
        filter_groups: false
      relationships:
        field_media_of:
          id: field_media_of
          table: media__field_media_of
          field: field_media_of
          relationship: none
          group_type: group
          admin_label: 'field_media_of: Content'
          plugin_id: standard
          required: true
        field_media_use:
          id: field_media_use
          table: media__field_media_use
          field: field_media_use
          relationship: none
          group_type: group
          admin_label: 'field_media_use: Taxonomy term'
          plugin_id: standard
          required: false
      display_description: ''
      display_extenders: {  }
      path: node/%node/manifest
    cache_metadata:
      max-age: -1
      contexts:
        - 'languages:language_content'
        - 'languages:language_interface'
        - url
        - user.permissions
      tags:
        - 'config:field.storage.media.field_media_file'
        - 'config:field.storage.media.field_media_image'
        - 'config:field.storage.node.field_description'
        - 'config:field.storage.node.field_edtf_date'
        - 'config:field.storage.node.field_edtf_date_created'
        - 'config:field.storage.node.field_identifier'
        - 'config:field.storage.node.field_linked_agent'
  rest_export_3:
    id: rest_export_3
    display_title: 'Book Manifest (Original File)'
    display_plugin: rest_export
    position: 3
    display_options:
      pager:
        type: none
        options:
          offset: 0
      style:
        type: iiif_manifest
        options:
          iiif_tile_field:
            field_media_file: field_media_file
            field_media_image: field_media_image
          search_endpoint: ''
          canvas_label: title
          advanced:
            custom_width_height:
              height_field: ''
              width_field: ''
            iiif_ocr_file_field:
              field_media_file: 0
              field_media_image: 0
      row:
        type: data_field
        options:
          field_options:
            field_media_file:
              alias: ''
              raw_output: false
            field_media_image:
              alias: ''
              raw_output: false
      display_description: ''
      display_extenders: {  }
      path: node/%node/book-manifest-original
    cache_metadata:
      max-age: -1
      contexts:
        - 'languages:language_content'
        - 'languages:language_interface'
        - url
        - user.permissions
      tags:
        - 'config:field.storage.media.field_media_file'
        - 'config:field.storage.media.field_media_image'
        - 'config:field.storage.node.field_description'
        - 'config:field.storage.node.field_edtf_date'
        - 'config:field.storage.node.field_edtf_date_created'
        - 'config:field.storage.node.field_identifier'
        - 'config:field.storage.node.field_linked_agent'

Interested parties

@Islandora/committers, esp @alxp and @joecorall

@joecorall
Copy link
Member

LGTM - just one nitpick thing

@joecorall joecorall merged commit e1e4415 into Islandora:2.x Mar 4, 2025
21 of 27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants