Added support for the Syndetics AV summary and AV profile
data elements. The AV summary is displayed in the description
tab if present, while the AV profile is displayed as
a link off of the OPAC bib details page.
---
C4/External/Syndetics.pm | 21 ++++++++++---------
.../opac-tmpl/prog/en/modules/opac-detail.tmpl | 15 ++++++++-----
opac/opac-detail.pl | 5 ++-
3 files changed, 23 insertions(+), 18 deletions(-)
diff --git a/C4/External/Syndetics.pm b/C4/External/Syndetics.pm
index f61a31c..c6d7ecf 100644
--- a/C4/External/Syndetics.pm
+++ b/C4/External/Syndetics.pm
@@ -90,7 +90,7 @@ sub get_syndetics_index {
) unless !$content;
my $syndetics_elements;
- for my $available_type
('SUMMARY','TOC','FICTION','AWARDS1','SERIES1','SPSUMMARY','SPREVIEW','AVSUMMARY','DBCHAPTER','LJREVIEW','PWREVIEW','SLJREVIEW','CHREVIEW','BLREVIEW','HBREVIEW','KIREVIEW','CRITICASREVIEW','ANOTES')
{
+ for my $available_type
('SUMMARY','TOC','FICTION','AWARDS1','SERIES1','SPSUMMARY','SPREVIEW',
'AVPROFILE',
'AVSUMMARY','DBCHAPTER','LJREVIEW','PWREVIEW','SLJREVIEW','CHREVIEW','BLREVIEW','HBREVIEW','KIREVIEW','CRITICASREVIEW','ANOTES')
{
if (exists $response->{$available_type} &&
$response->{$available_type} =~ /$available_type/) {
$syndetics_elements->{$available_type} = $available_type;
#warn "RESPONSE: $available_type : $response->{$available_type}";
@@ -100,12 +100,13 @@ sub get_syndetics_index {
}
sub get_syndetics_summary {
- my ( $isbn,$upc,$oclc ) = @_;
+ my ( $isbn, $upc, $oclc, $syndetics_elements ) = @_;
# grab the AWSAccessKeyId: mine is '0V5RRRRJZ3HR2RQFNHR2'
my $syndetics_client_code = C4::Context->preference('SyndeticsClientCode');
- my $url =
"http://www.syndetics.com/index.aspx?isbn=$isbn/SUMMARY.XML&client=$syndetics_client_code&type=xw10&upc=$upc&oclc=$oclc";
+ my $summary_type = exists($syndetics_elements->{'AVSUMMARY'}) ?
'AVSUMMARY' : 'SUMMARY';
+ my $url =
"http://www.syndetics.com/index.aspx?isbn=$isbn/$summary_type.XML&client=$syndetics_client_code&type=xw10&upc=$upc&oclc=$oclc";
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;
@@ -117,14 +118,14 @@ sub get_syndetics_summary {
my $content = $response->content;
warn "could not retrieve $url" unless $content;
- my $xmlsimple = XML::Simple->new();
- $response = $xmlsimple->XMLin(
- $content,
- forcearray => [ qw(Fld520) ],
- ) unless !$content;
- # manipulate response USMARC VarFlds VarDFlds Notes Fld520 a
my $summary;
- $summary = \...@{$response->{VarFlds}->{VarDFlds}->{Notes}->{Fld520}} if
$response;
+ eval {
+ my $doc = $parser->parse_string($content);
+ $summary = $doc->findvalue('//Fld520');
+ };
+ if ($@) {
+ warn "Error parsing response from $url";
+ }
return $summary if $summary;
}
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
index cd9bdde..aa4ebe0 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
@@ -233,6 +233,11 @@
<span class="label">Series Information:</span> <a target="_blank"
href="http://www.syndetics.com/ffseries.aspx?isbn=<!-- TMPL_VAR
NAME="normalized_isbn" -->&type=series&num=1&client=<!-- TMPL_VAR
NAME="SyndeticsClientCode" --><!-- TMPL_IF NAME="normalized_upc"
-->&upc=<!-- TMPL_VAR NAME="normalized_upc" --><!-- /TMPL_IF --><!--
TMPL_IF NAME="normalized_oclc" -->&oclc=<!-- TMPL_VAR
NAME="normalized_oclc" --><!-- /TMPL_IF -->">Click to open in new window</a>
</span>
<!-- /TMPL_IF --><!-- /TMPL_IF -->
+ <!-- TMPL_IF NAME="SyndeticsAVPROFILEExists" -->
+ <span class="results_summary">
+ <span class="label">Audiovisual Profile:</span> <a target="_blank"
href="http://www.syndetics.com/index.aspx?isbn=<!-- TMPL_VAR
NAME="normalized_isbn" -->/avprofile.html&client=<!-- TMPL_VAR
NAME="SyndeticsClientCode" --><!-- TMPL_IF NAME="normalized_upc"
-->&upc=<!-- TMPL_VAR NAME="normalized_upc" --><!-- /TMPL_IF --><!--
TMPL_IF NAME="normalized_oclc" -->&oclc=<!-- TMPL_VAR
NAME="normalized_oclc" --><!-- /TMPL_IF -->&type=xw10">Click to open in new
window</a>
+ </span>
+ <!-- /TMPL_IF -->
<!-- TMPL_IF NAME="SyndeticsFICTIONExists" -->
<span class="results_summary">
<span class="label">Fiction Notes:</span> <a target="_blank"
href="http://www.syndetics.com/index.aspx?isbn=<!-- TMPL_VAR
NAME="normalized_isbn" -->/fiction.html&client=<!-- TMPL_VAR
NAME="SyndeticsClientCode" --><!-- TMPL_IF NAME="normalized_upc"
-->&upc=<!-- TMPL_VAR NAME="normalized_upc" --><!-- /TMPL_IF --><!--
TMPL_IF NAME="normalized_oclc" -->&oclc=<!-- TMPL_VAR
NAME="normalized_oclc" --><!-- /TMPL_IF -->&type=xw10">Click to open in new
window</a>
@@ -422,13 +427,11 @@
<!-- /TMPL_IF-->
<!-- /TMPL_IF-->
<!-- TMPL_IF NAME="SyndeticsEnabled" -->
-<!-- TMPL_IF NAME="SyndeticsSummary" --><!-- TMPL_IF
NAME="SyndeticsSUMMARYExists" -->
-<!-- TMPL_LOOP NAME="SYNDETICS_SUMMARY" -->
- <!-- TMPL_IF NAME="a" -->
+<!-- TMPL_IF NAME="SyndeticsSummary" -->
+<!-- TMPL_IF NAME="SYNDETICS_SUMMARY" -->
<h4>Enhanced Descriptions from Syndetics:</h4>
- <p><!-- TMPL_VAR NAME="a" --></p>
- <!-- /TMPL_IF -->
-<!-- /TMPL_LOOP -->
+ <p><!-- TMPL_VAR NAME="SYNDETICS_SUMMARY" --></p>
+<!-- /TMPL_IF -->
<!-- /TMPL_IF --><!-- /TMPL_IF -->
<!-- /TMPL_IF -->
diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl
index f98f30e..5b986ac 100755
--- a/opac/opac-detail.pl
+++ b/opac/opac-detail.pl
@@ -333,9 +333,10 @@ if ( C4::Context->preference("SyndeticsEnabled") ) {
if ( C4::Context->preference("SyndeticsEnabled")
&& C4::Context->preference("SyndeticsSummary")
- && $syndetics_elements->{'SUMMARY'} =~ /SUMMARY/) {
+ && ( $syndetics_elements->{'SUMMARY'} =~ /SUMMARY/
+ || $syndetics_elements->{'AVSUMMARY'} =~ /AVSUMMARY/ ) ) {
eval {
- my $syndetics_summary = &get_syndetics_summary($isbn,$upc,$oclc);
+ my $syndetics_summary = &get_syndetics_summary($isbn,$upc,$oclc,
$syndetics_elements);
$template->param( SYNDETICS_SUMMARY => $syndetics_summary );
};
warn $@ if $@;
--
1.5.6.5
_______________________________________________
Koha-patches mailing list
[email protected]
http://lists.koha.org/mailman/listinfo/koha-patches