From fbcdecc59892eb9b1ff302bef28a127e9b5461a6 Mon Sep 17 00:00:00 2001
From: Alexander O'Neill <aloneill@gmail.com>
Date: Wed, 27 Jul 2022 19:24:32 +0000
Subject: [PATCH] Add Structured OCR field to IIIF Manifest view.

---
 .../src/Plugin/views/style/IIIFManifest.php            | 10 ++++++++++
 .../Action/AbstractGenerateDerivativeMediaFile.php     |  5 ++---
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/modules/islandora_iiif/src/Plugin/views/style/IIIFManifest.php b/modules/islandora_iiif/src/Plugin/views/style/IIIFManifest.php
index 19467001..446358d0 100644
--- a/modules/islandora_iiif/src/Plugin/views/style/IIIFManifest.php
+++ b/modules/islandora_iiif/src/Plugin/views/style/IIIFManifest.php
@@ -313,6 +313,7 @@ class IIIFManifest extends StylePluginBase {
     $options = parent::defineOptions();
 
     $options['iiif_tile_field'] = ['default' => ''];
+    $options['iiif_ocr_file_field'] = ['default' => ''];
 
     return $options;
   }
@@ -368,6 +369,15 @@ class IIIFManifest extends StylePluginBase {
       // otherwise could lock up the form when setting up a View.
       '#required' => count($field_options) > 0,
     ];
+
+    $form['iiif_ocr_file_field'] = [
+      '#title' => $this->t('Structured OCR data file field'),
+      '#type' => 'checkboxes',
+      '#default_value' => $this->options['iiif_ocr_file_field'],
+      '#description' => $this->t('The source of structured OCR text for each entity.'),
+      '#options' => $field_options,
+      '#required' => FALSE,
+    ];
   }
 
   /**
diff --git a/src/Plugin/Action/AbstractGenerateDerivativeMediaFile.php b/src/Plugin/Action/AbstractGenerateDerivativeMediaFile.php
index be9eca80..2c4e9224 100644
--- a/src/Plugin/Action/AbstractGenerateDerivativeMediaFile.php
+++ b/src/Plugin/Action/AbstractGenerateDerivativeMediaFile.php
@@ -5,7 +5,6 @@ namespace Drupal\islandora\Plugin\Action;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Url;
-
 /**
  * Emits a Node for generating derivatives event.
  *
@@ -39,8 +38,8 @@ class AbstractGenerateDerivativeMediaFile extends AbstractGenerateDerivativeBase
    */
   protected function generateData(EntityInterface $entity) {
     $data = parent::generateData($entity);
-    if (get_class($entity) != 'Drupal\media\Entity\Media') {
-      throw new \RuntimeException("Entity {$entity->getEntityTypeId()} {$entity->id()} is not a media", 500);
+    if (get_class($entity) != 'Drupal\media\Entity\Media') { 
+      throw new \RuntimeException("Entity {$entity->getEntityTypeId()} {$entity->id()} is not a media", 500); 
     }
     $source_file = $this->mediaSource->getSourceFile($entity);
     if (!$source_file) {