Bugzilla – Attachment 13141 Details for
Bug 8995
Show OpenURL links in OPAC search results
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 8995: Show OpenURL links in OPAC search results
Bug-8995-Show-OpenURL-links-in-OPAC-search-results.patch (text/plain), 20.07 KB, created by
Julian Maurice
on 2012-10-31 13:49:48 UTC
(
hide
)
Description:
Bug 8995: Show OpenURL links in OPAC search results
Filename:
MIME Type:
Creator:
Julian Maurice
Created:
2012-10-31 13:49:48 UTC
Size:
20.07 KB
patch
obsolete
>From a94a8e15ca9789c36f4c97361990787a2c8991cc Mon Sep 17 00:00:00 2001 >From: Julian Maurice <jajm@jajm.org> >Date: Thu, 24 May 2012 17:50:53 +0200 >Subject: [PATCH] Bug 8995: Show OpenURL links in OPAC search results > >This patch use GetCOinS sub to provide an OpenURL link in OPAC search >results. It uses 4 new system preferences: > - OpenURLinOPACResults: enable or disable this feature > - OpenURLResolverURL: url of the openURL resolver > - OpenURLText: text of the link > - OpenURLImageLocation: image of the link > >Link is displayed as an image if OpenURLImageLocation is defined, and as >text otherwise. >It works both with and without XSLT enabled. Changes are made for >UNIMARC and MARC21 xslt. > >Note: this patch also moves the Babeltheque code outside an if >statement "if (C4::Context->preference('COinSinOPACResults'))" (was >misplaced because Babeltheque don't need COinS) >--- > C4/Search.pm | 6 +- > C4/XSLT.pm | 14 ++++- > installer/data/mysql/sysprefs.sql | 4 ++ > installer/data/mysql/updatedatabase.pl | 23 ++++++++ > .../prog/en/modules/admin/preferences/opac.pref | 22 +++++++ > .../opac-tmpl/prog/en/modules/opac-results.tt | 18 ++++++ > .../prog/en/xslt/MARC21slim2OPACResults.xsl | 61 ++++++++++++++++++++ > .../prog/en/xslt/UNIMARCslim2OPACResults.xsl | 60 +++++++++++++++++++ > opac/opac-search.pl | 51 +++++++++------- > 9 files changed, 235 insertions(+), 24 deletions(-) > >diff --git a/C4/Search.pm b/C4/Search.pm >index 3a63fcd..fbb40fc 100644 >--- a/C4/Search.pm >+++ b/C4/Search.pm >@@ -1909,7 +1909,11 @@ sub searchResults { > warn $marcrecord->as_formatted if $DEBUG; > my $interface = $search_context eq 'opac' ? 'OPAC' : ''; > if (!$scan && C4::Context->preference($interface . "XSLTResultsDisplay")) { >- $oldbiblio->{XSLTResultsRecord} = XSLTParse4Display($oldbiblio->{biblionumber}, $marcrecord, $interface."XSLTResultsDisplay", 1, \@hiddenitems); >+ my $variables = {}; >+ if (C4::Context->preference('OpenURLinOPACResults')) { >+ $variables->{COinS} = C4::Biblio::GetCOinSBiblio($marcrecord); >+ } >+ $oldbiblio->{XSLTResultsRecord} = XSLTParse4Display($oldbiblio->{biblionumber}, $marcrecord, $interface."XSLTResultsDisplay", 1, \@hiddenitems, $variables); > # the last parameter tells Koha to clean up the problematic ampersand entities that Zebra outputs > } > >diff --git a/C4/XSLT.pm b/C4/XSLT.pm >index 19ec162..6db5368 100644 >--- a/C4/XSLT.pm >+++ b/C4/XSLT.pm >@@ -137,7 +137,7 @@ sub getAuthorisedValues4MARCSubfields { > my $stylesheet; > > sub XSLTParse4Display { >- my ( $biblionumber, $orig_record, $xslsyspref, $fixamps, $hidden_items ) = @_; >+ my ( $biblionumber, $orig_record, $xslsyspref, $fixamps, $hidden_items, $variables ) = @_; > my $xslfilename = C4::Context->preference($xslsyspref); > if ( $xslfilename =~ /^\s*"?default"?\s*$/i ) { > my $htdocs; >@@ -189,14 +189,22 @@ sub XSLTParse4Display { > Display856uAsImage OPACDisplay856uAsImage > UseControlNumber IntranetBiblioDefaultView BiblioDefaultView > singleBranchMode >- AlternateHoldingsField AlternateHoldingsSeparator / ) >+ AlternateHoldingsField AlternateHoldingsSeparator >+ OpenURLinOPACResults OpenURLResolverURL >+ OpenURLImageLocation OpenURLText >+ / ) > { > my $sp = C4::Context->preference( $syspref ); > next unless defined($sp); > $sysxml .= "<syspref name=\"$syspref\">$sp</syspref>\n"; > } > $sysxml .= "</sysprefs>\n"; >- $xmlrecord =~ s/\<\/record\>/$itemsxml$sysxml\<\/record\>/; >+ my $varxml = "<variables>\n"; >+ while (my ($key, $value) = each %$variables) { >+ $varxml .= "<variable name=\"$key\">$value</variable>\n"; >+ } >+ $varxml .= "</variables>\n"; >+ $xmlrecord =~ s/\<\/record\>/$itemsxml$sysxml$varxml\<\/record\>/; > if ($fixamps) { # We need to correct the ampersand entities that Zebra outputs > $xmlrecord =~ s/\&amp;/\&/g; > } >diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql >index a4e4102..e4f37a7 100644 >--- a/installer/data/mysql/sysprefs.sql >+++ b/installer/data/mysql/sysprefs.sql >@@ -386,3 +386,7 @@ INSERT INTO systempreferences (variable,value,explanation,type) VALUES('OPACdidy > INSERT INTO systempreferences (variable,value,explanation,type) VALUES('INTRAdidyoumean',NULL,'Did you mean? configuration for the Intranet. Do not change, as this is controlled by /cgi-bin/koha/admin/didyoumean.pl.','Free'); > INSERT INTO systempreferences (variable, value, options, explanation, type) VALUES ('BlockReturnOfWithdrawnItems', '1', '0', 'If enabled, items that are marked as withdrawn cannot be returned.', 'YesNo'); > INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('HoldsToPullStartDate','2','Set the default start date for the Holds to pull list to this many days ago',NULL,'Integer'); >+INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpenURLResolverURL', '', 'URL of OpenURL Resolver', NULL, 'Free'); >+INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpenURLText', '', 'Text of OpenURL links (or image title if OpenURLImageLocation is defined)', NULL, 'Free'); >+INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpenURLImageLocation', '', 'Location of image for OpenURL links', NULL, 'Free'); >+INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpenURLinOPACResults', '', 'Enable display of OpenURL links in OPAC search results', NULL, 'YesNo'); >diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl >index 7ab48ee..37e5cec 100755 >--- a/installer/data/mysql/updatedatabase.pl >+++ b/installer/data/mysql/updatedatabase.pl >@@ -6020,6 +6020,29 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) { > SetVersion ($DBversion); > } > >+$DBversion = "XXX"; >+if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { >+ $dbh->do(" >+ INSERT INTO systempreferences (variable,value,explanation,options,type) >+ VALUES('OpenURLResolverURL', '', 'URL of OpenURL Resolver', NULL, 'Free') >+ "); >+ $dbh->do(" >+ INSERT INTO systempreferences (variable,value,explanation,options,type) >+ VALUES('OpenURLText', '', 'Text of OpenURL links (or image title if OpenURLImageLocation is defined)', NULL, 'Free'); >+ "); >+ $dbh->do(" >+ INSERT INTO systempreferences (variable,value,explanation,options,type) >+ VALUES('OpenURLImageLocation', '', 'Location of image for OpenURL links', NULL, 'Free'); >+ "); >+ $dbh->do(" >+ INSERT INTO systempreferences (variable,value,explanation,options,type) >+ VALUES('OpenURLinOPACResults', '', 'Enable display of OpenURL links in OPAC search results', NULL, 'YesNo'); >+ "); >+ print "Upgrade to $DBversion done (Add sysprefs for OpenURL)\n"; >+ SetVersion($DBversion); >+} >+ >+ > =head1 FUNCTIONS > > =head2 TableExists($table) >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref >index 1a9fa09..cf3c7f2 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref >@@ -258,6 +258,28 @@ OPAC: > - '<br />Note: Available options are: BIBTEX (<code>bibtex</code>), Dublin Core (<code>dc</code>),' > - 'MARCXML (<code>marcxml</code>), MARC-8 encoded MARC (<code>marc8</code>), Unicode/UTF-8 encoded MARC (<code>utf8</code>),' > - 'Unicode/UTF-8 encoded MARC without local use -9xx, x9x, xx9- fields and subfields (<code>marcstd</code>), MODS (<code>mods</code>), RIS (<code>ris</code>)' >+ - >+ - 'Complete URL of OpenURL resolver (starting with <tt>http://</tt> or <tt>https://</tt>):' >+ - pref: OpenURLResolverURL >+ class: url >+ - >+ - 'Text of OpenURL links (or image title if OpenURLImageLocation is defined):' >+ - pref: OpenURLText >+ - >+ - 'Location of image for OpenURL links:' >+ - pref: OpenURLImageLocation >+ class: url >+ - '<br />Can be a complete URL starting with <tt>http://</tt> or' >+ - '<tt>https://</tt> or the name of a file in <tt>images</tt> directory' >+ - '<br />Examples:' >+ - '<br />- <tt>http://www.example.com/img/openurl.png</tt>' >+ - '<br />- <tt>OpenURL/OpenURL.png</tt> (file is in <tt>opac-tmpl/<opacthemes>/images/OpenURL/OpenURL.png</tt>)' >+ - >+ - pref: OpenURLinOPACResults >+ choices: >+ yes: Enable >+ no: Disable >+ - 'display of OpenURL link in OPAC search results.' > Features: > - > - pref: opacuserlogin >diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-results.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-results.tt >index 53e6e4e..3a1a62a 100644 >--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-results.tt >+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-results.tt >@@ -414,6 +414,13 @@ $(document).ready(function(){ > </div> > > </td></tr> >+ [%# Build OpenURL image location %] >+ [% IF (OpenURLImageLocation && !OpenURLImageLocation.match('^https?://')) %] >+ [% openurlimagelocation = "$interface/$theme/images/$OpenURLImageLocation" %] >+ [% ELSE %] >+ [% openurlimagelocation = "$OpenURLImageLocation" %] >+ [% END %] >+ > <!-- Actual Search Results --> > [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %] > [% UNLESS ( loop.odd ) %] >@@ -469,6 +476,17 @@ $(document).ready(function(){ > [% IF ( SEARCH_RESULT.author ) %]by <a href="/cgi-bin/koha/opac-search.pl?q=au:[% SEARCH_RESULT.author |url %]" title="Search for works by this author" class="author">[% SEARCH_RESULT.author %]</a> > [% ELSE %] > [% END %] >+ [% IF (OpenURLinOPACResults && OpenURLResolverURL && SEARCH_RESULT.coins) %] >+ <a href="[% OpenURLResolverURL %]?[% SEARCH_RESULT.coins %]" title="[% OpenURLText %]"> >+ [% IF openurlimagelocation %] >+ <img style="vertical-align:middle" src="[% openurlimagelocation %]" /> >+ [% ELSIF OpenURLText %] >+ [% OpenURLText %] >+ [% ELSE %] >+ OpenURL >+ [% END %] >+ </a> >+ [% END %] > <span class="results_summary"><span class="label">Publication:</span> > [% IF ( SEARCH_RESULT.place ) %][% SEARCH_RESULT.place %] [% END %][% IF ( SEARCH_RESULT.publishercode ) %][% SEARCH_RESULT.publishercode|html %][% END %][% IF ( SEARCH_RESULT.publicationyear ) %] [% SEARCH_RESULT.publicationyear %] > [% ELSE %][% IF ( SEARCH_RESULT.copyrightdate ) %] [% SEARCH_RESULT.copyrightdate %][% END %][% END %] >diff --git a/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACResults.xsl b/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACResults.xsl >index 4f0acd3..533c460 100644 >--- a/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACResults.xsl >+++ b/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACResults.xsl >@@ -436,6 +436,67 @@ > </xsl:for-each> > </xsl:if> > </a> >+ >+ <!-- OpenURL link --> >+ <xsl:variable name="OpenURLinOPACResults" select="marc:sysprefs/marc:syspref[@name='OpenURLinOPACResults']" /> >+ <xsl:variable name="OpenURLResolverURL" select="marc:sysprefs/marc:syspref[@name='OpenURLResolverURL']" /> >+ <xsl:variable name="OpenURLImageLocation" select="marc:sysprefs/marc:syspref[@name='OpenURLImageLocation']" /> >+ <xsl:variable name="OpenURLText" select="marc:sysprefs/marc:syspref[@name='OpenURLText']" /> >+ <xsl:variable name="COinS" select="marc:variables/marc:variable[@name='COinS']" /> >+ >+ <xsl:if test="$OpenURLinOPACResults = 1 and $OpenURLResolverURL != '' and $COinS != ''"> >+ <xsl:variable name="openurltext"> >+ <xsl:choose> >+ <xsl:when test="$OpenURLText != ''"> >+ <xsl:value-of select="$OpenURLText" /> >+ </xsl:when> >+ <xsl:otherwise> >+ <xsl:text>OpenURL</xsl:text> >+ </xsl:otherwise> >+ </xsl:choose> >+ </xsl:variable> >+ >+ <xsl:variable name="openurlimagelocation"> >+ <xsl:choose> >+ <xsl:when test="starts-with($OpenURLImageLocation, 'http://') or starts-with($OpenURLImageLocation, 'https://')"> >+ <xsl:value-of select="$OpenURLImageLocation" /> >+ </xsl:when> >+ <xsl:when test="$OpenURLImageLocation != ''"> >+ <xsl:text>/opac-tmpl/prog/images/</xsl:text> >+ <xsl:value-of select="$OpenURLImageLocation" /> >+ </xsl:when> >+ </xsl:choose> >+ </xsl:variable> >+ >+ <a> >+ <xsl:attribute name="href"> >+ <xsl:value-of select="$OpenURLResolverURL" /> >+ <xsl:text>?</xsl:text> >+ <xsl:value-of select="$COinS" /> >+ </xsl:attribute> >+ <xsl:attribute name="title"> >+ <xsl:value-of select="$openurltext" /> >+ </xsl:attribute> >+ <xsl:choose> >+ <xsl:when test="$openurlimagelocation != ''"> >+ <xsl:attribute name="style"> >+ <xsl:text>text-decoration:none</xsl:text> >+ </xsl:attribute> >+ <img> >+ <xsl:attribute name="src"> >+ <xsl:value-of select="$openurlimagelocation" /> >+ </xsl:attribute> >+ <xsl:attribute name="style"> >+ <xsl:text>vertical-align:middle</xsl:text> >+ </xsl:attribute> >+ </img> >+ </xsl:when> >+ <xsl:otherwise> >+ <xsl:value-of select="$openurltext" /> >+ </xsl:otherwise> >+ </xsl:choose> >+ </a> >+ </xsl:if> > <p> > > <!-- Author Statement: Alternate Graphic Representation (MARC 880) --> >diff --git a/koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslim2OPACResults.xsl b/koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslim2OPACResults.xsl >index 2b416fb..683a40e 100644 >--- a/koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslim2OPACResults.xsl >+++ b/koha-tmpl/opac-tmpl/prog/en/xslt/UNIMARCslim2OPACResults.xsl >@@ -76,6 +76,66 @@ > </xsl:for-each> > </xsl:if> > >+ <xsl:variable name="OpenURLinOPACResults" select="marc:sysprefs/marc:syspref[@name='OpenURLinOPACResults']" /> >+ <xsl:variable name="OpenURLResolverURL" select="marc:sysprefs/marc:syspref[@name='OpenURLResolverURL']" /> >+ <xsl:variable name="OpenURLImageLocation" select="marc:sysprefs/marc:syspref[@name='OpenURLImageLocation']" /> >+ <xsl:variable name="OpenURLText" select="marc:sysprefs/marc:syspref[@name='OpenURLText']" /> >+ <xsl:variable name="COinS" select="marc:variables/marc:variable[@name='COinS']" /> >+ >+ <xsl:if test="$OpenURLinOPACResults = 1 and $OpenURLResolverURL != '' and $COinS != ''"> >+ <xsl:variable name="openurltext"> >+ <xsl:choose> >+ <xsl:when test="$OpenURLText != ''"> >+ <xsl:value-of select="$OpenURLText" /> >+ </xsl:when> >+ <xsl:otherwise> >+ <xsl:text>OpenURL</xsl:text> >+ </xsl:otherwise> >+ </xsl:choose> >+ </xsl:variable> >+ >+ <xsl:variable name="openurlimagelocation"> >+ <xsl:choose> >+ <xsl:when test="starts-with($OpenURLImageLocation, 'http://') or starts-with($OpenURLImageLocation, 'https://')"> >+ <xsl:value-of select="$OpenURLImageLocation" /> >+ </xsl:when> >+ <xsl:when test="$OpenURLImageLocation != ''"> >+ <xsl:text>/opac-tmpl/prog/images/</xsl:text> >+ <xsl:value-of select="$OpenURLImageLocation" /> >+ </xsl:when> >+ </xsl:choose> >+ </xsl:variable> >+ >+ <a> >+ <xsl:attribute name="href"> >+ <xsl:value-of select="$OpenURLResolverURL" /> >+ <xsl:text>?</xsl:text> >+ <xsl:value-of select="$COinS" /> >+ </xsl:attribute> >+ <xsl:attribute name="title"> >+ <xsl:value-of select="$openurltext" /> >+ </xsl:attribute> >+ <xsl:choose> >+ <xsl:when test="$openurlimagelocation != ''"> >+ <xsl:attribute name="style"> >+ <xsl:text>text-decoration:none</xsl:text> >+ </xsl:attribute> >+ <img> >+ <xsl:attribute name="src"> >+ <xsl:value-of select="$openurlimagelocation" /> >+ </xsl:attribute> >+ <xsl:attribute name="style"> >+ <xsl:text>vertical-align:middle</xsl:text> >+ </xsl:attribute> >+ </img> >+ </xsl:when> >+ <xsl:otherwise> >+ <xsl:value-of select="$openurltext" /> >+ </xsl:otherwise> >+ </xsl:choose> >+ </a> >+ </xsl:if> >+ > <xsl:call-template name="tag_title"> > <xsl:with-param name="tag">454</xsl:with-param> > <xsl:with-param name="label">Translation of</xsl:with-param> >diff --git a/opac/opac-search.pl b/opac/opac-search.pl >index 7677d86..2a5b074 100755 >--- a/opac/opac-search.pl >+++ b/opac/opac-search.pl >@@ -459,6 +459,16 @@ if (C4::Context->preference('OpacSuppression')) { > } > } > >+# OpenURL >+if (C4::Context->preference('OpenURLinOPACResults')) { >+ $template->param( >+ OpenURLinOPACResults => 1, >+ OpenURLResolverURL => C4::Context->preference('OpenURLResolverURL'), >+ OpenURLText => C4::Context->preference('OpenURLText'), >+ OpenURLImageLocation => C4::Context->preference('OpenURLImageLocation') >+ ); >+} >+ > $template->param ( LIMIT_INPUTS => \@limit_inputs ); > $template->param ( OPACResultsSidebar => C4::Context->preference('OPACResultsSidebar')); > >@@ -543,6 +553,27 @@ for (my $i=0;$i<@servers;$i++) { > if ( grep {$_ eq $line->{'biblionumber'}} @cart_list) { > $line->{'incart'} = 1; > } >+ >+ if (C4::Context->preference('COinSinOPACResults') >+ or C4::Context->preference('OpenURLinOPACResults')) { >+ my $record = GetMarcBiblio($line->{'biblionumber'}); >+ $line->{coins} = GetCOinSBiblio($record); >+ } >+ >+ if ( C4::Context->preference( "Babeltheque" ) and $line->{normalized_isbn} ) { >+ my $isbn = Business::ISBN->new( $line->{normalized_isbn} ); >+ next if not $isbn; >+ $isbn = $isbn->as_isbn13->as_string; >+ $isbn =~ s/-//g; >+ my $social_datas = C4::SocialData::get_data( $isbn ); >+ next if not $social_datas; >+ for my $key ( keys %$social_datas ) { >+ $line->{$key} = $$social_datas{$key}; >+ if ( $key eq 'score_avg' ){ >+ $line->{score_int} = sprintf("%.0f", $$social_datas{score_avg} ); >+ } >+ } >+ } > } > > >@@ -557,26 +588,6 @@ for (my $i=0;$i<@servers;$i++) { > } > } > >- if (C4::Context->preference('COinSinOPACResults')) { >- foreach (@newresults) { >- my $record = GetMarcBiblio($_->{'biblionumber'}); >- $_->{coins} = GetCOinSBiblio($record); >- if ( C4::Context->preference( "Babeltheque" ) and $_->{normalized_isbn} ) { >- my $isbn = Business::ISBN->new( $_->{normalized_isbn} ); >- next if not $isbn; >- $isbn = $isbn->as_isbn13->as_string; >- $isbn =~ s/-//g; >- my $social_datas = C4::SocialData::get_data( $isbn ); >- next if not $social_datas; >- for my $key ( keys %$social_datas ) { >- $_->{$key} = $$social_datas{$key}; >- if ( $key eq 'score_avg' ){ >- $_->{score_int} = sprintf("%.0f", $$social_datas{score_avg} ); >- } >- } >- } >- } >- } > > > if ( C4::Context->preference('OpacStarRatings') eq 'all' ) { >-- >1.7.10.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 8995
:
13141
|
22753
|
23625
|
23626
|
23627
|
24087
|
24088
|
24089
|
26899
|
26900
|
26901
|
29357
|
29358
|
29359
|
30385
|
30386
|
30387
|
30388
|
30389
|
30390
|
35747
|
35916
|
40647
|
44639
|
48371
|
48372
|
55131
|
55132
|
55133
|
55134
|
55135
|
55136
|
55882
|
64513
|
64514
|
64515
|
64516
|
64517
|
64518
|
64519
|
64532
|
64533
|
64534
|
64535
|
64536
|
64537
|
64538
|
86483
|
86484
|
86485
|
86486
|
86487
|
86488
|
86489
|
86490
|
86491
|
86492
|
86541
|
86542
|
86557
|
86558
|
86559
|
86601
|
86602
|
86603
|
86604
|
86605
|
86606
|
86607
|
86608
|
86609
|
86610
|
88665
|
88666
|
88667
|
88668
|
88669
|
88670
|
88671
|
88672
|
88673
|
88735
|
88736
|
88737
|
88738
|
88739
|
88740
|
88741
|
88742
|
88743
|
88744
|
89012
|
89013
|
89014
|
89015
|
89120