Bug 13151 - staff marc preview not wrapping

The MARC preview available on the staff client detail page doesn't wrap
long lines of text because it uses a huge block of whitespace-formatted
text in a <pre> tag. The OPAC doesn't have this problem because the MARC
preview is formated in a table.

This patch copies the OPAC's "plainMARC.xsl" file for use in the staff
client. The preview modal has been converted to use Bootstrap following
the method used in Bug 12755

To test, apply the patch and clear your browser cache. View the
detail page for a bibliographic record in the staff client. Click the
link to show the MARC preview. Confirm that the modal looks correct,
works correctly, and adapts gracefully to different browser widths.

Confirm that the MARC preview and Card links still work from Z39.50
searches.

Note: This patch assumes that UNIMARC records display correctly using
xslt/plainMARC.xsl. Please let me know if that is wrong.

Signed-off-by: Frederic Demians <f.demians@tamil.fr>

I confirm it works: nice modal dialog box; display aligned on opac display;
works also with Unimarc biblios.

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
This commit is contained in:
Owen Leonard 2014-11-13 12:49:42 -05:00 committed by Tomas Cohen Arazi
parent b2649cbcba
commit 142e6098a9
4 changed files with 96 additions and 4 deletions

View File

@ -54,10 +54,16 @@ if(!ref $record) {
exit;
}
if($view eq 'card') {
if($view eq 'card' || $view eq 'html') {
my $xml = $importid ? $record->as_xml(): GetXmlBiblio($biblionumber);
my $xsl = C4::Context->preference('marcflavour') eq 'UNIMARC'
my $xsl;
if ( $view eq 'card' ){
$xsl = C4::Context->preference('marcflavour') eq 'UNIMARC'
? 'UNIMARC_compact.xsl' : 'compact.xsl';
}
else {
$xsl = 'plainMARC.xsl';
}
my $htdocs = C4::Context->config('intrahtdocs');
my ($theme, $lang) = C4::Templates::themelanguage($htdocs, $xsl, 'intranet', $input);
$xsl = "$htdocs/$theme/$lang/xslt/$xsl";

View File

@ -1724,6 +1724,13 @@ span.permissiondesc {
color: black;
}
#marcPreview table { border: 0; margin: .7em 0 0 0; font-family: monospace; font-size: 95%; }
#marcPreview th { background-color : #FFF; border: 0; white-space: nowrap; text-align:left; vertical-align: top; padding: 2px; }
#marcPreview td { border: 0; padding : 2px; vertical-align: top; }
#marcPreview tbody tr:nth-child(2n+1) td { background-color: #FFF; }
#marcPreview { width : 80%; margin-left : -40%; }
@media (max-width: 767px) { #marcPreview { margin: 0; width : auto; } }
#cartDetails {
background-color : #FFF;
border: 1px solid #739acf;

View File

@ -175,6 +175,15 @@ function verify_images() {
[% IF ( LocalCoverImages && ! localimages.0 ) %]
showNoImageMessage();
[% END %]
$("body").on("click",".previewMARC", function(e){
e.preventDefault();
var page = $(this).attr("href");
$("#marcPreview .modal-body").load(page + " table");
$('#marcPreview').modal({show:true});
});
$("#marcPreview").on("hidden", function(){
$("#marcPreview .modal-body").html("<div id=\"loading\"><img src=\"[% interface %]/[% theme %]/img/loading-small.gif\" alt=\"\" /> "+_("Loading")+"</div>");
});
});
[% IF ( AmazonCoverImages ) %]$(window).load(function() {
@ -363,7 +372,7 @@ function verify_images() {
[% END %]
</span>
[% END %]
<span id="catalogue_detail_marc_preview" class="results_summary"><span class="label">MARC Preview:</span> <a href="/cgi-bin/koha/catalogue/showmarc.pl?id=[% biblionumber %]" title="MARC" rel="gb_page_center[600,500]">Show</a></span>
<span id="catalogue_detail_marc_preview" class="results_summary"><span class="label">MARC Preview:</span> <a href="/cgi-bin/koha/catalogue/showmarc.pl?id=[% biblionumber %]&amp;viewas=html" title="MARC" class="previewMARC">Show</a></span>
[% IF ( holdcount ) %]<span class="results_summary"><span class="label">Holds:</span> <span class="holdcount"><a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblionumber %]">[% holdcount %]</a></span></span>[% ELSE %][% END %]
[% IF ( AmazonCoverImages ) %]</div><div class="yui-u" id="bookcoverimg">
@ -1009,7 +1018,18 @@ function verify_images() {
</form>
</div>
<div id="marcPreview" class="modal hide" tabindex="-1" role="dialog" aria-labelledby="marcPreviewLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="marcPreviewLabel">MARC preview</h3>
</div>
<div class="modal-body">
<div id="loading"> <img src="[% interface %]/[% theme %]/img/loading-small.gif" alt="" /> Loading </div>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
<xsl:stylesheet version="1.0" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:template match="/">
<html>
<head><title>MARC View</title></head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="marc:record">
<table>
<tr>
<th style="white-space:nowrap">
000
</th>
<td colspan="2"></td>
<td>
<xsl:value-of select="marc:leader"/>
</td>
</tr>
<xsl:apply-templates select="marc:datafield|marc:controlfield"/>
</table>
</xsl:template>
<xsl:template match="marc:controlfield">
<tr>
<th style="white-space:nowrap">
<xsl:value-of select="@tag"/>
</th>
<td colspan="2"></td>
<td>
<xsl:value-of select="."/>
</td>
</tr>
</xsl:template>
<xsl:template match="marc:datafield">
<tr>
<th style="white-space:nowrap">
<xsl:value-of select="@tag"/>
</th>
<td><xsl:value-of select="@ind1"/></td>
<td><xsl:value-of select="@ind2"/></td>
<td><xsl:apply-templates select="marc:subfield"/></td>
</tr>
</xsl:template>
<xsl:template match="marc:subfield">
<strong>_<xsl:value-of select="@code"/></strong> <xsl:value-of select="."/>
<xsl:choose>
<xsl:when test="position()=last()"><xsl:text> </xsl:text></xsl:when><xsl:otherwise><br /></xsl:otherwise></xsl:choose>
</xsl:template>
</xsl:stylesheet>