From c9801ec327d28c4c2a6c0d3d811019538fdaeacb Mon Sep 17 00:00:00 2001 From: Dan Scott Date: Wed, 29 Jun 2011 13:20:05 -0400 Subject: [PATCH] Merge in the TT Resolver plugin code 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 Signed-off-by: Art Rhyno --- Open-ILS/src/perlmods/MANIFEST | 1 + .../lib/Template/Plugin/ResolverResolver.pm | 98 +++++++++++++++++++ .../default/opac/parts/record/summary.tt2 | 9 +- .../default/opac/parts/result/table.tt2 | 13 +-- 4 files changed, 112 insertions(+), 9 deletions(-) create mode 100644 Open-ILS/src/perlmods/lib/Template/Plugin/ResolverResolver.pm diff --git a/Open-ILS/src/perlmods/MANIFEST b/Open-ILS/src/perlmods/MANIFEST index 3641b6fb71..3ffc27b15c 100644 --- a/Open-ILS/src/perlmods/MANIFEST +++ b/Open-ILS/src/perlmods/MANIFEST @@ -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 index 0000000000..88109c2bd2 --- /dev/null +++ b/Open-ILS/src/perlmods/lib/Template/Plugin/ResolverResolver.pm @@ -0,0 +1,98 @@ +# +# OpenILS::Template::Plugin::ResolverResolver +# +# DESCRIPTION +# +# Simple Template Toolkit Plugin which hooks into Dan Scott's Resolver +# +# AUTHOR +# Art Rhyno +# +# 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; + diff --git a/Open-ILS/web/templates/default/opac/parts/record/summary.tt2 b/Open-ILS/web/templates/default/opac/parts/record/summary.tt2 index 74569c5f7b..1de1578bc5 100644 --- a/Open-ILS/web/templates/default/opac/parts/record/summary.tt2 +++ b/Open-ILS/web/templates/default/opac/parts/record/summary.tt2 @@ -83,9 +83,11 @@ [% attrs.phys_desc %] - [% 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; + %] @@ -93,6 +95,7 @@ [% res.target_coverage %] + [% END %] [% END %] [% END %] diff --git a/Open-ILS/web/templates/default/opac/parts/result/table.tt2 b/Open-ILS/web/templates/default/opac/parts/result/table.tt2 index 6b5db2f72b..6ab1b2b28f 100644 --- a/Open-ILS/web/templates/default/opac/parts/result/table.tt2 +++ b/Open-ILS/web/templates/default/opac/parts/result/table.tt2 @@ -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); @@ -120,9 +118,11 @@ [% attrs.isbn %] - [% 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; + %] @@ -130,6 +130,7 @@ [% res.target_coverage %] + [% END %] [% END %] [% END %] -- 2.43.2