Skip to content

Commit

Permalink
Merge pull request Islandora#938 from Islandora/issue-973-islandora-i…
Browse files Browse the repository at this point in the history
…iif-hooks

Issue Islandora#973 Add hooks to IIIF manifest Views Style plugin.
  • Loading branch information
wgilling authored May 9, 2023
2 parents c80e687 + 9945457 commit 48b73c5
Showing 1 changed file with 32 additions and 2 deletions.
34 changes: 32 additions & 2 deletions modules/islandora_iiif/src/Plugin/views/style/IIIFManifest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use Drupal\views\Plugin\views\style\StylePluginBase;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Messenger\MessengerInterface;
use Drupal\Core\Url;
Expand Down Expand Up @@ -91,10 +92,17 @@ class IIIFManifest extends StylePluginBase {
*/
protected $messenger;

/**
* Module Handler for running hooks.
*
* @var \Drupal\Core\Extention\ModuleHandlerInterface
*/
protected $moduleHandler;

/**
* {@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);

$this->serializer = $serializer;
Expand All @@ -104,6 +112,7 @@ public function __construct(array $configuration, $plugin_id, $plugin_definition
$this->fileSystem = $file_system;
$this->httpClient = $http_client;
$this->messenger = $messenger;
$this->moduleHandler = $moduleHandler;
}

/**
Expand All @@ -120,10 +129,21 @@ public static function create(ContainerInterface $container, array $configuratio
$container->get('entity_type.manager'),
$container->get('file_system'),
$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}
*/
Expand Down Expand Up @@ -170,6 +190,9 @@ public function render() {

$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]);
}

Expand Down Expand Up @@ -288,6 +311,13 @@ protected function getTileSourceFromRow(ResultRow $row, $iiif_address, $iiif_bas
];
}

// 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;
}
}
Expand Down

0 comments on commit 48b73c5

Please sign in to comment.