Merge in the TT Resolver plugin code user/dbs/ttopac-sfx-integration
authorDan Scott <dan@coffeecode.net>
Wed, 29 Jun 2011 17:20:05 +0000 (13:20 -0400)
committerDan Scott <dan@coffeecode.net>
Wed, 29 Jun 2011 18:23:06 +0000 (14:23 -0400)
Add the plugin to the MANIFEST to ensure that it gets installed
appropriately, and pull in the appropriate changes to the record summary
and search results pages.

Signed-off-by: Dan Scott <dscott@laurentian.ca>
Signed-off-by: Art Rhyno <artrhyno@uwindsor.ca>
Open-ILS/src/perlmods/MANIFEST
Open-ILS/src/perlmods/lib/Template/Plugin/ResolverResolver.pm [new file with mode: 0644]
Open-ILS/web/templates/default/opac/parts/record/summary.tt2
Open-ILS/web/templates/default/opac/parts/result/table.tt2

index 3641b6f..3ffc27b 100644 (file)
@@ -126,6 +126,7 @@ lib/OpenILS/SIP/Transaction.pm
 lib/OpenILS/SIP/Transaction/Checkin.pm
 lib/OpenILS/SIP/Transaction/Checkout.pm
 lib/OpenILS/SIP/Transaction/Renew.pm
+lib/Template/Plugin/ResolverResolver.pm
 lib/OpenILS/Template/Plugin/Unicode.pm
 lib/OpenILS/Template/Plugin/WebSession.pm
 lib/OpenILS/Template/Plugin/WebUtils.pm
diff --git a/Open-ILS/src/perlmods/lib/Template/Plugin/ResolverResolver.pm b/Open-ILS/src/perlmods/lib/Template/Plugin/ResolverResolver.pm
new file mode 100644 (file)
index 0000000..88109c2
--- /dev/null
@@ -0,0 +1,98 @@
+#
+# OpenILS::Template::Plugin::ResolverResolver
+#
+# DESCRIPTION
+#
+#   Simple Template Toolkit Plugin which hooks into Dan Scott's Resolver
+#
+# AUTHOR
+#   Art Rhyno <http://projectconifer.ca>
+#
+# COPYRIGHT
+#   Copyright (C) 2011
+#
+# LICENSE
+# GNU General Public License v2 or later
+#
+#============================================================================
+
+package Template::Plugin::ResolverResolver;
+
+use strict;
+use warnings;
+use base 'Template::Plugin';
+use OpenILS::Application::ResolverResolver;
+use OpenILS::Application;
+use base qw/OpenILS::Application/;
+use OpenSRF::AppSession;
+
+
+our $VERSION = 0.9;
+
+sub load {
+    my ( $class, $context ) = @_;
+    return $class;
+}   
+
+sub new { 
+    my ( $class, $context, @params ) = @_;
+
+    bless { _CONTEXT => $context, }, $class;   
+} 
+
+# monkeypatch ResolverResolver::params() method to Do The Right Thing in TT land
+
+sub ResolverResolver::params {
+    my $self = shift;
+    local $" = ', ';
+
+    return $self->{ _TT_PARAMS } ||= do {
+        # must call Vars() in a list context to receive
+        # plain list of key/vals rather than a tied hash
+        my $params = { $self->Vars() };
+
+        # convert any null separated values into lists
+        @$params{ keys %$params } = map { 
+            /\0/ ? [ split /\0/ ] : $_ 
+        } values %$params;
+
+        $params;
+    };
+}
+
+sub resolve_issn
+{
+    my ($class, $c, $baseurl) = @_;
+
+    if (length($c) <= 9) {
+           my $session = OpenSRF::AppSession->create("open-ils.resolver");
+       
+           my $request = $session->request("open-ils.resolver.resolve_holdings.raw", "issn", $c, $baseurl)->gather();
+           if ($request) {
+                 return $request;
+           }
+           $session->disconnect();
+    }
+       
+    return "";
+}
+
+sub resolve_isbn
+{
+    my ($class, $c, $baseurl) = @_;
+
+    my $session = OpenSRF::AppSession->create("open-ils.resolver");
+       
+    my $request = $session->request("open-ils.resolver.resolve_holdings.raw", "isbn", $c, $baseurl)->gather();
+       
+    if ($request) {
+            return $request;
+    }
+    $session->disconnect();
+       
+    return "";
+}
+
+
+1;
+
index 74569c5..1de1578 100644 (file)
                             </td>
                             <td valign="top" id='rdetail_physical_desc'>[% attrs.phys_desc %]</td>
                         </tr>
-                        [% IF openurl.enabled == 'true'; FOR issn IN args.issns %]
-                            [% sfx = ResolverResolver.resolve_issn(issn, openurl.baseurl)%]
-                            [% FOR res IN sfx %]
+                        [% IF openurl.enabled == 'true';
+                            FOR issn IN args.issns;
+                                sfx = ResolverResolver.resolve_issn(issn, openurl.baseurl);
+                                FOR res IN sfx;
+                        %]
                             <tr name="results_issn_tr">
                                 <td valign="top">
                                     <strong><a href="[% res.target_url %]">
@@ -93,6 +95,7 @@
                                 </td>
                                 <td>[% res.target_coverage %]</td>
                             </tr>
+                                [% END %]
                             [% END %]
                         [% END %]
                         <tr>
index 6b5db2f..6ab1b2b 100644 (file)
@@ -1,8 +1,6 @@
 [%  PROCESS "default/opac/parts/misc_util.tt2";
 
-    IF openurl.enabled == 'true';
-        USE ResolverResolver;
-    END;
+    USE ResolverResolver;
 
     ctx.result_start = 1 + ctx.page_size * page;
     ctx.result_stop = ctx.page_size * (page + 1);
                                                             </td>
                                                             <td>[% attrs.isbn %]</td>
                                                         </tr>
-                                                        [% IF openurl.enabled == 'true'; FOR issn IN args.issns %]
-                                                            [% sfx = ResolverResolver.resolve_issn(issn, openurl.baseurl)%]
-                                                            [% FOR res IN sfx %]
+                                                        [% IF openurl.enabled == 'true';
+                                                            FOR issn IN args.issns;
+                                                                sfx = ResolverResolver.resolve_issn(issn, openurl.baseurl);
+                                                                FOR res IN sfx;
+                                                        %]
                                                         <tr name="results_issn_tr">
                                                             <td valign="top">
                                                                 <strong><a href="[% res.target_url %]">
                                                             </td>
                                                             <td>[% res.target_coverage %]</td>
                                                         </tr>
+                                                                [% END %]
                                                             [% END %]
                                                         [% END %]