fixing facets, add cardview (XSLT), adding dependencies, save Record
authorJoshua Ferraro <jmf@liblime.com>
Sat, 17 Nov 2007 03:40:39 +0000 (21:40 -0600)
committerJoshua Ferraro <jmf@liblime.com>
Sat, 17 Nov 2007 16:49:31 +0000 (10:49 -0600)
Signed-off-by: Chris Cormack <crc@liblime.com>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
Makefile.PL
catalogue/cardview.pl [new file with mode: 0755]
catalogue/export.pl [new file with mode: 0755]
koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc
koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tmpl
koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tmpl
koha-tmpl/intranet-tmpl/prog/en/xslt/compact.xsl [new file with mode: 0644]

index 53ea90c..1795050 100755 (executable)
@@ -122,6 +122,7 @@ WriteMakefile(
 'MARC::Charset' => 0.95,
 'MARC::File::XML' => 0.86,
 'MARC::Record' => 1.38,
+'MARC::Crosswalk::DublinCore' => 0.02,
 'MIME::Base64' => 3.07,
 'MIME::QuotedPrint' => 3.07,
 'Mail::Sendmail' => 0.79,
diff --git a/catalogue/cardview.pl b/catalogue/cardview.pl
new file mode 100755 (executable)
index 0000000..e7622da
--- /dev/null
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+use strict;
+require Exporter;
+use CGI;
+use XML::LibXSLT;
+use XML::LibXML;
+use C4::Koha;
+use C4::Auth;
+use C4::Biblio;
+use C4::Languages qw(getTranslatedLanguages);
+
+my $query=new CGI;
+my ($template, $borrowernumber, $cookie) 
+    = get_template_and_user({template_name => "opac-detail.tmpl",
+                            query => $query,
+                            type => "opac",
+                            authnotrequired => 1,
+                            flagsrequired => {borrow => 1},
+                            });
+
+# load the languages
+my @languages_options = getTranslatedLanguages($query);
+my $languages_count = @languages_options;
+if($languages_count > 1){
+        $template->param(languages => \@languages_options);
+}
+my $biblionumber=$query->param('biblionumber');
+$template->param(biblionumber => $biblionumber);
+
+# grab the XML, run it through our stylesheet, push it out to the browser
+my $xmlrecord = GetXmlBiblio($biblionumber);
+#my $xslfile = "/home/kohacat/etc/xslt/MARC21slim2HTML.xsl";
+#my $xslfile = "/home/kohacat/etc/xslt/MARC21slim2English.xsl";
+my $xslfile = C4::Context->config('intranetdir')."/koha-tmpl/intranet-tmpl/prog/en/xslt/compact.xsl";
+my $parser = XML::LibXML->new();
+my $xslt = XML::LibXSLT->new();
+my $source = $parser->parse_string($xmlrecord);
+my $style_doc = $parser->parse_file($xslfile);
+my $stylesheet = $xslt->parse_stylesheet($style_doc);
+my $results = $stylesheet->transform($source);
+my $newxmlrecord = $stylesheet->output_string($results);
+print "Content-type: text/html\n\n";
+print $newxmlrecord;
diff --git a/catalogue/export.pl b/catalogue/export.pl
new file mode 100755 (executable)
index 0000000..a6b7cb0
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/perl
+use HTML::Template;
+use strict;
+require Exporter;
+use C4::Record;
+use C4::Auth;
+use C4::Output;
+use C4::Biblio;
+use CGI;
+use C4::Auth;
+
+my $query = new CGI;
+my $op=$query->param("op");
+my $format=$query->param("format");
+if ($op eq "export") {
+       my $biblionumber = $query->param("bib");
+       my $dbh=C4::Context->dbh;
+       my $sth;
+       if ($biblionumber) {
+               $sth=$dbh->prepare("SELECT marc FROM biblioitems WHERE biblionumber =?");
+               $sth->execute($biblionumber);
+       }
+       while (my ($marc) = $sth->fetchrow) {
+               if ($marc){
+
+                       if ($format =~ /marcxml/) {
+                               $marc = marc2marcxml($marc);
+                       }
+                       elsif ($format=~ /mods/) {
+                               $marc = marc2modsxml($marc);
+                       }
+                       elsif ($format =~ /dc/) {
+                               my $error;
+                               ($error,$marc) = marc2dcxml($marc,1);
+                               $format = "dublin-core.xml";
+                       }
+                       elsif ($format =~ /marc8/) {
+                               $marc = changeEncoding($marc,"MARC","MARC21","MARC-8");
+                               $marc = $marc->as_usmarc();
+                       }
+                       elsif ($format =~ /utf8/) {
+                               #default
+                       }
+                       print $query->header(
+                               -type => 'application/octet-stream',
+                -attachment=>"bib-$biblionumber.$format");
+                       print $marc;
+               }
+       }
+}
index c65bc87..ee90c4c 100644 (file)
@@ -1,6 +1,7 @@
 <!-- TMPL_IF NAME="opacfacets" -->
+<!-- TMPL_IF NAME="facets_loop" -->
 <ul id="search_facets">
-<li><h4>Refine Your Search</h4></li>
+<li><h4>Refine your search</h4></li>
 <!-- TMPL_LOOP NAME="facets_loop" -->
 <li id="<!-- TMPL_VAR NAME="type_id" -->"><!-- TMPL_VAR NAME="type_label" --><ul>
         <!-- TMPL_LOOP NAME="facets" --><li><a href="/cgi-bin/koha/catalogue/search.pl?q=<!-- TMPL_VAR NAME="searchdesc" -->&amp;limit=<!-- TMPL_VAR NAME="type_link_value" -->:<!-- TMPL_VAR NAME="facet_link_value" -->" title="<!-- TMPL_VAR NAME="facet_title_value" -->"><!-- TMPL_VAR NAME="facet_label_value" --></a> <!-- (<!-- TMPL_VAR NAME="facet_count" -->)--></li><!-- /TMPL_LOOP --><!-- TMPL_IF NAME="expandable" -->
@@ -10,3 +11,4 @@
 <!-- /TMPL_LOOP -->
 </ul>
 <!-- /TMPL_IF -->
+<!-- /TMPL_IF -->
index 4df48c3..c6eea2b 100644 (file)
 </ul>
 <!-- /TMPL_IF -->
 
+<div class="export">
+<form method="get" action="/cgi-bin/koha/catalogue/export.pl">
+<TABLE BORDER=1 BGCOLOR="#FFFFDD" style="width:300px; margin-right: auto; margin-left:auto;">  <TR>
+      <TH>Save Record</TH>   </TR>
+  <TR>     <TD> Select Download Format:    <SELECT NAME=format>        <OPTION VALUE=mods>MODS (XML)</OPTION>
+        <OPTION VALUE=dc>Dublin Core (XML)</OPTION>        <OPTION VALUE=marcxml>MARCXML</OPTION>
+        <OPTION VALUE=marc8>MARC (non-Unicode/MARC-8)</OPTION>
+        <OPTION VALUE=utf8>MARC (Unicode/UTF-8)</OPTION>    </SELECT>
+<INPUT TYPE="SUBMIT" NAME="SAVE" VALUE="Download Record"></TD>
+  </TR>  <TR><input type="hidden" name="op" value="export" /><INPUT TYPE="HIDDEN" NAME="bib" VALUE=<!-- TMPL_VAR NAME="biblionumber" -->/>
+  </TR></TABLE>
+</form>
+</div>
+
+
 </div>
 
 <!-- TMPL_IF name="subscriptionsnumber" -->
index f57d5d8..6e67b5c 100644 (file)
     </h3>
     <!-- TMPL_ELSE -->
         <!-- TMPL_IF NAME="searchdesc" -->
-            <h3> No Result found !</h3>
+            <h3>No results found</h3>
             <p>
                 No results match your search for <span style="font-weight: bold;">&ldquo;<!-- TMPL_VAR NAME="searchdesc" -->&rdquo;</span> in <!-- TMPL_VAR NAME="LibraryName" --> Catalog.
             </p>
         <!-- TMPL_ELSE -->
-            <h3> No result found !</h3>
+            <h3>No results found</h3>
             <p>
             You did not specify any search criteria.
             </p>
                 <!-- FACETS START -->
                 <!-- TMPL_IF NAME="opacfacets" -->
                     <dt id="facets1" onclick="var Elt=document.getElementById('facets_list');if (Elt.style.display!='block'){Elt.style.display='block';} else {Elt.style.display='none';}">
-                    Refine Your Search
+                    Refine your search
                     </dt>
                     <dd id="facets_list" style="display:none;">
                     <ul>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/compact.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/compact.xsl
new file mode 100644 (file)
index 0000000..0916cda
--- /dev/null
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+  
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  xmlns="http://www.w3.org/1999/xhtml"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:marc="http://www.loc.gov/MARC21/slim" 
+  version="1.0">
+  <xsl:output method="html" doctype-public="-//W3C/DTD HTML 4.01 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/strict.dtd" />    
+      <xsl:template match="/">
+        <html>
+          <head>
+            <meta http-equiv="Content-Type" content="text/html" charset="utf-8"/>
+            <link href="/koha-tmpl/opac-tmpl/prog/en/css/xsl.css" rel="stylesheet" type="text/css" />
+          </head>
+          <body>
+           <xsl:apply-templates/>
+          </body>
+        </html>
+      </xsl:template>
+      
+      <xsl:template match="marc:record">
+        <div class="cardimage">
+        <xsl:apply-templates select="marc:datafield[@tag!='082' and @tag!='092' and @tag!='010']"/>
+        <span class="bottom">
+          <xsl:apply-templates select="marc:controlfield[@tag='001']"/>
+          <xsl:apply-templates select="marc:datafield[@tag='082' or @tag='092' or @tag='010']"/>
+        </span>
+        </div>
+      </xsl:template>
+      
+      <xsl:template match="marc:controlfield">
+          <span class="oclc">#<xsl:value-of select="substring(.,4)"/></span>
+      </xsl:template>
+      
+      <xsl:template match="marc:datafield">
+        <xsl:if test="starts-with(@tag, '1')">
+          <p class="mainheading"><xsl:value-of select="."/></p>
+        </xsl:if>
+        <xsl:if test="starts-with(@tag, '24') and /marc:record/marc:datafield[@tag='100']">
+          <span class="title"><xsl:value-of select="."/></span>
+        </xsl:if>
+        <xsl:if test="starts-with(@tag, '24') and not(/marc:record/marc:datafield[@tag='100'])">
+          <span class="titlemain"><xsl:value-of select="."/></span><br/>
+        </xsl:if>
+        <xsl:if test="@tag='260'">
+          <xsl:value-of select="."/>
+        </xsl:if>
+        <xsl:if test="@tag='300'">
+          <p class="extent"><xsl:value-of select="."/></p>
+        </xsl:if>
+        <xsl:if test="starts-with(@tag, '5')">
+          <p class="note"><xsl:value-of select="."/></p>
+        </xsl:if>
+        <xsl:if test="@tag='650'">
+          <span class='counter'><xsl:number count="marc:datafield[@tag='650']"/>.</span> <xsl:apply-templates select="marc:subfield"/>
+        </xsl:if>
+        <xsl:if test="@tag='653'">
+          <span class="counter"><xsl:number format="i" count="marc:datafield[@tag='653']"/>.</span> <xsl:apply-templates select="marc:subfield"/>
+        </xsl:if>
+        <xsl:if test="@tag='010'">
+          <xsl:variable name="LCCN.nospace" select="translate(., ' ', '')"/>
+          <xsl:variable name="LCCN.length" select="string-length($LCCN.nospace)"/>
+          <xsl:variable name="LCCN.display" select="concat(substring($LCCN.nospace, 1, $LCCN.length - 6), '-', format-number(substring($LCCN.nospace, $LCCN.length - 5),'#'))"/>
+          <span class="LCCN">LCCN:<xsl:value-of select="$LCCN.display"/></span>
+        </xsl:if>
+        <xsl:if test="@tag='082' or @tag='092'">
+          <span class="DDC"><xsl:value-of select="marc:subfield[@code='a']"/></span>
+        </xsl:if>
+        <xsl:if test="@tag='856'">
+          <br/><xsl:apply-templates mode="link" select="marc:subfield" />
+        </xsl:if>
+      </xsl:template>
+      <xsl:template match="marc:subfield" mode="link">
+        <xsl:if test="@code='u'">
+          <span class="link">
+            <a class="url" href="{.}"/>
+        </span>
+        </xsl:if>
+      </xsl:template>
+      <xsl:template match="marc:subfield">
+        <xsl:if test="@code!='2'">    
+        <xsl:if test="@code!='a'">--</xsl:if>
+        <xsl:value-of select="."/>
+      </xsl:if>
+      </xsl:template>
+    </xsl:stylesheet>