From: Joshua Ferraro <[email protected]>
Signed-off-by: Daniel Sweeney <[email protected]> --- C4/Auth.pm | 3 +- C4/External/Syndetics.pm | 61 ++++++++++++++++++- C4/XISBN.pm | 15 ++++- admin/systempreferences.pl | 3 +- installer/data/mysql/updatedatabase.pl | 4 +- .../opac-tmpl/prog/en/modules/opac-detail.tmpl | 22 +++++++- opac/opac-detail.pl | 13 ++++- 7 files changed, 109 insertions(+), 12 deletions(-) diff --git a/C4/Auth.pm b/C4/Auth.pm index 4036aa5..3d45305 100644 --- a/C4/Auth.pm +++ b/C4/Auth.pm @@ -274,7 +274,8 @@ sub get_template_and_user { SyndeticsCoverImages => C4::Context->preference("SyndeticsCoverImages"), SyndeticsTOC => C4::Context->preference("SyndeticsTOC"), SyndeticsSummary => C4::Context->preference("SyndeticsSummary"), - SyndeticsSimilarItems => C4::Context->preference("SyndeticsSimilarItems"), + SyndeticsEditions => C4::Context->preference("SyndeticsEditions"), + SyndeticsExcerpt => C4::Context->preference("SyndeticsExcerpt"), ); if ( $in->{'type'} eq "intranet" ) { diff --git a/C4/External/Syndetics.pm b/C4/External/Syndetics.pm index 9344da6..f10fa3b 100644 --- a/C4/External/Syndetics.pm +++ b/C4/External/Syndetics.pm @@ -34,6 +34,8 @@ BEGIN { @EXPORT = qw( &get_syndetics_summary &get_syndetics_toc + &get_syndetics_editions + &get_syndetics_excerpt ); } @@ -67,7 +69,7 @@ sub get_syndetics_summary { my $syndetics_client_code = C4::Context->preference('SyndeticsClientCode'); my $url = "http://syndetics.com/index.aspx?isbn=$isbn/SUMMARY.XML&client=$syndetics_client_code&type=xw10"; - warn $url; + # warn $url; my $content = get($url); warn "could not retrieve $url" unless $content; my $xmlsimple = XML::Simple->new(); @@ -76,7 +78,8 @@ sub get_syndetics_summary { forcearray => [ qw(Fld520) ], ) unless !$content; # manipulate response USMARC VarFlds VarDFlds Notes Fld520 a - my $summary = \...@{$response->{VarFlds}->{VarDFlds}->{Notes}->{Fld520}} if $response; + my $summary; + $summary = \...@{$response->{VarFlds}->{VarDFlds}->{Notes}->{Fld520}} if $response; return $summary if $summary; } @@ -90,7 +93,7 @@ sub get_syndetics_toc { my $syndetics_client_code = C4::Context->preference('SyndeticsClientCode'); my $url = "http://syndetics.com/index.aspx?isbn=$isbn/TOC.XML&client=$syndetics_client_code&type=xw10"; - warn $url; + #warn $url; my $content = get($url); warn "could not retrieve $url" unless $content; my $xmlsimple = XML::Simple->new(); @@ -99,10 +102,60 @@ sub get_syndetics_toc { forcearray => [ qw(Fld970) ], ) unless !$content; # manipulate response USMARC VarFlds VarDFlds Notes Fld520 a - my $toc = \...@{$response->{VarFlds}->{VarDFlds}->{SSIFlds}->{Fld970}} if $response; + my $toc; + $toc = \...@{$response->{VarFlds}->{VarDFlds}->{SSIFlds}->{Fld970}} if $response; return $toc if $toc; } +sub get_syndetics_excerpt { + my ( $isbn ) = @_; + + #normalize the ISBN + $isbn = _normalize_match_point ($isbn); + + # grab the AWSAccessKeyId: mine is '0V5RRRRJZ3HR2RQFNHR2' + my $syndetics_client_code = C4::Context->preference('SyndeticsClientCode'); + + my $url = "http://syndetics.com/index.aspx?isbn=$isbn/DBCHAPTER.XML&client=$syndetics_client_code&type=xw10"; + #warn $url; + my $content = get($url); + warn "could not retrieve $url" unless $content; + my $xmlsimple = XML::Simple->new(); + my $response = $xmlsimple->XMLin( + $content, + forcearray => [ qw(Fld520) ], + ) unless !$content; + # manipulate response USMARC VarFlds VarDFlds Notes Fld520 a + my $excerpt; + $excerpt = \...@{$response->{VarFlds}->{VarDFlds}->{Notes}->{Fld520}} if $response; + return XMLout($excerpt) if $excerpt; +} + + +sub get_syndetics_editions { + my ( $isbn ) = @_; + + #normalize the ISBN + $isbn = _normalize_match_point ($isbn); + + # grab the AWSAccessKeyId: mine is '0V5RRRRJZ3HR2RQFNHR2' + my $syndetics_client_code = C4::Context->preference('SyndeticsClientCode'); + + my $url = "http://syndetics.com/index.aspx?isbn=$isbn/FICTION.XML&client=$syndetics_client_code&type=xw10"; + # warn $url; + my $content = get($url); + warn "could not retrieve $url" unless $content; + my $xmlsimple = XML::Simple->new(); + my $response = $xmlsimple->XMLin( + $content, + forcearray => [ qw(Fld020) ], + ) unless !$content; + # manipulate response USMARC VarFlds VarDFlds Notes Fld520 a + my $similar_items; + $similar_items = \...@{$response->{VarFlds}->{VarDFlds}->{NumbCode}->{Fld020}} if $response; + return $similar_items if $similar_items; +} + sub _normalize_match_point { my $match_point = shift; (my $normalized_match_point) = $match_point =~ /([\d-]*[X]*)/; diff --git a/C4/XISBN.pm b/C4/XISBN.pm index 50acc11..58a75b5 100644 --- a/C4/XISBN.pm +++ b/C4/XISBN.pm @@ -21,7 +21,7 @@ use XML::Simple; #use LWP::Simple; use C4::Biblio; use C4::Items; - +use C4::External::Syndetics qw(get_syndetics_editions); use LWP::UserAgent; use HTTP::Request::Common; @@ -87,7 +87,7 @@ sub get_biblio_from_xisbn { sub get_xisbns { my ( $isbn ) = @_; - my ($response,$thing_response,$xisbn_response,$gapines_response); + my ($response,$thing_response,$xisbn_response,$gapines_response,$syndetics_response); $isbn =~ /(\d{9,}[X]*)/; $isbn = $1; # THINGISBN @@ -96,6 +96,15 @@ sub get_xisbns { $thing_response = _get_url($url,'thingisbn'); } + if ( C4::Context->preference("SyndeticsEnabled") && C4::Context->preference("SyndeticsEditions") ) { + my $syndetics_preresponse = &get_syndetics_editions($isbn); + my @syndetics_response; + for my $response (@$syndetics_preresponse) { + push @syndetics_response, {content => $response->{a}}; + } + $syndetics_response = {isbn => \...@syndetics_response}; + } + # XISBN if ( C4::Context->preference('XISBN') ) { my $affiliate_id=C4::Context->preference('OCLCAffiliateID'); @@ -113,7 +122,7 @@ sub get_xisbns { # my $url = "http://www.librarything.com/api/thingISBN/".$isbn; # $gapines_response = _get_url($url,'thingisbn'); #} - $response->{isbn} = [ @{ $xisbn_response->{isbn} or [] }, @{ $thing_response->{isbn} or [] }, @{ $gapines_response->{isbn} or [] } ]; + $response->{isbn} = [ @{ $xisbn_response->{isbn} or [] }, @{ $syndetics_response->{isbn} or [] }, @{ $thing_response->{isbn} or [] }, @{ $gapines_response->{isbn} or [] } ]; my @xisbns; my $unique_xisbns; # a hashref diff --git a/admin/systempreferences.pl b/admin/systempreferences.pl index 9b4c6d4..42acca4 100755 --- a/admin/systempreferences.pl +++ b/admin/systempreferences.pl @@ -236,7 +236,8 @@ $tabsysprefs{SyndeticsEnabled} = 'EnhancedContent'; $tabsysprefs{SyndeticsCoverImages} = 'EnhancedContent'; $tabsysprefs{SyndeticsTOC} = 'EnhancedContent'; $tabsysprefs{SyndeticsSummary} = 'EnhancedContent'; -$tabsysprefs{SyndeticsSimilarItems} = 'EnhancedContent'; +$tabsysprefs{SyndeticsEditions} = 'EnhancedContent'; +$tabsysprefs{SyndeticsExcerpt} = 'EnhancedContent'; # FRBR $tabsysprefs{FRBRizeEditions} = "EnhancedContent"; diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index fea9155..744a572 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -2232,7 +2232,9 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) { $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsSummary', '0', 'Display Summary Information from Syndetics','','YesNo')"); - $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsSimilarItems', '0', 'Display Similar Items from Syndetics','','YesNo')"); + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsEditions', '0', 'Display Editions from Syndetics','','YesNo')"); + + $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('SyndeticsExcerpt', '0', 'Display Excerpts and first chapters on OPAC from Syndetics','','YesNo')"); print "Upgrade to $DBversion done (added Syndetics Enhanced Content system preferences)\n"; SetVersion ($DBversion); 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 1556186..a5ef870 100644 --- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl +++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl @@ -231,6 +231,9 @@ <!-- TMPL_IF NAME="SYNDETICS_TOC" --> <li> <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->#toc">TOC</a></li> <!-- /TMPL_IF --> +<!-- TMPL_IF NAME="SyndeticsExcerpt" --><!-- TMPL_IF NAME="SYNDETICS_EXCERPT" --> + <li> <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->#excerpt">Excerpt</a></li> +<!-- /TMPL_IF --><!-- /TMPL_IF --> <!-- TMPL_IF name="subscriptionsnumber" --><li> <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->#subscriptions">Subscriptions</a> </li><!-- /TMPL_IF --> @@ -391,6 +394,7 @@ <!-- /TMPL_IF --> </div> </div> + <div id="toc"> <div class="content_set"> <!-- TMPL_IF NAME="SyndeticsTOC" --><!-- TMPL_IF NAME="SYNDETICS_TOC" --> @@ -404,6 +408,14 @@ <!-- /TMPL_IF --><!-- /TMPL_IF --> </div> </div> + +<div id="excerpt"> +<div class="content_set"> +<!-- TMPL_IF NAME="SyndeticsExcerpt" --> +<!-- TMPL_VAR NAME="SYNDETICS_EXCERPT" --> +<!-- /TMPL_IF --> +</div> +</div> <!-- TMPL_IF name="subscriptionsnumber" --> <div id="subscriptions"> <h2>This is a serial subscription</h2> @@ -501,7 +513,15 @@ <h2>Other Editions of this Work</h2> <table> <!-- TMPL_LOOP NAME="XISBNS" --> -<tr><!-- TMPL_IF NAME="AmazonContent" --><td><img src="http://images.amazon.com/images/P/<!-- TMPL_VAR NAME="amazonisbn" -->.01._AA75_PU_PU-5_.jpg" alt="" /></td><!-- /TMPL_IF --><td><!-- TMPL_VAR NAME="description" --></td><td><a href="/cgi-bin/koha/opac-detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->"><!-- TMPL_VAR NAME="title" escape="html" --></a><!-- TMPL_IF NAME="author" --> by <!-- TMPL_VAR NAME="author" ESCAPE="HTML" --><!-- /TMPL_IF --><!-- TMPL_IF NAME="copyrightdate" --> ©<!-- TMPL_VAR NAME="copyrightdate" --><!-- /TMPL_IF --><!-- TMPL_IF name="publishercode" --> +<tr> +<td> +<!-- TMPL_IF NAME="AmazonContent" --><img src="http://images.amazon.com/images/P/<!-- TMPL_VAR NAME="amazonisbn" -->.01._AA75_PU_PU-5_.jpg" alt="" /><!-- /TMPL_IF --> + +<!-- TMPL_IF NAME="SyndeticsEnabled" --><!-- TMPL_IF NAME="SyndeticsCoverImages" --><!-- TMPL_IF NAME="amazonisbn" --><img src="http://syndetics.com/index.aspx?isbn=<!-- TMPL_VAR NAME="amazonisbn" -->/SC.GIF&client=<!-- TMPL_VAR NAME="SyndeticsClientCode" -->&type=xw10" alt="" class="thumbnail" /> +<!-- /TMPL_IF --><!-- /TMPL_IF --><!-- /TMPL_IF --> + +</td> +<td><!-- TMPL_VAR NAME="description" --></td><td><a href="/cgi-bin/koha/opac-detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->"><!-- TMPL_VAR NAME="title" escape="html" --></a><!-- TMPL_IF NAME="author" --> by <!-- TMPL_VAR NAME="author" ESCAPE="HTML" --><!-- /TMPL_IF --><!-- TMPL_IF NAME="copyrightdate" --> ©<!-- TMPL_VAR NAME="copyrightdate" --><!-- /TMPL_IF --><!-- TMPL_IF name="publishercode" --> <p><!-- TMPL_VAR NAME="publishercode" ESCAPE="HTML" --> <!-- TMPL_IF name="place" -->(<!-- TMPL_VAR NAME="place"-->)<!--/TMPL_IF--> <!-- TMPL_IF NAME="publicationyear" -->, <!-- TMPL_VAR NAME="publicationyear" --><!-- /TMPL_IF --> <!-- TMPL_IF NAME="pages" --><!-- TMPL_VAR NAME="pages" --> <!-- TMPL_VAR NAME="illus" --> <!-- TMPL_VAR NAME="size" --></p><!-- /TMPL_IF --> diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl index c184982..afd0602 100755 --- a/opac/opac-detail.pl +++ b/opac/opac-detail.pl @@ -33,7 +33,7 @@ use C4::Tags qw(get_tags); use C4::Dates qw/format_date/; use C4::XISBN qw(get_xisbns get_biblionumber_from_isbn get_biblio_from_xisbn); use C4::External::Amazon; -use C4::External::Syndetics qw(get_syndetics_summary get_syndetics_toc); +use C4::External::Syndetics qw(get_syndetics_summary get_syndetics_toc get_syndetics_excerpt ); use C4::Review; use C4::Serials; use C4::Members; @@ -292,13 +292,24 @@ if ( C4::Context->preference("OPACAmazonContent") == 1 ) { } if ( C4::Context->preference("SyndeticsEnabled") && C4::Context->preference("SyndeticsSummary") ) { + eval { my $syndetics_summary = &get_syndetics_summary($xisbn); $template->param( SYNDETICS_SUMMARY => $syndetics_summary ); + }; } if ( C4::Context->preference("SyndeticsEnabled") && C4::Context->preference("SyndeticsTOC") ) { + eval { my $syndetics_toc = &get_syndetics_toc($xisbn); $template->param( SYNDETICS_TOC => $syndetics_toc ); + }; +} + +if ( C4::Context->preference("SyndeticsEnabled") && C4::Context->preference("SyndeticsTOC") ) { + eval { + my $syndetics_excerpt = &get_syndetics_excerpt($xisbn); + $template->param( SYNDETICS_EXCERPT => $syndetics_excerpt ); + }; } # Shelf Browser Stuff -- 1.5.6.5 _______________________________________________ Koha-patches mailing list [email protected] http://lists.koha.org/mailman/listinfo/koha-patches
