Partial fixes to enable unapi for non-zebra and non-public-facing sru
authorJoshua Ferraro <jmf@liblime.com>
Tue, 8 Apr 2008 13:15:24 +0000 (09:15 -0400)
committerJoshua Ferraro <jmf@liblime.com>
Wed, 9 Apr 2008 00:48:55 +0000 (19:48 -0500)
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
C4/Search.pm
C4/XSLT.pm
koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACDetail.xsl
koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACResults.xsl
opac/opac-detail.pl
opac/unapi

index cbff21f..e722225 100644 (file)
@@ -1490,7 +1490,7 @@ s/\[(.?.?.?.?)$tagsubf(.*?)]/$1$subfieldvalue$2\[$1$tagsubf$2]/g;
 
         # XSLT processing of some stuff
         if (C4::Context->preference("XSLTResultsDisplay") ) {
-            my $newxmlrecord = XSLTParse4Display($oldbiblio->{biblionumber},'Results');
+            my $newxmlrecord = XSLTParse4Display($oldbiblio->{biblionumber},C4::Context->config('opachtdocs')."/prog/en/xslt/MARC21slim2OPACResults.xsl");
             $oldbiblio->{XSLTResultsRecord} = $newxmlrecord;
         }
 
index d6cdcfa..4a383fb 100644 (file)
@@ -101,13 +101,12 @@ sub getAuthorisedValues4MARCSubfields {
 }
 
 sub XSLTParse4Display {
-    my ($biblionumber,$type) = @_;
+    my ($biblionumber,$xslfile) = @_;
     # grab the XML, run it through our stylesheet, push it out to the browser
     my $record = transformMARCXML4XSLT($biblionumber);
     my $itemsxml  = buildKohaItemsNamespace($biblionumber);
     my $xmlrecord = $record->as_xml();
     $xmlrecord =~ s/\<\/record\>/$itemsxml\<\/record\>/;
-    my $xslfile = C4::Context->config('opachtdocs')."/prog/en/xslt/MARC21slim2OPAC$type.xsl";
     my $parser = XML::LibXML->new();
     # don't die when you find &, >, etc
     $parser->recover_silently(1);
index dbeffa6..72182ed 100644 (file)
@@ -54,6 +54,7 @@
                     <xsl:call-template name="subfieldSelect">
                         <xsl:with-param name="codes">ab</xsl:with-param>
                     </xsl:call-template>
+                    <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
             </xsl:for-each>
         </xsl:variable>
 
         <img src="/opac-tmpl/prog/famfamfam/{$materialTypeCode}.png"/><xsl:value-of select="$materialTypeLabel"/>
         </p>
         </xsl:if>
-        <xsl:if test="$lcc">
+        <xsl:if test="marc:datafield[@tag=050]">
         <p><span class="label">Library of Congress Classification: </span>
         <xsl:value-of select="$lcc"/>
         </p>
         </xsl:if>
         <xsl:if test="marc:datafield[@tag=020]">
         <p><span class="label">ISBN: </span>
+        <!-- unAPI <abbr/> tag -->
         <xsl:for-each select="marc:datafield[@tag=020]">
-                <xsl:value-of select="marc:subfield[@code='a']"/>
+        <xsl:variable name="isbn" select="marc:subfield[@code='a']"/>
+        <abbr class="unapi-id" title="koha:isbn:{$isbn}"><xsl:value-of select="marc:subfield[@code='a']"/></abbr>
                 <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
         </xsl:for-each>
         </p>
index ee98035..d8ba11b 100644 (file)
                     <xsl:call-template name="subfieldSelect">
                         <xsl:with-param name="codes">ab</xsl:with-param>
                     </xsl:call-template>
+                    <xsl:choose><xsl:when test="position()=last()"><xsl:text>.</xsl:text></xsl:when><xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise></xsl:choose>
             </xsl:for-each>
         </xsl:variable>
     <td style="vertical-align:top;">
index f017bcc..4056472 100755 (executable)
@@ -51,7 +51,7 @@ my $biblionumber = $query->param('biblionumber') || $query->param('bib');
 $template->param( biblionumber => $biblionumber );
 # XSLT processing of some stuff
 if (C4::Context->preference("XSLTResultsDisplay") ) {
-    my $newxmlrecord = XSLTParse4Display($biblionumber,'Detail');
+    my $newxmlrecord = XSLTParse4Display($biblionumber,C4::Context->config('opachtdocs')."/prog/en/xslt/MARC21slim2OPACDetail.xsl");
     $template->param('XSLTBloc' => $newxmlrecord);
 }
 
index 1197be5..b6d03b3 100755 (executable)
@@ -17,11 +17,30 @@ warn "Warning: OPACBaseURL not set in system preferences" unless $baseurl;
 my $id = $cgi->param('id');
 my $format = $cgi->param('format');
 if ($id && $format) {
+
     # koha:isbn:0152018484
     if ($id =~ /isbn/) {
         $id =~ s/koha:isbn://;
+
+        # two ways to do this, one via the SRU Zebra server (fast)
         my $url = "http://$baseurl:9998/biblios?version=1.1&operation=searchRetrieve&query=$id&startRecord=1&maximumRecords=20&recordSchema=$format";
-        my $content = get($url);
+        my $content= get($url);
+
+        # the other via XSL parsing (not as fast)
+        unless ($content) {
+            
+        eval {
+            my $conn = C4::Context->Zconn('biblioserver');
+            $conn->option(preferredRecordSyntax => $format);
+            my $rs = $conn->search_pqf('@attr 1=7 '.$id);
+            my $n = $rs->size();
+            $content = $rs->record(0)->raw();
+        };
+        if ($@) {
+            print "Error ", $@->code(), ": ", $@->message(), "\n";
+        }
+
+        }
         print $cgi->header( -type =>'application/xml' );
         print $content;
     }