X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=catalogue%2FISBDdetail.pl;h=58a8d901c5f4d557014b547fe7ef32142250e3e9;hb=88b7cc2552cfc26868648d29247023bd818b17b9;hp=250fda6c9eca3f9e07e56e12890d603a031426ef;hpb=4bf76c2d77cb32dd7147b11334eb17aa959955ba;p=koha_fer diff --git a/catalogue/ISBDdetail.pl b/catalogue/ISBDdetail.pl index 250fda6c9e..58a8d901c5 100755 --- a/catalogue/ISBDdetail.pl +++ b/catalogue/ISBDdetail.pl @@ -13,9 +13,9 @@ # 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 +# You should have received a copy of the GNU General Public License along +# with Koha; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. =head1 NAME @@ -23,6 +23,7 @@ ISBDdetail.pl : script to show a biblio in ISBD format =head1 SYNOPSIS +=cut =head1 DESCRIPTION @@ -30,11 +31,10 @@ This script needs a biblionumber as parameter =head1 FUNCTIONS -=over 2 - =cut use strict; +#use warnings; FIXME - Bug 2505 use C4::Auth; use C4::Context; @@ -43,9 +43,10 @@ use CGI; use C4::Koha; use C4::Biblio; use C4::Items; +use C4::Members; # to use GetMember use C4::Branch; # GetBranchDetail use C4::Serials; # CountSubscriptionFromBiblionumber - +use C4::Search; # enabled_staff_search_views #---- Internal function @@ -54,10 +55,6 @@ my $query = new CGI; my $dbh = C4::Context->dbh; my $biblionumber = $query->param('biblionumber'); -my $itemtype = &GetFrameworkCode($biblionumber); -my $tagslib = &GetMarcStructure( 1, $itemtype ); - -my $record = GetMarcBiblio($biblionumber); # open template my ( $template, $loggedinuser, $cookie ) = get_template_and_user( @@ -70,117 +67,26 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); -my $ISBD = C4::Context->preference('ISBD'); - -# my @blocs = split /\@/,$ISBD; -# my @fields = $record->fields(); -my $res; - -# foreach my $bloc (@blocs) { -# $bloc =~ s/\n//g; -my $bloc = $ISBD; -my $blocres; - -my ($holdingbrtagf,$holdingbrtagsubf) = &GetMarcFromKohaField("items.holdingbranch",$itemtype); -# @big_array = sort {$a->{$holdingbrtagsubf} cmp $b->{$holdingbrtagsubf}} @big_array; - -foreach my $isbdfield ( split /#/, $bloc ) { - - $isbdfield =~ /(\d\d\d)([^\|])?\|(.*)\|(.*)\|(.*)/; - my $fieldvalue = $1; - my $subfvalue = $2; - my $textbefore = $3; - my $analysestring = $4; - my $textafter = $5; - - # warn "==> $1 / $2 / $3 / $4"; - # my $fieldvalue=substr($isbdfield,0,3); - if ( $fieldvalue > 0 ) { - my $hasputtextbefore = 0; - my @fieldslist = $record->field($fieldvalue); - @fieldslist = sort {$a->subfield($holdingbrtagsubf) cmp $b->subfield($holdingbrtagsubf)} @fieldslist if ($fieldvalue eq $holdingbrtagf); - - # warn "ERROR IN ISBD DEFINITION at : $isbdfield" unless $fieldvalue; - # warn "FV : $fieldvalue"; - if ($subfvalue ne ""){ - foreach my $field ( @fieldslist ) { - foreach my $subfield ($field->subfield($subfvalue)){ - warn $fieldvalue."$subfvalue"; - my $calculated = $analysestring; - my $tag = $field->tag(); - if ( $tag < 10 ) { - } - else { - my $subfieldvalue = - GetAuthorisedValueDesc( $tag, $subfvalue, - $subfield, '', $tagslib ); - my $tagsubf = $tag . $subfvalue; - $calculated =~ - s/\{(.?.?.?.?)$tagsubf(.*?)\}/$1$subfieldvalue$2\{$1$tagsubf$2\}/g; -# $calculated =~s#/cgi-bin/koha/[^/]+/([^.]*.pl\?.*)$#opac-$1#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 { - foreach my $field ( @fieldslist ) { - 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 = - GetAuthorisedValueDesc( $tag, $subf[$i][0], - $subf[$i][1], '', $tagslib ); - my $tagsubf = $tag . $subfieldcode; - $calculated =~ - s/\{(.?.?.?.?)$tagsubf(.*?)\}/$1$subfieldvalue$2\{$1$tagsubf$2\}/g; -# $calculated =~s#/cgi-bin/koha/[^/]+/([^.]*.pl\?.*)$#opac-$1#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; - } +my $res = GetISBDView($biblionumber, "intranet"); +if ( not defined $res ) { + # biblionumber invalid -> report and exit + $template->param( unknownbiblionumber => 1, + biblionumber => $biblionumber + ); + output_html_with_http_headers $query, $cookie, $template->output; + exit; } -$res .= $blocres; -# } -$res =~ s/\{(.*?)\}//g; -$res =~ s/\\n/\n/g; -$res =~ s/\n//g; +if($query->cookie("holdfor")){ + my $holdfor_patron = GetMember('borrowernumber' => $query->cookie("holdfor")); + $template->param( + holdfor => $query->cookie("holdfor"), + holdfor_surname => $holdfor_patron->{'surname'}, + holdfor_firstname => $holdfor_patron->{'firstname'}, + holdfor_cardnumber => $holdfor_patron->{'cardnumber'}, + ); +} -# remove empty () -$res =~ s/\(\)//g; # count of item linked with biblio my $itemcount = GetItemsCount($biblionumber); $template->param( count => $itemcount); @@ -198,7 +104,9 @@ if ($subscriptionsnumber) { $template->param ( ISBD => $res, biblionumber => $biblionumber, - isbdview => 1, + isbdview => 1, + z3950_search_params => C4::Search::z3950_search_args(GetBiblioData($biblionumber)), + C4::Search::enabled_staff_search_views ); output_html_with_http_headers $query, $cookie, $template->output;