Bugzilla – Attachment 154944 Details for
Bug 34527
Enhance the Openlibrary book cover retrieval to use the 024 MARC record and the OLID
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 34527: Enhance the Openlibrary book cover retrieval to use OLID
Bug-34527-Enhance-the-Openlibrary-book-cover-retri.patch (text/plain), 11.72 KB, created by
Jonathan Druart
on 2023-08-30 10:45:43 UTC
(
hide
)
Description:
Bug 34527: Enhance the Openlibrary book cover retrieval to use OLID
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2023-08-30 10:45:43 UTC
Size:
11.72 KB
patch
obsolete
>From 628f43dad0210f8964ba7ffc9b6a3f7d588cc19f Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Wed, 30 Aug 2023 12:44:23 +0200 >Subject: [PATCH] Bug 34527: Enhance the Openlibrary book cover retrieval to > use OLID > >--- > C4/Search.pm | 10 +++ > .../bootstrap/en/modules/opac-detail.tt | 8 +-- > .../bootstrap/en/modules/opac-results.tt | 6 +- > .../bootstrap/en/modules/opac-shelves.tt | 2 +- > .../opac-tmpl/bootstrap/js/openlibrary.js | 69 +++++++++++-------- > opac/opac-detail.pl | 9 +++ > 6 files changed, 66 insertions(+), 38 deletions(-) > >diff --git a/C4/Search.pm b/C4/Search.pm >index e2de36571e2..4bd47dd3249 100644 >--- a/C4/Search.pm >+++ b/C4/Search.pm >@@ -1744,6 +1744,16 @@ sub searchResults { > $oldbiblio->{normalized_ean} = GetNormalizedEAN( $marcrecord,$marcflavour); > $oldbiblio->{normalized_oclc} = GetNormalizedOCLCNumber($marcrecord,$marcflavour); > $oldbiblio->{normalized_isbn} = GetNormalizedISBN($oldbiblio->{isbn},$marcrecord,$marcflavour); # Use existing ISBN from record if we got one >+ >+ if ( C4::Context->preference('OpenLibraryCovers') ) { >+ for my $field ( $marcrecord->field('024') ) { >+ if ( $field->subfield('2') eq 'openlib' ) { >+ $oldbiblio->{olid} = $field->subfield('a'); >+ last; >+ } >+ } >+ } >+ > $oldbiblio->{content_identifier_exists} = 1 if ($oldbiblio->{normalized_isbn} or $oldbiblio->{normalized_oclc} or $oldbiblio->{normalized_ean} or $oldbiblio->{normalized_upc}); > > # edition information, if any >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 8449cc3b864..37f925a73d3 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt >@@ -114,7 +114,7 @@ > > [% 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 %]" data-isbn="[% normalized_isbn | html %]" data-olid="[% olid | html %]" id="openlibrary-thumbnail-preview" data-use-data-link="1"></div> > <div class="hint">Image from OpenLibrary</div> > </div> > [% END %] >@@ -1834,7 +1834,7 @@ > [% END %] > > [% IF OpenLibraryCovers %] >- KOHA.OpenLibrary.GetCoverFromIsbn(); >+ KOHA.OpenLibrary.GetCover(); > [% END %] > > [% IF ( NovelistSelectProfile && ( normalized_isbn || normalized_upc ) ) %] >@@ -1887,7 +1887,7 @@ > KOHA.coce.getURL('[% Koha.Preference('CoceHost') | html %]', '[% Koha.Preference('CoceProviders') | html %]', $("#bibliodescriptions")); > [% END %] > [% IF OpenLibraryCovers %] >- KOHA.OpenLibrary.GetCoverFromIsbn(); >+ KOHA.OpenLibrary.GetCover(); > [% END %] > [% IF OPACLocalCoverImages %] > KOHA.LocalCover.GetCoverFromBibnumber(true); >@@ -1913,7 +1913,7 @@ > KOHA.coce.getURL('[% Koha.Preference('CoceHost') | html %]', '[% Koha.Preference('CoceProviders') | html %]', $("#bibliodescriptions")); > [% END %] > [% IF OpenLibraryCovers %] >- KOHA.OpenLibrary.GetCoverFromIsbn(); >+ KOHA.OpenLibrary.GetCover(); > [% END %] > [% IF OPACLocalCoverImages %] > KOHA.LocalCover.GetCoverFromBibnumber(true); >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt >index 875bf71e2bc..a508dd3bdc8 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt >@@ -389,8 +389,8 @@ > [% END %] > > [% IF OpenLibraryCovers %] >- [% IF SEARCH_RESULT.normalized_isbn %] >- <span title="[% img_title | html %]" class="[% SEARCH_RESULT.normalized_isbn | html %]" id="openlibrary-thumbnail[% loop.count | html %]"></span> >+ [% IF SEARCH_RESULT.normalized_isbn || SEARCH_RESULT.olid %] >+ <span title="[% img_title | html %]" data-isbn="[% SEARCH_RESULT.normalized_isbn | html %]" data-olid="[% SEARCH_RESULT.olid %]" id="openlibrary-thumbnail[% loop.count | html %]"></span> > [% ELSE %] > <span class="no-image">No cover image available</span> > [% END %] >@@ -896,7 +896,7 @@ > }); > [% END # /IF TagsInputEnabled && loggedinusername %] > >- [% IF OpenLibraryCovers %]KOHA.OpenLibrary.GetCoverFromIsbn();[% END %] >+ [% IF OpenLibraryCovers %]KOHA.OpenLibrary.GetCover();[% END %] > [% IF OPACLocalCoverImages %]KOHA.LocalCover.GetCoverFromBibnumber(false);[% END %] > [% IF ( GoogleJackets ) %]KOHA.Google.GetCoverFromIsbn();[% END %] > [% IF ( Koha.Preference('OpacCoce') && Koha.Preference('CoceProviders') ) %] >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-shelves.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-shelves.tt >index 2220bf124a9..83af8e1fbdd 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-shelves.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-shelves.tt >@@ -1008,7 +1008,7 @@ $(function() { > return false; > }); > [% END %] >- [% IF OpenLibraryCovers %]KOHA.OpenLibrary.GetCoverFromIsbn();[% END %] >+ [% IF OpenLibraryCovers %]KOHA.OpenLibrary.GetCover();[% END %] > [% IF OPACLocalCoverImages %]KOHA.LocalCover.GetCoverFromBibnumber(false);[% END %] > [% IF ( GoogleJackets ) %]KOHA.Google.GetCoverFromIsbn();[% END %] > [% IF ( Koha.Preference('OpacCoce') && Koha.Preference('CoceProviders') ) %] >diff --git a/koha-tmpl/opac-tmpl/bootstrap/js/openlibrary.js b/koha-tmpl/opac-tmpl/bootstrap/js/openlibrary.js >index 41dcfb9fab3..591324df1cc 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/js/openlibrary.js >+++ b/koha-tmpl/opac-tmpl/bootstrap/js/openlibrary.js >@@ -9,17 +9,18 @@ KOHA.OpenLibrary = new function() { > > /** > * Search all: >- * <div title="biblionumber" id="isbn" class="openlibrary-thumbnail"></div> >- * or >- * <div title="biblionumber" id="isbn" class="openlibrary-thumbnail-preview"></div> >- * and run a search with all collected isbns to Open Library Book Search. >+ * <div title="biblionumber" class="openlibrary-thumbnail"></div> >+ * and run a search with all collected isbns and olids to Open Library Book Search. > * The result is asynchronously returned by OpenLibrary and catched by > * olCallBack(). > */ >- this.GetCoverFromIsbn = function() { >+ this.GetCover = function() { > var bibkeys = []; > $("[id^=openlibrary-thumbnail]").each(function(i) { >- bibkeys.push("ISBN:" + $(this).attr("class")); // id=isbn >+ let isbn = $(this).data("isbn"); >+ if ( isbn ) bibkeys.push("ISBN:" + isbn); >+ let olid = $(this).data("olid"); >+ if ( olid ) bibkeys.push("OLID:" + olid); > }); > bibkeys = bibkeys.join(','); > var scriptElement = document.createElement("script"); >@@ -38,32 +39,40 @@ KOHA.OpenLibrary = new function() { > this.olCallBack = function(booksInfo) { > for (id in booksInfo) { > var book = booksInfo[id]; >- var isbn = id.substring(5); >- $("[id^=openlibrary-thumbnail]."+isbn).each(function() { >- var a = document.createElement("a"); >- a.href = booksInfo.url; >- if (book.cover) { >- if ( $(this).data('use-data-link') ) { >- var a = document.createElement("a"); >- a.href = book.cover.large; >- var img = document.createElement("img"); >- img.src = book.cover.medium; >- img.setAttribute('data-link', book.cover.large); >- a.append(img) >- $(this).empty().append(a); >- } else { >- var img = document.createElement("img"); >- img.src = book.cover.medium; >- img.height = '110'; >- $(this).append(img); >- } >- } else { >- var message = document.createElement("span"); >- $(message).attr("class","no-image"); >- $(message).html(NO_OL_JACKET); >- $(this).append(message); >+ let isbn; let olid; >+ id.split(';').forEach((e) => { >+ let identifier = e.split(':') >+ if ( identifier[0] == 'ISBN' ) { >+ isbn = identifier[1]; >+ } else if ( identifier[0] == 'OLID' ) { >+ olid = identifier[1]; > } > }); >+ >+ let elt = isbn ? $("[id^=openlibrary-thumbnail][data-isbn=%s]".format(isbn)) : $('*[data-olid="%s"]'.format(olid)); >+ var a = document.createElement("a"); >+ a.href = booksInfo.url; >+ if (book.cover) { >+ if ( $(elt).data('use-data-link') ) { >+ var a = document.createElement("a"); >+ a.href = book.cover.large; >+ var img = document.createElement("img"); >+ img.src = book.cover.medium; >+ img.setAttribute('data-link', book.cover.large); >+ a.append(img) >+ $(elt).empty().append(a); >+ } else { >+ var img = document.createElement("img"); >+ img.src = book.cover.medium; >+ img.height = '110'; >+ $(elt).append(img); >+ } >+ } else { >+ var message = document.createElement("span"); >+ $(message).attr("class","no-image"); >+ $(message).html(NO_OL_JACKET); >+ $(elt).append(message); >+ } > } > this.done = 1; > } >diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl >index 52e161205a8..b94de36cad9 100755 >--- a/opac/opac-detail.pl >+++ b/opac/opac-detail.pl >@@ -1243,4 +1243,13 @@ if ( C4::Context->preference('OPACAuthorIdentifiers') ) { > $template->param( author_identifiers => \@author_identifiers ); > } > >+if ( C4::Context->preference('OpenLibraryCovers') && $record ) { >+ for my $field ( $record->field('024') ) { >+ if ( $field->subfield('2') eq 'openlib' ) { >+ $template->param( olid => $field->subfield('a') ); >+ last; >+ } >+ } >+} >+ > output_html_with_http_headers $query, $cookie, $template->output; >-- >2.25.1
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 34527
: 154944