Browse Source

Issue #973 Add hooks to IIIF manifest Views Style plugin.

pull/938/head
Alexander O'Neill 2 years ago
parent
commit
8bc98e062f
  1. 31
      modules/islandora_iiif/src/Plugin/views/style/IIIFManifest.php

31
modules/islandora_iiif/src/Plugin/views/style/IIIFManifest.php

@ -4,6 +4,7 @@ namespace Drupal\islandora_iiif\Plugin\views\style;
use Drupal\views\Plugin\views\style\StylePluginBase; use Drupal\views\Plugin\views\style\StylePluginBase;
use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Entity\EntityTypeManagerInterface;
use \Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Messenger\MessengerInterface; use Drupal\Core\Messenger\MessengerInterface;
use Drupal\Core\Url; use Drupal\Core\Url;
@ -90,11 +91,16 @@ class IIIFManifest extends StylePluginBase {
* @var \Drupal\Core\Messenger\MessengerInterface * @var \Drupal\Core\Messenger\MessengerInterface
*/ */
protected $messenger; protected $messenger;
/**
* @var \Drupal\Core\Extention\ModuleHandlerInterface;
*/
protected $moduleHandler;
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function __construct(array $configuration, $plugin_id, $plugin_definition, SerializerInterface $serializer, Request $request, ImmutableConfig $iiif_config, EntityTypeManagerInterface $entity_type_manager, FileSystemInterface $file_system, Client $http_client, MessengerInterface $messenger) { public function __construct(array $configuration, $plugin_id, $plugin_definition, SerializerInterface $serializer, Request $request, ImmutableConfig $iiif_config, EntityTypeManagerInterface $entity_type_manager, FileSystemInterface $file_system, Client $http_client, MessengerInterface $messenger, ModuleHandlerInterface $moduleHandler) {
parent::__construct($configuration, $plugin_id, $plugin_definition); parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->serializer = $serializer; $this->serializer = $serializer;
@ -104,6 +110,7 @@ class IIIFManifest extends StylePluginBase {
$this->fileSystem = $file_system; $this->fileSystem = $file_system;
$this->httpClient = $http_client; $this->httpClient = $http_client;
$this->messenger = $messenger; $this->messenger = $messenger;
$this->moduleHandler = $moduleHandler;
} }
/** /**
@ -120,10 +127,21 @@ class IIIFManifest extends StylePluginBase {
$container->get('entity_type.manager'), $container->get('entity_type.manager'),
$container->get('file_system'), $container->get('file_system'),
$container->get('http_client'), $container->get('http_client'),
$container->get('messenger') $container->get('messenger'),
$container->get('module_handler')
); );
} }
/**
* Return the request property.
*
* @return \Symfony\Component\HttpFoundation\Request
* The Symfony request object
*/
public function getRequest() {
return $this->request;
}
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
@ -170,6 +188,9 @@ class IIIFManifest extends StylePluginBase {
$content_type = 'json'; $content_type = 'json';
// Give other modules a chance to alter the manifest.
$this->moduleHandler->alter('islandora_iiif_manifest', $json, $this);
return $this->serializer->serialize($json, $content_type, ['views_style_plugin' => $this]); return $this->serializer->serialize($json, $content_type, ['views_style_plugin' => $this]);
} }
@ -288,11 +309,15 @@ class IIIFManifest extends StylePluginBase {
]; ];
} }
// Give other modules a chance to alter the canvas
$alter_options = ['options' => $this->options, 'views_plugin' => $this];
$this->moduleHandler->alter('islandora_iiif_manifest_canvas', $tmp_canvas, $row, $alter_options);
$canvases[] = $tmp_canvas; $canvases[] = $tmp_canvas;
} }
} }
} }
return $canvases; return $canvases;
} }

Loading…
Cancel
Save