From 2203f9a4f1e03e3afa232b7640775f839d2499f7 Mon Sep 17 00:00:00 2001 From: Daniel Berthereau Date: Mon, 8 Apr 2024 00:00:00 +0000 Subject: [PATCH 1/3] Set lazy loading for images. --- application/src/Stdlib/Oembed.php | 2 +- application/src/View/Helper/Thumbnail.php | 7 +++++++ application/view/common/asset-form.phtml | 4 ++-- application/view/common/asset-options.phtml | 2 +- .../view/omeka/site-admin/index/theme-selector.phtml | 2 +- application/view/omeka/site-admin/index/theme.phtml | 2 +- 6 files changed, 13 insertions(+), 6 deletions(-) diff --git a/application/src/Stdlib/Oembed.php b/application/src/Stdlib/Oembed.php index f95319f8b6..7d77298f3c 100644 --- a/application/src/Stdlib/Oembed.php +++ b/application/src/Stdlib/Oembed.php @@ -88,7 +88,7 @@ public function renderOembed(PhpRenderer $view, array $oembed) if ('photo' === $type) { $url = $oembed['url'] ?? null; return sprintf( - '%s', + '%s', $view->escapeHtml($url), $view->escapeHtml($oembed['width'] ?? ''), $view->escapeHtml($oembed['height'] ?? ''), diff --git a/application/src/View/Helper/Thumbnail.php b/application/src/View/Helper/Thumbnail.php index d4933bb636..54bec363f6 100644 --- a/application/src/View/Helper/Thumbnail.php +++ b/application/src/View/Helper/Thumbnail.php @@ -31,6 +31,13 @@ public function __invoke(AbstractRepresentation $representation, $type, array $a $params = $triggerHelper('view_helper.thumbnail.attribs', $params, true); $attribs = $params['attribs']; + // Include element for lazy loading. See https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/loading + if (!isset($attribs['loading'])) { + // Due to a bug in firefox, the attribute "loading" should be set + // before src (see https://bugzilla.mozilla.org/show_bug.cgi?id=1647077). + $attribs = ['loading' => 'lazy'] + $attribs; + } + if (!isset($attribs['alt'])) { $attribs['alt'] = $representation->thumbnailAltText(); } diff --git a/application/view/common/asset-form.phtml b/application/view/common/asset-form.phtml index e81c62e0c4..ee8df74ce2 100644 --- a/application/view/common/asset-form.phtml +++ b/application/view/common/asset-form.phtml @@ -19,7 +19,7 @@ if ($assetId) {
%s
', + echo sprintf('%s
%s
', $this->escapeHtml($asset->assetUrl()), $this->escapeHtml($asset->altText()), $this->escapeHtml($asset->name()) @@ -28,7 +28,7 @@ if ($assetId) {
diff --git a/application/view/common/asset-options.phtml b/application/view/common/asset-options.phtml index 16f82a85f1..1bc566bf32 100644 --- a/application/view/common/asset-options.phtml +++ b/application/view/common/asset-options.phtml @@ -9,7 +9,7 @@ $form->prepare(); $selectedAssetTemplate = '

' . $translate('No Asset') . '

- +
' . $translate('[No asset selected]') . ' diff --git a/application/view/omeka/site-admin/index/theme-selector.phtml b/application/view/omeka/site-admin/index/theme-selector.phtml index 95c3ee0ae8..c490ee08c6 100644 --- a/application/view/omeka/site-admin/index/theme-selector.phtml +++ b/application/view/omeka/site-admin/index/theme-selector.phtml @@ -28,7 +28,7 @@ $this->headScript()->appendFile($this->assetUrl('js/site-theme.js', 'Omeka')); getIni('omeka_version_constraint')); ?> -
+

escapeHtml($theme->getName()); ?>

diff --git a/application/view/omeka/site-admin/index/theme.phtml b/application/view/omeka/site-admin/index/theme.phtml index 1a4db84667..d893d23436 100644 --- a/application/view/omeka/site-admin/index/theme.phtml +++ b/application/view/omeka/site-admin/index/theme.phtml @@ -20,7 +20,7 @@ $fallbackThumbnailUrl = $this->assetUrl('img/theme.jpg', 'Omeka');
getThumbnail(); ?> basePath() . $currentTheme->getThumbnail(); ?> -
+

From ae7af692dd40d3dda307a62a12baeb762dfc8200 Mon Sep 17 00:00:00 2001 From: Daniel Berthereau Date: Mon, 8 Apr 2024 00:00:00 +0000 Subject: [PATCH 2/3] Fixed image attribute title for oEmbed. --- application/src/Stdlib/Oembed.php | 1 + 1 file changed, 1 insertion(+) diff --git a/application/src/Stdlib/Oembed.php b/application/src/Stdlib/Oembed.php index 7d77298f3c..945689238f 100644 --- a/application/src/Stdlib/Oembed.php +++ b/application/src/Stdlib/Oembed.php @@ -87,6 +87,7 @@ public function renderOembed(PhpRenderer $view, array $oembed) $type = $oembed['type'] ?? null; if ('photo' === $type) { $url = $oembed['url'] ?? null; + $data = $oembed['oembed'] ?? []; return sprintf( '%s', $view->escapeHtml($url), From 2857ce7c786a93972a3f9567dba0ec92dc27ad8b Mon Sep 17 00:00:00 2001 From: Daniel Berthereau Date: Mon, 8 Apr 2024 00:00:00 +0000 Subject: [PATCH 3/3] Set lazy loading for iframe. --- application/src/Media/Renderer/Youtube.php | 2 +- application/src/View/Helper/IiifViewer.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/application/src/Media/Renderer/Youtube.php b/application/src/Media/Renderer/Youtube.php index df79ec8d32..00609e43a0 100644 --- a/application/src/Media/Renderer/Youtube.php +++ b/application/src/Media/Renderer/Youtube.php @@ -36,7 +36,7 @@ public function render(PhpRenderer $view, MediaRepresentation $media, } $url->setQuery($query); $embed = sprintf( - '', + '', $view->escapeHtml($options['width']), $view->escapeHtml($options['height']), $view->escapeHtml($url), diff --git a/application/src/View/Helper/IiifViewer.php b/application/src/View/Helper/IiifViewer.php index cf65820fa7..464e3002a4 100644 --- a/application/src/View/Helper/IiifViewer.php +++ b/application/src/View/Helper/IiifViewer.php @@ -23,6 +23,6 @@ public function __invoke(array $query, array $options = []) $width = $options['width'] ?? '100%'; $height = $options['height'] ?? '700px'; $src = $view->url('iiif-viewer', [], ['force_canonical' => true, 'query' => $query]); - return sprintf('', $width, $height, $view->escapeHtml($src)); + return sprintf('', $width, $height, $view->escapeHtml($src)); } }