my $rec_id = shift;
my $ctx = $self->ctx;
my $sel_type = $self->cgi->param('ac') || '';
- my $key = $self->get_ac_key($rec_id);
- ($key = $key->{value}) =~ s/^\s+//g if $key;
# Connect to this machine's IP address, using the same
# Host with which our caller used to connect to us.
for my $type (@$ac_types) {
last if $ac_failed;
$ctx->{added_content}->{$type} = {content => ''};
- $ctx->{added_content}->{$type}->{status} = $key ? 3 : 2;
-
- if ($key) {
- $logger->debug("tpac: starting added content request for $key => $type");
-
- # Net::HTTP::NB is non-blocking /after/ the initial connect()
- # Passing Timeout=>1 ensures we wait no longer than 1 second to
- # connect to the local Evergreen instance (i.e. ourself).
- # Connecting to oneself should either be very fast (normal)
- # or very slow (routing problems).
-
- my $req = Net::HTTP::NB->new(Host => $ac_addr, Timeout => 1);
- if (!$req) {
- $logger->warn("Unable to connect to $ac_addr / $ac_host".
- " for added content lookup for $key: $@");
- $ac_failed = 1;
- next;
- }
+ $ctx->{added_content}->{$type}->{status} = 3;
+
+ $logger->debug("tpac: starting added content request for $rec_id => $type");
+
+ # Net::HTTP::NB is non-blocking /after/ the initial connect()
+ # Passing Timeout=>1 ensures we wait no longer than 1 second to
+ # connect to the local Evergreen instance (i.e. ourself).
+ # Connecting to oneself should either be very fast (normal)
+ # or very slow (routing problems).
+
+ my $req = Net::HTTP::NB->new(Host => $ac_addr, Timeout => 1);
+ if (!$req) {
+ $logger->warn("Unable to connect to $ac_addr / $ac_host".
+ " for added content lookup for $rec_id: $@");
+ $ac_failed = 1;
+ next;
+ }
- $req->host($self->apache->hostname);
+ $req->host($self->apache->hostname);
- my $http_type = ($type eq $sel_type) ? 'GET' : 'HEAD';
- $req->write_request($http_type => "/opac/extras/ac/$type/html/" . uri_escape_utf8($key));
- $ctx->{added_content}->{$type}->{request} = $req;
- }
+ my $http_type = ($type eq $sel_type) ? 'GET' : 'HEAD';
+ $req->write_request($http_type => "/opac/extras/ac/$type/html/r/" . $rec_id);
+ $ctx->{added_content}->{$type}->{request} = $req;
}
}
}
}
-# XXX this is copied directly from AddedContent.pm in
-# working/user/jeff/ac_by_record_id_rebase. When Jeff's
-# branch is merged and Evergreen gets added content
-# lookup by ID, this can be removed.
-# returns [{tag => $tag, value => $value}, {tag => $tag2, value => $value2}]
-sub get_ac_key {
- my $self = shift;
- my $rec_id = shift;
- my $key_data = $self->editor->json_query({
- select => {mfr => ['tag', 'value']},
- from => 'mfr',
- where => {
- record => $rec_id,
- '-or' => [
- {
- '-and' => [
- {tag => '020'},
- {subfield => 'a'}
- ]
- }, {
- '-and' => [
- {tag => '024'},
- {subfield => 'a'},
- {ind1 => 1}
- ]
- }
- ]
- }
- });
-
- return (
- grep {$_->{tag} eq '020'} @$key_data,
- grep {$_->{tag} eq '024'} @$key_data
- )[0];
-}
-
1;
/* Checks to see if a given type of added content has data to show.
* The first arg to callback() is boolean indicating the presence of data */
- function acIsAvailable(ident, type, callback) {
- var url = '/opac/extras/ac/' + type + '/html/' + ident;
+ function acIsAvailable(bre_id, type, callback) {
+ var url = '/opac/extras/ac/' + type + '/html/r/' + bre_id;
dojo.xhr('HEAD', {
- url : url,
+ url : url,
failOk : true, // http://bugs.dojotoolkit.org/ticket/11568
- error : function(err) { callback(false, ident, type); },
- load : function(result) { callback(true, ident, type); }
+ error : function(err) { callback(false, bre_id, type); },
+ load : function(result) { callback(true, bre_id, type); }
});
}
- [%- # XXX revisit when ident=ctx.bre_id
- ident = ctx.record_attrs.isbn_clean || ctx.record_attrs.upc;
- IF ident;
- FOR type IN ctx.added_content.keys;
- IF ctx.added_content.$type.status == '3' # status unknown %]
+ [%-
+ FOR type IN ctx.added_content.keys;
+ IF ctx.added_content.$type.status == '3' # status unknown %]
- dojo.addOnLoad(function() {
- var ident = '[% ident %]';
- var type = '[% type %]';
+ dojo.addOnLoad(function() {
+ var bre_id = '[% ctx.bre_id %]';
+ var type = '[% type %]';
- acIsAvailable(ident, type, function(avail, ident, type) {
- if (avail) {
+ acIsAvailable(bre_id, type, function(avail, bre_id, type) {
+ if (avail) {
- [% IF CGI.param('expand') == 'addedcontent' %]
+ [% IF CGI.param('expand') == 'addedcontent' %]
- // if the content is available, un-hide the tab
- dojo.removeClass(dojo.byId('ac:' + type), 'hidden');
+ // if the content is available, un-hide the tab
+ dojo.removeClass(dojo.byId('ac:' + type), 'hidden');
- [% ELSE %]
- // if no default type is selected on the main tab link
- // set one here, since we have available content
+ [% ELSE %]
+ // if no default type is selected on the main tab link
+ // set one here, since we have available content
- var link = dojo.query('[name=addedcontent]')[0];
- var href = link.getAttribute('href');
- if (!href.match('[\&;]ac=')) {
- href = href.replace('#addedcontent', ';ac=' + type + '#addedcontent');
- dojo.attr(link, 'href', href);
- dojo.attr(dojo.query('[name=addedcontent_lbl]')[0], 'href', href);
- }
+ var link = dojo.query('[name=addedcontent]')[0];
+ var href = link.getAttribute('href');
+ if (!href.match('[\&;]ac=')) {
+ href = href.replace('#addedcontent', ';ac=' + type + '#addedcontent');
+ dojo.attr(link, 'href', href);
+ dojo.attr(dojo.query('[name=addedcontent_lbl]')[0], 'href', href);
+ }
- [% END %]
- }
- });
+ [% END %]
+ }
});
- [% END; # IF status unknown
- END %]
+ });
+ [% END; # IF status unknown
+ END; # FOR type
+
+ ident = ctx.record_attrs.isbn_clean || ctx.record_attrs.upc;
+ IF ident;
+ -%]
[%- IF ENV.OILS_NOVELIST_URL -%]
/* Load novelist content */
ClientIdentifier : '[% ident %]',
ISBN : '[% ident %]',
version : '2.1'
- },
+ },
'[% ENV.OILS_NOVELIST_PROFILE %]',
'[% ENV.OILS_NOVELIST_PASSWORD %]',
function(d){