Skip to content

Commit daf1601

Browse files
committed
Add site config for IIIF viewer
1 parent b08e424 commit daf1601

File tree

3 files changed

+49
-3
lines changed

3 files changed

+49
-3
lines changed

application/src/Controller/IiifViewerController.php

+3
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ public function indexAction()
4949
if (isset($miradorConfigUser['window.sideBarOpen'])) {
5050
$miradorConfig['window']['sideBarOpen'] = $miradorConfigUser['window.sideBarOpen'];
5151
}
52+
if (isset($miradorConfigUser['selectedTheme'])) {
53+
$miradorConfig['selectedTheme'] = $miradorConfigUser['selectedTheme'];
54+
}
5255

5356
$view = new ViewModel;
5457
$view->setTerminal(true);

application/src/Form/SiteSettingsForm.php

+29
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public function init()
3333
'browse' => 'Browse', // @translate
3434
'show' => 'Show', // @translate
3535
'search' => 'Search', // @translate
36+
'iiif_viewer' => 'IIIF viewer', // @translate
3637
]);
3738

3839
// o:assign_new_items element is a pseudo-setting that's ultimately set
@@ -424,6 +425,34 @@ public function init()
424425
],
425426
]);
426427

428+
// IIIF viewer section
429+
$this->add([
430+
'type' => 'checkbox',
431+
'name' => 'iiif_viewer_sidebar',
432+
'options' => [
433+
'element_group' => 'iiif_viewer',
434+
'label' => 'Show sidebar', // @translate
435+
],
436+
'attributes' => [
437+
'value' => $settings->get('iiif_viewer_sidebar', false),
438+
],
439+
]);
440+
$this->add([
441+
'type' => 'select',
442+
'name' => 'iiif_viewer_theme',
443+
'options' => [
444+
'element_group' => 'iiif_viewer',
445+
'label' => 'Theme', // @translate
446+
'value_options' => [
447+
'light' => 'Light', // @translate
448+
'dark' => 'Dark', // @translate
449+
],
450+
],
451+
'attributes' => [
452+
'value' => $settings->get('iiif_viewer_theme'),
453+
],
454+
]);
455+
427456
$addEvent = new Event('form.add_elements', $this);
428457
$this->getEventManager()->triggerEvent($addEvent);
429458

application/src/Media/Renderer/IiifPresentation.php

+17-3
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,25 @@ class IiifPresentation implements RendererInterface
88
{
99
public function render(PhpRenderer $view, MediaRepresentation $media, array $options = [])
1010
{
11+
$miradorConfig = [
12+
'window.sideBarOpen' => false,
13+
'selectedTheme' => 'light',
14+
];
15+
if ($view->status()->isSiteRequest()) {
16+
// Respect site settings for the IIIF viewer.
17+
$miradorConfig['window.sideBarOpen'] = (bool) $view->siteSetting('iiif_viewer_sidebar', false);
18+
switch ($view->siteSetting('iiif_viewer_theme', 'light')) {
19+
case 'dark':
20+
$miradorConfig['selectedTheme'] = 'dark';
21+
break;
22+
case 'light':
23+
default:
24+
$miradorConfig['selectedTheme'] = 'light';
25+
}
26+
}
1127
$query = [
1228
'url' => $media->source(),
13-
'mirador_config' => json_encode([
14-
'window.sideBarOpen' => false,
15-
]),
29+
'mirador_config' => json_encode($miradorConfig),
1630
];
1731
return $view->iiifViewer($query, $options);
1832
}

0 commit comments

Comments
 (0)