From c1278cbbcb6ed3ca60133aa5e020ddfc9bf98935 Mon Sep 17 00:00:00 2001 From: tipaul Date: Fri, 12 Nov 2004 16:27:33 +0000 Subject: [PATCH] fixes for printing a biblio --- opac/opac-ISBDdetail.pl | 70 ++++++++++++++++++++------ opac/opac-detailprint.pl | 105 +++++++++++++++++++++++++++++++++++++++ opac/opac-shelves.pl | 6 ++- 3 files changed, 164 insertions(+), 17 deletions(-) create mode 100755 opac/opac-detailprint.pl diff --git a/opac/opac-ISBDdetail.pl b/opac/opac-ISBDdetail.pl index a417ea8611..14ed5f4d00 100755 --- a/opac/opac-ISBDdetail.pl +++ b/opac/opac-ISBDdetail.pl @@ -80,23 +80,63 @@ my ($template, $loggedinuser, $cookie) }); my $ISBD = C4::Context->preference('ISBD'); -my @fields = $record->fields(); -foreach my $field (@fields) { - my $tag = $field->tag(); - if ($tag<10) { - } else { - my @subf = $field->subfields; - for my $i (0..$#subf) { - my $subfieldcode = $subf[$i][0]; - my $subfieldvalue = $subf[$i][1]; - my $tagsubf = $tag.$subfieldcode; - $ISBD =~ s/\[(.?.?.?)$tagsubf(.*?)]/$1$subfieldvalue\[$1$tagsubf$2]$2$3/g; +# my @blocs = split /\@/,$ISBD; +# my @fields = $record->fields(); +my $res; +# foreach my $bloc (@blocs) { +# $bloc =~ s/\n//g; + my $bloc = $ISBD; + my $blocres; + foreach my $isbdfield (split /#/,$bloc) { + warn "ISBDFIELD : $isbdfield"; +# $isbdfield= /(.?.?.?)/; + $isbdfield =~ /(\d\d\d)\|(.*)\|(.*)\|(.*)/; + my $fieldvalue=$1; + my $textbefore=$2; + my $analysestring=$3; + my $textafter=$4; +# warn "==> $1 / $2 / $3 / $4"; +# my $fieldvalue=substr($isbdfield,0,3); + if ($fieldvalue>0) { + # warn "ERROR IN ISBD DEFINITION at : $isbdfield" unless $fieldvalue; +# warn "FV : $fieldvalue"; + my $hasputtextbefore=0; + foreach my $field ($record->field($fieldvalue)) { + my $calculated = $analysestring; + my $tag = $field->tag(); + if ($tag<10) { + } else { + my @subf = $field->subfields; + for my $i (0..$#subf) { + my $subfieldcode = $subf[$i][0]; + my $subfieldvalue = $subf[$i][1]; + my $tagsubf = $tag.$subfieldcode; + $calculated =~ s/\{(.?.?.?)$tagsubf(.*?)\}/$1$subfieldvalue\{$1$tagsubf$2\}$2/g; + } + # field builded, store the result + if ($calculated && !$hasputtextbefore) { # put textbefore if not done + $blocres .=$textbefore; + $hasputtextbefore=1 + } + # remove punctuation at start + $calculated =~ s/^( |;|:|\.|-)*//g; + $blocres.=$calculated; + } + } + $blocres .=$textafter if $hasputtextbefore; + } else { + $blocres.=$isbdfield; } } -} -$ISBD =~ s/\[(.*?)]//g; -$ISBD =~ s/\n/
/g; -$template->param(ISBD => $ISBD); + $res.=$blocres; +# } +$res =~ s/\{(.*?)\}//g; +$res =~ s/\\n/\n/g; +$res =~ s/\n//g; +# remove empty () +$res =~ s/\(\)//g; +$template->param(ISBD => $res, + biblionumber => $biblionumber); output_html_with_http_headers $query, $cookie, $template->output; diff --git a/opac/opac-detailprint.pl b/opac/opac-detailprint.pl new file mode 100755 index 0000000000..5d41eab263 --- /dev/null +++ b/opac/opac-detailprint.pl @@ -0,0 +1,105 @@ +#!/usr/bin/perl +# NOTE: Use standard 8-space tabs for this file (indents are 4 spaces) + +# Copyright 2000-2002 Katipo Communications +# +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA + +use HTML::Template; +use strict; +require Exporter; +use C4::Context; +use C4::Output; # contains gettemplate +use CGI; +use C4::Search; +use C4::Auth; +use C4::Interface::CGI::Output; +use C4::Date; + +my $query=new CGI; +my $type=$query->param('type'); +($type) || ($type='intra'); + +my $biblionumber=$query->param('bib'); + +# change back when ive fixed request.pl +my @items = ItemInfo(undef, $biblionumber, $type); +my $norequests = 1; +foreach my $itm (@items) { + $norequests = 0 unless $itm->{'notforloan'}; +} + + + +my $dat=bibdata($biblionumber); +my ($authorcount, $addauthor)= &addauthor($biblionumber); +my ($webbiblioitemcount, @webbiblioitems) = &getwebbiblioitems($biblionumber); +my ($websitecount, @websites) = &getwebsites($biblionumber); + +$dat->{'count'}=@items; +$dat->{'norequests'} = $norequests; + +$dat->{'additional'}=$addauthor->[0]->{'author'}; +for (my $i = 1; $i < $authorcount; $i++) { + $dat->{'additional'} .= "|" . $addauthor->[$i]->{'author'}; +} # for + +my @results; + +$results[0]=$dat; + +my $resultsarray=\@results; +my $itemsarray=\@items; +my $webarray=\@webbiblioitems; +my $sitearray=\@websites; + +my $startfrom=$query->param('startfrom'); +($startfrom) || ($startfrom=0); + +my ($template, $loggedinuser, $cookie) = get_template_and_user({ + template_name => ('opac-detailprint.tmpl'), + query => $query, + type => "opac", + authnotrequired => ($type eq 'opac'), + flagsrequired => {catalogue => 1}, + }); + +my $count=1; + +# now to get the items into a hash we can use and whack that thru + + +my $nextstartfrom=($startfrom+20<$count-20) ? ($startfrom+20) : ($count-20); +my $prevstartfrom=($startfrom-20>0) ? ($startfrom-20) : (0); +$template->param(startfrom => $startfrom+1, + endat => $startfrom+20, + numrecords => $count, + nextstartfrom => $nextstartfrom, + prevstartfrom => $prevstartfrom, + BIBLIO_RESULTS => $resultsarray, + ITEM_RESULTS => $itemsarray, + WEB_RESULTS => $webarray, + SITE_RESULTS => $sitearray, + loggedinuser => $loggedinuser, + biblionumber => $biblionumber, + ); + +output_html_with_http_headers $query, $cookie, $template->output; + + +# Local Variables: +# tab-width: 8 +# End: diff --git a/opac/opac-shelves.pl b/opac/opac-shelves.pl index b36d819f7a..2775eb2ac3 100755 --- a/opac/opac-shelves.pl +++ b/opac/opac-shelves.pl @@ -37,8 +37,7 @@ my ($template, $loggedinuser, $cookie) = get_template_and_user({template_name => "opac-shelves.tmpl", query => $query, type => "opac", - authnotrequired => 0, - flagsrequired => {catalogue => 1}, + authnotrequired => 1, }); if ($query->param('modifyshelfcontents')) { @@ -152,6 +151,9 @@ sub viewshelf { # # $Log$ +# Revision 1.2 2004/11/12 16:27:33 tipaul +# fixes for printing a biblio +# # Revision 1.1 2004/03/15 15:02:19 tipaul # adding virtual shelves to opac # -- 2.39.5