Bugzilla – Attachment 191537 Details for
Bug 41639
OPAC cover images use non-descriptive alt text
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 41639: Improve cover image alt text for WCAG 2.2 compliance
Bug-41639-Improve-cover-image-alt-text-for-WCAG-22.patch (text/plain), 29.39 KB, created by
Laura Escamilla
on 2026-01-15 20:43:43 UTC
(
hide
)
Description:
Bug 41639: Improve cover image alt text for WCAG 2.2 compliance
Filename:
MIME Type:
Creator:
Laura Escamilla
Created:
2026-01-15 20:43:43 UTC
Size:
29.39 KB
patch
obsolete
>From 1f5f01e74c4b89c2c85b0f308e21e05a34eae4fb Mon Sep 17 00:00:00 2001 >From: Laura_Escamilla <laura.escamilla@bywatersolutions.com> >Date: Thu, 15 Jan 2026 20:40:07 +0000 >Subject: [PATCH] Bug 41639: Improve cover image alt text for WCAG 2.2 > compliance > >Steps to Test >1. Enable at least one cover image provider: > * Amazon cover images > * Syndetics > * Google Jackets > * Open Library > * Coce > * Local cover images > * Custom cover images >2. Go to the Staff Intranet search results page and locate a bibliographic record with a visible cover image. >3. Inspect the cover image element in the browser developer tools. >4. Observe that the <img> element (or injected cover element in the case of Google Jackets / Open Library / Coce) uses a generic or non-descriptive alternative text, such as: > * alt="Amazon cover image" > * alt="Local cover image" > * alt="Cover from Syndetics" > * or no meaningful accessible name for injected images (Google Jackets, Open Library, Coce) >5. Click into the bibliographic record detail page in the Staff Intranet. >6. Inspect the cover image again and observe the same behavior. >7. Test for all cover image providers. >8. Repeat steps for the OPAC. >9. Apply the patch. >10. Repeat steps 1 - 8. >11. Confirm that the alt text (or accessible name) is now dynamically generated using bibliographic metadata, for example: > * alt="Cover of Complete Joe Pass by Joe Pass" >12. Everything is now accessibility verified, WCAG 2.2 SC 1.1.1 compliant, and with no regression across providers. Sign off and have an amazing day! :D >--- > .../prog/en/modules/catalogue/detail.tt | 13 +++--- > .../prog/en/modules/catalogue/results.tt | 25 ++++++++--- > .../bootstrap/en/includes/cover-images.inc | 28 +++++++++--- > .../bootstrap/en/modules/opac-detail.tt | 45 ++++++++++++++----- > 4 files changed, 84 insertions(+), 27 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >index e59c5371cf..0a593190d3 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >@@ -237,6 +237,9 @@ > <!-- /.col-xs-* --> > > [% IF ( CoverImagePlugins || AmazonCoverImages || LocalCoverImages || IntranetCoce || ( SyndeticsCovers ) || (Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL')) ) %] >+ [% SET cover_title = biblio.title || '' %] >+ [% SET cover_author = biblio.author || '' %] >+ > <div class="col-sm-3 bookcoverimg"> > <div id="biblio-cover-slider" class="cover-slider" data-isbn="[% normalized_isbn | html %]"> > [% IF ( LocalCoverImages ) %] >@@ -246,7 +249,7 @@ > <a href="/cgi-bin/koha/catalogue/image.pl?imagenumber=[% image.imagenumber | uri %]" title="Local cover image"> > <img > src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&imagenumber=[% image.imagenumber | uri %]" >- alt="Local cover image" >+ alt="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]" > data-link="/cgi-bin/koha/catalogue/imageviewer.pl?biblionumber=[% biblionumber | uri %]&imagenumber=[% image.imagenumber | uri %]" > /> > </a> >@@ -261,7 +264,7 @@ > <a href="https://images-na.ssl-images-amazon.com/images/P/[% normalized_isbn | uri %].01.LZZZZZZZ.jpg" title="Amazon cover image"> > <img > src="https://images-na.ssl-images-amazon.com/images/P/[% normalized_isbn | uri %].01.MZZZZZZZ.jpg" >- alt="Amazon cover image" >+ alt="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]" > data-link="http://www.amazon[% AmazonTld | uri %]/gp/reader/[% normalized_isbn | uri %][% AmazonAssocTag | uri %]#reader-link" > /> > </a> >@@ -273,7 +276,7 @@ > [% coce_id = normalized_ean || normalized_isbn %] > <div class="cover-image coce-coverimg"> > [% IF ( coce_id ) %] >- <a title="Image from Coce" class="[% coce_id | html %]" id="coce-thumbnail-preview"></a> >+ <a title="Image from Coce" class="[% coce_id | html %]" id="coce-thumbnail-preview" role="img" aria-label="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]"></a> > [% ELSE %] > <span class="no-image">No cover image available</span> > [% END %] >@@ -290,7 +293,7 @@ > > > <img > src="https://secure.syndetics.com/index.aspx?isbn=[% normalized_isbn | url %]/[% Koha.Preference('SyndeticsCoverImageSize') | url %].GIF&client=[% Koha.Preference('SyndeticsClientCode') | url %]&type=xw10&upc=[% normalized_upc | url %]&oclc=[% normalized_oclc | url %]" >- alt="" >+ alt="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]" > class="thumbnail" > /> > </a> >@@ -306,7 +309,7 @@ > [% IF custom_cover_image_url %] > <div class="cover-image" id="custom-coverimg"> > <a class="custom_cover_image" href="[% custom_cover_image_url | url %]" title="Custom cover image"> >- <img id="custom-img" alt="Custom cover image" src="[% custom_cover_image_url | url %]" /> >+ <img id="custom-img" alt="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]" src="[% custom_cover_image_url | url %]" /> > </a> > <div class="hint">Custom cover image</div> > </div> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt >index c04479af86..69adf18cc1 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt >@@ -584,6 +584,8 @@ > <tbody> > [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %] > <tr id="row[% SEARCH_RESULT.biblionumber | html %]"> >+ [% SET cover_title = SEARCH_RESULT.title | html %] >+ [% SET cover_author = SEARCH_RESULT.author | html %] > [% IF ( CoverImagePlugins || AmazonCoverImages || LocalCoverImages || IntranetCoce || ( SyndeticsCovers ) || (Koha.Preference('CustomCoverImages') && Koha.Preference('CustomCoverImagesURL')) ) %] > <td > class="bookcoverimg" >@@ -605,7 +607,10 @@ > [% IF ( LocalCoverImages && SEARCH_RESULT.has_local_cover_image ) %] > <div id="local-coverimg-[% SEARCH_RESULT.biblionumber | html %]" class="cover-image local-coverimg"> > <a href="[% PROCESS biblio_a_href biblionumber => SEARCH_RESULT.biblionumber %]"> >- <img src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&biblionumber=[% SEARCH_RESULT.biblionumber | uri %]" alt="Local cover image" /> >+ <img >+ src="/cgi-bin/koha/catalogue/image.pl?thumbnail=1&biblionumber=[% SEARCH_RESULT.biblionumber | uri %]" >+ alt="Cover of [% cover_title %][% IF cover_author %]by [% cover_author %][% END %]" >+ /> > </a> > <div class="hint">Local cover image</div> > </div> >@@ -614,7 +619,10 @@ > [% IF ( AmazonCoverImages && SEARCH_RESULT.normalized_isbn ) %] > <div id="amazon-bookcoverimg-[% SEARCH_RESULT.biblionumber | html %]" class="cover-image amazon-bookcoverimg"> > <a href="[% PROCESS biblio_a_href biblionumber => SEARCH_RESULT.biblionumber %]"> >- <img src="https://images-na.ssl-images-amazon.com/images/P/[% SEARCH_RESULT.normalized_isbn | html %].01.TZZZZZZZ.jpg" alt="Cover image from Amazon.com" /> >+ <img >+ src="https://images-na.ssl-images-amazon.com/images/P/[% SEARCH_RESULT.normalized_isbn | html %].01.TZZZZZZZ.jpg" >+ alt="Cover of [% cover_title %][% IF cover_author %]by [% cover_author %][% END %]" >+ /> > </a> > <div class="hint">Amazon cover image</div> > </div> >@@ -626,7 +634,7 @@ > <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% SEARCH_RESULT.biblionumber | uri %]"> > <img > src="https://secure.syndetics.com/index.aspx?isbn=[% SEARCH_RESULT.normalized_isbn | html %]/[% SyndeticsCoverImageSize | uri %].GIF&client=[% Koha.Preference('SyndeticsClientCode') | html %]&type=xw10&upc=[% SEARCH_RESULT.normalized_upc | html %]&oclc=[% SEARCH_RESULT.normalized_oclc | html %]" >- alt="Cover from Syndetics" >+ alt="Cover of [% cover_title %][% IF cover_author %]by [% cover_author %][% END %]" > /> > </a> > <div class="hint">Syndetics cover image</div> >@@ -639,7 +647,14 @@ > [% IF ( coce_id ) %] > <div id="coce-coverimg-[% SEARCH_RESULT.biblionumber | html %]" class="cover-image coce-coverimg"> > <a href="[% PROCESS biblio_a_href biblionumber => SEARCH_RESULT.biblionumber %]"> >- <span style="block" title="[% SEARCH_RESULT.biblionumber | url %]" class="[% coce_id | html %]" id="coce-thumbnail[% SEARCH_RESULT.biblionumber | html %]"></span> >+ <span >+ style="block" >+ title="[% SEARCH_RESULT.biblionumber | url %]" >+ class="[% coce_id | html %]" >+ id="coce-thumbnail[% SEARCH_RESULT.biblionumber | html %]" >+ role="img" >+ aria-label="Cover of [% cover_title %][% IF cover_author %]by [% cover_author %][% END %]" >+ ></span> > </a> > <div class="hint">Coce cover image</div> > </div> >@@ -651,7 +666,7 @@ > [% IF custom_cover_image_url %] > <div id="custom-coverimg-[% SEARCH_RESULT.biblionumber | html %]" class="cover-image custom-coverimg"> > <a class="custom_cover_image" href="[% custom_cover_image_url | url %]"> >- <img alt="Custom cover image" src="[% custom_cover_image_url | url %]" /> >+ <img alt="Custom cover of [% cover_title %][% IF cover_author %]by [% cover_author %][% END %]" src="[% custom_cover_image_url | url %]" /> > </a> > <div class="hint">Custom cover image</div> > </div> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/cover-images.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/cover-images.inc >index 16f7fe2698..6976617bf7 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/cover-images.inc >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/cover-images.inc >@@ -17,10 +17,12 @@ > data-isbn="[% SEARCH_RESULT.normalized_isbn | html %]" > data-isbn="[% To.json(SEARCH_RESULT.normalized_isbn) | $raw %]" > > >+ [% SET cover_title = SEARCH_RESULT.title | html %] >+ [% SET cover_author = SEARCH_RESULT.author | html %] > [% IF ( OPACLocalCoverImages && SEARCH_RESULT.has_local_cover_image ) %] > <div class="cover-image local-coverimg"> > <a href="/cgi-bin/koha/opac-image.pl?biblionumber=[% SEARCH_RESULT.biblionumber | uri %]"> >- <img src="/cgi-bin/koha/opac-image.pl?thumbnail=1&biblionumber=[% SEARCH_RESULT.biblionumber | uri %]" alt="Local cover image" /> >+ <img src="/cgi-bin/koha/opac-image.pl?thumbnail=1&biblionumber=[% SEARCH_RESULT.biblionumber | uri %]" alt="Cover of [% cover_title %][% IF cover_author %]by [% cover_author %][% END %]" /> > </a> > <div class="hint">Local cover image</div> > </div> >@@ -31,7 +33,7 @@ > <a href="https://images-na.ssl-images-amazon.com/images/P/[% SEARCH_RESULT.normalized_isbn | uri %].01.LZZZZZZZ.jpg"> > <img > src="https://images-na.ssl-images-amazon.com/images/P/[% SEARCH_RESULT.normalized_isbn | uri %].01.MZZZZZZZ.jpg" >- alt="Amazon cover image" >+ alt="Cover of [% cover_title %][% IF cover_author %]by [% cover_author %][% END %]" > id="amazon-thumbnail-[% SEARCH_RESULT.biblionumber | html %]" > data-link="http://www.amazon[% AmazonTld | uri %]/gp/reader/[% SEARCH_RESULT.normalized_isbn | html %][% AmazonAssocTag | html %]#reader-link" > /> >@@ -49,7 +51,7 @@ > <img > src="https://secure.syndetics.com/index.aspx?isbn=[% SEARCH_RESULT.normalized_isbn | uri %]/[% SyndeticsCoverImageSize | uri %].GIF&client=[% SyndeticsClientCode | uri %]&type=xw10&upc=[% SEARCH_RESULT.normalized_upc | uri %]&oclc=[% SEARCH_RESULT.normalized_oclc | uri %]" > id="syndetics-thumbnail-[% SEARCH_RESULT.biblionumber | html %]" >- alt="Syndetics cover image" >+ alt="Cover of [% cover_title %][% IF cover_author %]by [% cover_author %][% END %]" > /> > </a> > <div class="hint">Image from Syndetics</div> >@@ -59,7 +61,13 @@ > > [% IF ( GoogleJackets ) %] > <div class="cover-image googlejacket-coverimg"> >- <div class="[% SEARCH_RESULT.normalized_isbn | html %]" id="gbs-thumbnail-preview" data-use-data-link="1"></div> >+ <div >+ class="[% SEARCH_RESULT.normalized_isbn | html %]" >+ id="gbs-thumbnail-preview" >+ role="img" >+ aria-label="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]" >+ data-use-data-link="1" >+ ></div> > <div class="hint">Image from Google Jackets</div> > </div> > [% END %] >@@ -68,7 +76,7 @@ > [% coce_id = normalized_ean || SEARCH_RESULT.normalized_isbn %] > <div class="cover-image coce-coverimg"> > [% IF ( coce_id ) %] >- <a class="[% coce_id | html %]" id="coce-thumbnail-[% SEARCH_RESULT.biblionumber | html %]"></a> >+ <a class="[% coce_id | html %]" id="coce-thumbnail-[% SEARCH_RESULT.biblionumber | html %]" role="img" aria-label="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]"></a> > [% END %] > <div class="hint">Image from Coce</div> > </div> >@@ -76,7 +84,13 @@ > > [% IF OpenLibraryCovers %] > <div class="cover-image openlibrary-coverimg"> >- <div class="[% SEARCH_RESULT.normalized_isbn | html %]" id="openlibrary-thumbnail-[% SEARCH_RESULT.biblionumber | html %]" data-use-data-link="1"></div> >+ <div >+ class="[% SEARCH_RESULT.normalized_isbn | html %]" >+ id="openlibrary-thumbnail-[% SEARCH_RESULT.biblionumber | html %]" >+ role="img" >+ aria-label="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]" >+ data-use-data-link="1" >+ ></div> > <div class="hint">Image from OpenLibrary</div> > </div> > [% END %] >@@ -102,7 +116,7 @@ > [% IF custom_cover_image_url %] > <div class="cover-image custom-coverimg"> > <a class="custom_cover_image" href="[% custom_cover_image_url | url %]"> >- <img id="custom-thumbnail-[% SEARCH_RESULT.biblionumber | html %]" alt="Custom cover image" src="[% custom_cover_image_url | url %]" /> >+ <img id="custom-thumbnail-[% SEARCH_RESULT.biblionumber | html %]" alt="Cover of [% cover_title %][% IF cover_author %]by [% cover_author %][% END %]" src="[% custom_cover_image_url | url %]" /> > </a> > <div class="hint">Custom cover image</div> > </div> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt >index 63e004d029..3eaeb4dce0 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt >@@ -76,6 +76,8 @@ > <div class="col-lg-9"> > <div id="catalogue_detail_biblio" class="maincontent" data-biblionumber="[% biblio.biblionumber | html %]"> > <div class="bookcover"> >+ [% SET cover_title = biblio.title || '' %] >+ [% SET cover_author = biblio.author || '' %] > <div id="biblio-cover-slider" class="cover-slider cover-slides" data-isbn="[% normalized_isbn | html %]"> > [% IF ( OPACLocalCoverImages ) %] > [% IF localimages.count %] >@@ -84,7 +86,7 @@ > <a href="/cgi-bin/koha/opac-image.pl?imagenumber=[% image.imagenumber | uri %]" title="Local cover image"> > <img > src="/cgi-bin/koha/opac-image.pl?thumbnail=1&imagenumber=[% image.imagenumber | uri %]" >- alt="Local cover image" >+ alt="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]" > data-link="/cgi-bin/koha/opac-imageviewer.pl?biblionumber=[% biblionumber | uri %]&imagenumber=[% image.imagenumber | uri %]" > /> > </a> >@@ -99,7 +101,7 @@ > <a href="https://images-na.ssl-images-amazon.com/images/P/[% normalized_isbn | uri %].01.LZZZZZZZ.jpg" title="Amazon cover image"> > <img > src="https://images-na.ssl-images-amazon.com/images/P/[% normalized_isbn | uri %].01.MZZZZZZZ.jpg" >- alt="Amazon cover image" >+ alt="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]" > data-link="http://www.amazon[% AmazonTld | uri %]/gp/reader/[% normalized_isbn | uri %][% AmazonAssocTag | uri %]#reader-link" > /> > </a> >@@ -116,7 +118,7 @@ > > > <img > src="https://secure.syndetics.com/index.aspx?isbn=[% normalized_isbn | uri %]/[% SyndeticsCoverImageSize | uri %].GIF&client=[% SyndeticsClientCode | uri %]&type=xw10&upc=[% normalized_upc | uri %]&oclc=[% normalized_oclc | uri %]" >- alt="Syndetics cover image" >+ alt="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]" > /> > </a> > <div class="hint">Image from Syndetics</div> >@@ -126,7 +128,14 @@ > > [% IF ( GoogleJackets ) %] > <div class="cover-image" id="googlejacket-coverimg"> >- <div title="[% img_title | html %]" class="[% normalized_isbn | html %]" id="gbs-thumbnail-preview" data-use-data-link="1"></div> >+ <div >+ title="[% img_title | html %]" >+ class="[% normalized_isbn | html %]" >+ id="gbs-thumbnail-preview" >+ role="img" >+ aria-label="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]" >+ data-use-data-link="1" >+ ></div> > <div class="hint">Image from Google Jackets</div> > </div> > [% END %] >@@ -135,7 +144,13 @@ > [% coce_id = normalized_ean || normalized_isbn %] > <div class="cover-image coce-coverimg"> > [% IF ( coce_id ) %] >- <a title="Image from Coce" class="[% coce_id | html %]" id="coce-thumbnail-preview"></a> >+ <a >+ title="Image from Coce" >+ class="[% coce_id | html %]" >+ id="coce-thumbnail-preview" >+ role="img" >+ aria-label="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]" >+ ></a> > [% END %] > <div class="hint">Image from Coce</div> > </div> >@@ -143,7 +158,14 @@ > > [% IF OpenLibraryCovers %] > <div class="cover-image" id="openlibrary-coverimg"> >- <div title="[% img_title | html %]" class="[% normalized_isbn | html %]" id="openlibrary-thumbnail-preview" data-use-data-link="1"></div> >+ <div >+ title="[% img_title | html %]" >+ class="[% normalized_isbn | html %]" >+ id="openlibrary-thumbnail-preview" >+ role="img" >+ aria-label="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]" >+ data-use-data-link="1" >+ ></div> > <div class="hint">Image from OpenLibrary</div> > </div> > [% END %] >@@ -153,7 +175,7 @@ > <div class="cover-image" id="bakertaylor-coverimg"> > [% IF BakerTaylorBookstoreURL %] > <a href="https://[% BakerTaylorBookstoreURL | url %][% bt_id | url %]"> >- <img alt="See Baker & Taylor" src="[% BakerTaylorImageURL | url %][% bt_id | uri %]" /> >+ <img alt="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]" src="[% BakerTaylorImageURL | url %][% bt_id | uri %]" /> > </a> > [% ELSE %] > <a href="[% BakerTaylorImageURL | url %][% bt_id | uri %]"> >@@ -169,7 +191,7 @@ > [% IF custom_cover_image_url %] > <div class="cover-image" id="custom-coverimg"> > <a class="custom_cover_image" href="[% custom_cover_image_url | url %]" title="Custom cover image"> >- <img id="custom-img" alt="Custom cover image" src="[% custom_cover_image_url | url %]" /> >+ <img id="custom-img" alt="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]" src="[% custom_cover_image_url | url %]" /> > </a> > <div class="hint">Custom cover image</div> > </div> >@@ -1010,7 +1032,7 @@ > <p>Click on an image to view it in the image viewer</p> > [% FOREACH image IN localimages %] > <a href="/cgi-bin/koha/opac-imageviewer.pl?biblionumber=[% biblio.biblionumber | uri %]&imagenumber=[% image.imagenumber | uri %]" title="Local cover image"> >- <img src="/cgi-bin/koha/opac-image.pl?thumbnail=1&imagenumber=[% image.imagenumber | uri %]" alt="Local cover image" /> >+ <img src="/cgi-bin/koha/opac-image.pl?thumbnail=1&imagenumber=[% image.imagenumber | uri %]" alt="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]" /> > </a> > [% END %] > [% END # /tab_panel#images %] >@@ -1328,7 +1350,10 @@ > [% FOR image IN ITEM_RESULT.cover_images %] > <div class="cover-image local-coverimg"> > <a href="/cgi-bin/koha/opac-image.pl?itemnumber=[% image.itemnumber | uri %]&imagenumber=[% image.imagenumber | uri %]" title="Local cover image"> >- <img src="/cgi-bin/koha/opac-image.pl?thumbnail=1&imagenumber=[% image.imagenumber | uri %]" alt="Local cover image" /> >+ <img >+ src="/cgi-bin/koha/opac-image.pl?thumbnail=1&imagenumber=[% image.imagenumber | uri %]" >+ alt="Cover of [% cover_title | html %][% IF cover_author %]by [% cover_author | html %][% END %]" >+ /> > </a> > </div> > [% END %] >-- >2.39.5
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 41639
: 191537