From 314a406b39112e2ccf15ebc671b7d75a81ed9a17 Mon Sep 17 00:00:00 2001 From: Srdjan Date: Fri, 23 Sep 2016 18:13:10 +1200 Subject: [PATCH] Bug 17602: OPAC integration of RecordedBooks Add RecordedBooks to the users page in the public interface To Test: 1/ Apply all 3 patches 2/ Set the sysprefs to valid values (you will need a test account with RecordedBooks) 3/ Try a search 4/ Login to the OPAC, try to place a hold, or check an item out 5/ Check the opac-user page, see if your items are showing on the oneclickdigital tab Signed-off-by: Nick Clemens Signed-off-by: Tomas Cohen Arazi --- .../en/includes/recordedbooks-checkout.inc | 15 + .../en/modules/opac-recordedbooks-search.tt | 168 +++++++++++ .../opac-tmpl/bootstrap/en/modules/opac-results.tt | 18 ++ .../opac-tmpl/bootstrap/en/modules/opac-user.tt | 24 ++ koha-tmpl/opac-tmpl/bootstrap/js/recordedbooks.js | 325 +++++++++++++++++++++ koha-tmpl/opac-tmpl/bootstrap/less/opac.less | 2 +- opac/opac-recordedbooks-search.pl | 42 +++ opac/opac-search.pl | 9 +- opac/opac-user.pl | 1 + opac/svc/recordedbooks | 148 ++++++++++ 10 files changed, 748 insertions(+), 4 deletions(-) create mode 100644 koha-tmpl/opac-tmpl/bootstrap/en/includes/recordedbooks-checkout.inc create mode 100644 koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recordedbooks-search.tt create mode 100644 koha-tmpl/opac-tmpl/bootstrap/js/recordedbooks.js create mode 100755 opac/opac-recordedbooks-search.pl create mode 100755 opac/svc/recordedbooks diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/recordedbooks-checkout.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/recordedbooks-checkout.inc new file mode 100644 index 0000000..bebf3d4 --- /dev/null +++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/recordedbooks-checkout.inc @@ -0,0 +1,15 @@ + diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recordedbooks-search.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recordedbooks-search.tt new file mode 100644 index 0000000..b90f6ac --- /dev/null +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recordedbooks-search.tt @@ -0,0 +1,168 @@ +[% USE Koha %] +[% INCLUDE 'doc-head-open.inc' %] +[% IF ( LibraryNameTitle ) %][% LibraryNameTitle %][% ELSE %]Koha online[% END %] catalog › RecordedBooks search for '[% q | html %]' +[% INCLUDE 'doc-head-close.inc' %] +[% BLOCK cssinclude %] + + +[% END %] + +[% INCLUDE 'bodytag.inc' bodyid='recordedbooks-results-page' bodyclass='scrollto' %] +[% INCLUDE 'masthead.inc' %] + +
+ + +
+
+
+ [% IF ( OpacNav || OpacNavBottom ) %] + [% INCLUDE 'navigation.inc' %] + [% END %] +
+
+
+

RecordedBooks search for '[% q | html %]'

+ + +
+ +
+ + + + +
+ +
+ +
+ +
+
+
+
+
+ +[% INCLUDE 'recordedbooks-checkout.inc' %] + +[% INCLUDE 'opac-bottom.inc' %] +[% BLOCK jsinclude %] + + + +[% END %] 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 3803627..103e293 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt @@ -592,6 +592,7 @@ [% END %] [% IF ( OpacStarRatings == 'all' || Koha.Preference('Babeltheque') ) %][% END %] [% IF ( OverDriveEnabled ) %][% END %] +[% IF ( RecordedBooksEnabled ) %][% END %] [% IF ( OpacHighlightedWords ) %] [% END %] [% END %] + [% IF RecordedBooksCirculation %] + + [% END %] diff --git a/koha-tmpl/opac-tmpl/bootstrap/js/recordedbooks.js b/koha-tmpl/opac-tmpl/bootstrap/js/recordedbooks.js new file mode 100644 index 0000000..5df3f3a --- /dev/null +++ b/koha-tmpl/opac-tmpl/bootstrap/js/recordedbooks.js @@ -0,0 +1,325 @@ +if ( typeof KOHA == "undefined" || !KOHA ) { + var KOHA = {}; +} + +KOHA.RecordedBooks = new function() { + var svc_url = '/cgi-bin/koha/svc/recordedbooks'; + + var error_div = $('
'); + function display_error ( error ) { + error_div.text(error); + } + + var details = null; + + function is_identified() { + return details ? details.is_identified : false; + } + + var checkout_popup = null; + $( document ).ready(function() { + checkout_popup = $("#recordedbooks-checkout"); + }); + + function display_account (container, data) { + if (!data.is_identified) { + return; + } + + if (data.checkouts) { + var checkouts_div = $('
').html('

' + _("Checkouts") + '

'); + var items = data.checkouts.items; + var checkouts_list; + if (items.length == 0) { + checkouts_list = _("No checkouts"); + } else { + checkouts_list = $('