From 78eb6e2e8fc96f1003b65cdfb45772ece3a1bdb2 Mon Sep 17 00:00:00 2001 From: Alexander O'Neill Date: Tue, 5 Mar 2024 13:52:36 -0400 Subject: [PATCH 1/4] Add thumbnail_navigation_position theme variable. --- islandora_mirador.module | 3 ++- src/Plugin/Block/MiradorBlock.php | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/islandora_mirador.module b/islandora_mirador.module index 298c87a..b02552e 100644 --- a/islandora_mirador.module +++ b/islandora_mirador.module @@ -20,6 +20,7 @@ function islandora_mirador_theme() { 'variables' => [ 'iiif_manifest_url' => NULL, 'mirador_view_id' => NULL, + 'thumbnail_navigation_position' => 'far-bottom', ], 'template' => 'mirador', ], @@ -78,7 +79,7 @@ function template_preprocess_mirador(&$variables) { 'windows' => [ [ 'manifestId' => $variables['iiif_manifest_url'], - 'thumbnailNavigationPosition' => 'far-bottom', + 'thumbnailNavigationPosition' => $variables['thumbnail_navigation_position'], ], ] ]; diff --git a/src/Plugin/Block/MiradorBlock.php b/src/Plugin/Block/MiradorBlock.php index 6af44b8..79d51e2 100644 --- a/src/Plugin/Block/MiradorBlock.php +++ b/src/Plugin/Block/MiradorBlock.php @@ -119,6 +119,9 @@ public function build() { ], ]; + if (!empty($this->configuration['thumbnail_navigation_position'])) { + $build['viewer']['#thumbnail_navigation_position'] = $this->configuration['thumbnail_navigation_position']; + } return $build; } From 3b21ffcceb91c128a5b216d26d567a2ec3513689 Mon Sep 17 00:00:00 2001 From: Alexander O'Neill Date: Tue, 5 Mar 2024 15:51:55 -0400 Subject: [PATCH 2/4] Allow themes to preprocess Mirador window config. --- islandora_mirador.module | 5 ++++- src/Plugin/Block/MiradorBlock.php | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/islandora_mirador.module b/islandora_mirador.module index b02552e..2d706a1 100644 --- a/islandora_mirador.module +++ b/islandora_mirador.module @@ -21,6 +21,7 @@ function islandora_mirador_theme() { 'iiif_manifest_url' => NULL, 'mirador_view_id' => NULL, 'thumbnail_navigation_position' => 'far-bottom', + 'window_config' => [], ], 'template' => 'mirador', ], @@ -47,7 +48,7 @@ function template_preprocess_mirador(&$variables) { $enabled_plugins = $config->get('mirador_enabled_plugins'); $variables['#attached']['drupalSettings']['mirador']['enabled_plugins'] = array_filter(array_values($enabled_plugins)); - $window_config = []; + $window_config = $variables['window_config']; foreach ($mirador_plugins as $plugin_id => $plugin_definition) { if ($enabled_plugins[$plugin_id]) { $plugin_instance = $mirador_plugin_manager->createInstance($plugin_id); @@ -58,6 +59,8 @@ function template_preprocess_mirador(&$variables) { } } + + // XXX: Maintain the original properties, for now. $variables['#attached']['drupalSettings']['mirador_view_id'] = $variables['mirador_view_id']; $variables['#attached']['drupalSettings']['mirador_window_settings'] = $window_config; diff --git a/src/Plugin/Block/MiradorBlock.php b/src/Plugin/Block/MiradorBlock.php index 79d51e2..4387fc4 100644 --- a/src/Plugin/Block/MiradorBlock.php +++ b/src/Plugin/Block/MiradorBlock.php @@ -122,6 +122,9 @@ public function build() { if (!empty($this->configuration['thumbnail_navigation_position'])) { $build['viewer']['#thumbnail_navigation_position'] = $this->configuration['thumbnail_navigation_position']; } + if (!empty($this->configuration['window_config'])) { + $build['viewer']['#window_config'] = $this->configuration['window_config']; + } return $build; } From 1f869fe68be3748c99585471312529e4cabac740 Mon Sep 17 00:00:00 2001 From: Alexander O'Neill Date: Tue, 5 Mar 2024 16:34:31 -0400 Subject: [PATCH 3/4] Add workspace settings to theme variables. --- islandora_mirador.module | 6 +++--- src/Plugin/Block/MiradorBlock.php | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/islandora_mirador.module b/islandora_mirador.module index 2d706a1..1b4a348 100644 --- a/islandora_mirador.module +++ b/islandora_mirador.module @@ -22,6 +22,7 @@ function islandora_mirador_theme() { 'mirador_view_id' => NULL, 'thumbnail_navigation_position' => 'far-bottom', 'window_config' => [], + 'workspace_config' => [], ], 'template' => 'mirador', ], @@ -59,8 +60,6 @@ function template_preprocess_mirador(&$variables) { } } - - // XXX: Maintain the original properties, for now. $variables['#attached']['drupalSettings']['mirador_view_id'] = $variables['mirador_view_id']; $variables['#attached']['drupalSettings']['mirador_window_settings'] = $window_config; @@ -84,7 +83,8 @@ function template_preprocess_mirador(&$variables) { 'manifestId' => $variables['iiif_manifest_url'], 'thumbnailNavigationPosition' => $variables['thumbnail_navigation_position'], ], - ] + ], + 'workspace' => $variables['workspace_config'], ]; } diff --git a/src/Plugin/Block/MiradorBlock.php b/src/Plugin/Block/MiradorBlock.php index 4387fc4..572f2f2 100644 --- a/src/Plugin/Block/MiradorBlock.php +++ b/src/Plugin/Block/MiradorBlock.php @@ -124,6 +124,7 @@ public function build() { } if (!empty($this->configuration['window_config'])) { $build['viewer']['#window_config'] = $this->configuration['window_config']; + $build['viewer']['#workspace_config'] = $this->configuration['workspace_config']; } return $build; } From 4dc683ff16fc5667716f5dede01fd8d254246275 Mon Sep 17 00:00:00 2001 From: Alexander O'Neill Date: Tue, 5 Mar 2024 17:03:13 -0400 Subject: [PATCH 4/4] Add theme variable section to README. --- README.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/README.md b/README.md index 4b8c9be..36e3871 100644 --- a/README.md +++ b/README.md @@ -182,6 +182,56 @@ Configure contexts at "Administration » Structure » Context". As noted previously, this is just one way to set up the Mirador viewer configurations. If, for example, you wanted to always use the Mirador viewer for pages and paged content, you could remove the "Mirador" condition from the "Node has term" condition in these contexts. +## Theme Variables + +Mirador's appearance and behaviour is configured via settings passed +to the JavaScript application. Mainly in 'window' and 'workspace' configuration +array. + +These can be specified via theme variables or by passing +them as arguments instantiating the Mirador block class. + +To hide the close button via a theme hook: + +```php +function mymodule_preprocess_mirador(&$variables) { + $variables['window_config']['allowClose'] = FALSE; +} +``` + +To make a minimal UI by instantiating the block: + +```php + $block = \Drupal::service('plugin.manager.block')->createInstance($viewer . '_block', [ + 'iiif_manifest_url' => "/node/$manifest_nid/manifest-single", + 'thumbnail_navigation_position' => 'hidden', + 'window_config' => [ + 'allowClose' => FALSE, + 'allowMaximize' => FALSE, + 'allowTopMenuButton' => FALSE, + 'allowWindowSideBar' => FALSE, + 'hideWindowTitle' => TRUE, + 'panels' => [ + 'info' => FALSE, + 'attribution' => FALSE, + ' canvas' => FALSE, + 'annotations' => FALSE, + 'search' => FALSE, + ], + ], + 'workspace_config' => [ + 'allowNewWindows' => FALSE, + 'isWorkspaceAddVisible' => FALSE, + 'workspaceControlPanel' => [ + 'enable' => FALSE, + ], + + ], + ]); + +``` + +See the Mirador FAQ for more options: https://github.com/ProjectMirador/mirador/wiki/M3---Mirador-3-Frequently-Asked-Questions ## Documentation