Bug 19640: fix OPAC IdRef webservice display
The OPAC webservice IdRef display was broken.
The call returns results but citations where empty.
Maybe the webservice has changed.
This patch corrects the fetch of datas in result.
Also fixes a small HTML missing tag tr.
Also adds a comment with link to official doc :
http://documentation.abes.fr/aideidrefdeveloppeur/index.html#MicroWebBiblio
Test plan :
1) Enable system preference IdRef
2) Choose an existing PPN like 032581270
3) Look result on : https://www.idref.fr/services/biblio/032581270.json
4) Call in OPAC website : /cgi-bin/koha/opac-idref.pl?unimarc3=032581270
5) Without patch you see only one role containing empty rows
6) With patch you see all roles with correct rows
Signed-off-by: Simon Pouchol <simon.pouchol@biblibre.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Amended: removed unused @unimarc3 (not to be confused with $unimarc3).
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
(cherry picked from commit 803c70cef8)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
This commit is contained in:
parent
6187322aa2
commit
aa3d1a469d
|
|
@ -27,9 +27,11 @@
|
|||
<div class="docs">
|
||||
<table>
|
||||
<thead>
|
||||
<th>Citation</th>
|
||||
<th>Koha</th>
|
||||
<th>Sudoc</th>
|
||||
<tr>
|
||||
<th>Citation</th>
|
||||
<th>Koha</th>
|
||||
<th>Sudoc</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
[% FOREACH doc IN role.docs %]
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
|
|||
|
||||
my $ua = LWP::UserAgent->new;
|
||||
|
||||
# See http://documentation.abes.fr/aideidrefdeveloppeur/index.html#MicroWebBiblio
|
||||
my $base = 'http://www.idref.fr/services/biblio/';
|
||||
my $unimarc3 = $cgi->param('unimarc3');
|
||||
|
||||
|
|
@ -60,36 +61,26 @@ if ( not $response->is_success) {
|
|||
my $content = Encode::decode("utf8", $response->content);
|
||||
my $json = from_json( $content );
|
||||
my $r;
|
||||
my $role_name;
|
||||
my @unimarc3;
|
||||
my @results = ref $json->{sudoc}{result} eq "ARRAY"
|
||||
? @{ $json->{sudoc}{result} }
|
||||
: ($json->{sudoc}{result});
|
||||
|
||||
for my $role_node ( @results ) {
|
||||
while ( my ( $k, $v ) = each %$role_node ) {
|
||||
next unless $k eq "role";
|
||||
my $role_name;
|
||||
my $count = 0;
|
||||
my $role_data = {};
|
||||
my @nodes = ref $v eq "ARRAY"
|
||||
? @$v
|
||||
: ($v);
|
||||
for my $node ( @nodes ) {
|
||||
while ( ( $k, $v ) = each %$node ) {
|
||||
if ( $k eq 'roleName' ) {
|
||||
$role_name = $v;
|
||||
$role_data->{role_name} = $role_name;
|
||||
}
|
||||
elsif ( $k eq 'count' ) {
|
||||
$role_data->{count} = $v;
|
||||
}
|
||||
elsif ( $k eq 'doc' ) {
|
||||
push @{ $role_data->{docs} }, $v;
|
||||
}
|
||||
}
|
||||
}
|
||||
push @$r, $role_data;
|
||||
for my $result (@results) {
|
||||
my $role_node = $result->{'role'};
|
||||
my @roles =
|
||||
ref $role_node eq "ARRAY"
|
||||
? @$role_node
|
||||
: ($role_node);
|
||||
for my $role (@roles) {
|
||||
my @docs = ref $role->{doc} eq "ARRAY"
|
||||
? @{ $role->{doc} }
|
||||
: $role->{doc};
|
||||
push @$r,
|
||||
{
|
||||
role_name => $role->{roleName},
|
||||
count => $role->{count},
|
||||
docs => \@docs,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue