X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=opac%2Fopac-user.pl;h=5601e85d5c9ad6fcf850dc4eb48e8f65b161bac2;hb=c9ca5edf85a25b9f9b1584a0f490d4176c1d05e4;hp=763e810655d152ac55b4fbffe6064f6ab9270ee3;hpb=4bf76c2d77cb32dd7147b11334eb17aa959955ba;p=koha_gimpoz diff --git a/opac/opac-user.pl b/opac/opac-user.pl index 763e810655..5601e85d5c 100755 --- a/opac/opac-user.pl +++ b/opac/opac-user.pl @@ -1,6 +1,7 @@ #!/usr/bin/perl # This file is part of Koha. +# parts copyright 2010 BibLibre # # 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 @@ -17,6 +18,7 @@ use strict; +#use warnings; FIXME - Bug 2505 use CGI; @@ -33,6 +35,14 @@ use C4::Letters; use C4::Branch; # GetBranches my $query = new CGI; + +BEGIN { + if (C4::Context->preference('BakerTaylorEnabled')) { + require C4::External::BakerTaylor; + import C4::External::BakerTaylor qw(&image_url &link_url); + } +} + my ( $template, $borrowernumber, $cookie ) = get_template_and_user( { template_name => "opac-user.tmpl", @@ -44,27 +54,35 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( } ); +my $OPACDisplayRequestPriority = (C4::Context->preference("OPACDisplayRequestPriority")) ? 1 : 0; my $patronupdate = $query->param('patronupdate'); # get borrower information .... my ( $borr ) = GetMemberDetails( $borrowernumber ); -$borr->{'dateenrolled'} = format_date( $borr->{'dateenrolled'} ); -$borr->{'expiry'} = format_date( $borr->{'expiry'} ); -$borr->{'dateofbirth'} = format_date( $borr->{'dateofbirth'} ); -$borr->{'ethnicity'} = fixEthnicity( $borr->{'ethnicity'} ); +for (qw(dateenrolled dateexpiry dateofbirth)) { + ($borr->{$_}) and $borr->{$_} = format_date($borr->{$_}); +} +$borr->{'ethnicity'} = fixEthnicity( $borr->{'ethnicity'} ); if ( $borr->{'debarred'} || $borr->{'gonenoaddress'} || $borr->{'lost'} ) { $borr->{'flagged'} = 1; } -# $make flagged available everywhere in the template -my $patron_flagged = $borr->{'flagged'}; + if ( $borr->{'amountoutstanding'} > 5 ) { $borr->{'amountoverfive'} = 1; } if ( 5 >= $borr->{'amountoutstanding'} && $borr->{'amountoutstanding'} > 0 ) { $borr->{'amountoverzero'} = 1; } + +if ( $borr->{'amountoutstanding'} > C4::Context->preference( 'OPACFineNoRenewals' ) ) { + $borr->{'flagged'} = 1; + $template->param( + renewal_blocked_fines => sprintf( "%.02f", C4::Context->preference( 'OPACFineNoRenewals' ) ), + ); +} + if ( $borr->{'amountoutstanding'} < 0 ) { $borr->{'amountlessthanzero'} = 1; $borr->{'amountoutstanding'} = -1 * ( $borr->{'amountoutstanding'} ); @@ -77,12 +95,10 @@ $bordat[0] = $borr; $template->param( BORROWER_INFO => \@bordat, borrowernumber => $borrowernumber, - patron_flagged => $patron_flagged, + patron_flagged => $borr->{flagged}, ); #get issued items .... -my ($countissues,$issues) = GetPendingIssues($borrowernumber); -my @issue_list = sort { $b->{'date_due'} cmp $a->{'date_due'} } @$issues; my $count = 0; my $toggle = 0; @@ -90,73 +106,61 @@ my $overdues_count = 0; my @overdues; my @issuedat; my $itemtypes = GetItemTypes(); -foreach my $issue ( @issue_list ) { - if($count%2 eq 0){ $issue->{'toggle'} = 1; } else { $issue->{'toggle'} = 0; } - # check for reserves - my ( $restype, $res ) = CheckReserves( $issue->{'itemnumber'} ); - if ( $restype ) { - $issue->{'reserved'} = 1; - } - - my ( $total , $accts, $numaccts) = GetMemberAccountRecords( $borrowernumber ); - my $charges = 0; - foreach my $ac (@$accts) { - if ( $ac->{'itemnumber'} == $issue->{'itemnumber'} ) { - $charges += $ac->{'amountoutstanding'} - if $ac->{'accounttype'} eq 'F'; - $charges += $ac->{'amountoutstanding'} - if $ac->{'accounttype'} eq 'L'; - } - } - $issue->{'charges'} = $charges; - - # get publictype for icon - - my $publictype = $issue->{'publictype'}; - $issue->{$publictype} = 1; - - # check if item is renewable - my ($status,$renewerror) = CanBookBeRenewed( $borrowernumber, $issue->{'itemnumber'} ); - ($issue->{'renewcount'},$issue->{'renewsallowed'},$issue->{'renewsleft'}) = GetRenewCount($borrowernumber, $issue->{'itemnumber'}); - - $issue->{'status'} = $status; - - if ( $issue->{'overdue'} ) { - push @overdues, $issue; - $overdues_count++; - $issue->{'overdue'} = 1; - } - else { - $issue->{'issued'} = 1; - } - # imageurl: - my $itemtype = $issue->{'itemtype'}; - if ( $itemtype ) { - $issue->{'imageurl'} = getitemtypeimagelocation( 'opac', $itemtypes->{$itemtype}->{'imageurl'} ); - $issue->{'description'} = $itemtypes->{$itemtype}->{'description'}; - } - $issue->{date_due} = format_date($issue->{date_due}); - push @issuedat, $issue; - $count++; - - # XISBN Stuff - my $xisbn=$issue->{'isbn'}; - $xisbn =~ /(\d*[X]*)/; - $issue->{amazonisbn} = $1; # FIXME: so it is OK if the ISBN = 'XXXXX' ? - my ($clean, $amazonisbn); - $amazonisbn = $1; - # these might be overkill, but they are better than the regexp above. - if ( - $amazonisbn =~ /\b(\d{13})\b/ or - $amazonisbn =~ /\b(\d{10})\b/ or - $amazonisbn =~ /\b(\d{9}X)\b/i - ) { - $clean = $1; - $issue->{clean_isbn} = $1; +my ($issues) = GetPendingIssues($borrowernumber); +if ($issues){ + foreach my $issue ( sort sort { $b->{'date_due'} cmp $a->{'date_due'} } @$issues ) { + # check for reserves + my ( $restype, $res ) = CheckReserves( $issue->{'itemnumber'} ); + if ( $restype ) { + $issue->{'reserved'} = 1; + } + + my ( $total , $accts, $numaccts) = GetMemberAccountRecords( $borrowernumber ); + my $charges = 0; + foreach my $ac (@$accts) { + if ( $ac->{'itemnumber'} == $issue->{'itemnumber'} ) { + $charges += $ac->{'amountoutstanding'} + if $ac->{'accounttype'} eq 'F'; + $charges += $ac->{'amountoutstanding'} + if $ac->{'accounttype'} eq 'L'; + } + } + $issue->{'charges'} = $charges; + + # get publictype for icon + + my $publictype = $issue->{'publictype'}; + $issue->{$publictype} = 1; + + # check if item is renewable + my ($status,$renewerror) = CanBookBeRenewed( $borrowernumber, $issue->{'itemnumber'} ); + ($issue->{'renewcount'},$issue->{'renewsallowed'},$issue->{'renewsleft'}) = GetRenewCount($borrowernumber, $issue->{'itemnumber'}); + $issue->{'status'} = $status && C4::Context->preference("OpacRenewalAllowed"); + $issue->{'too_many'} = 1 if $renewerror and $renewerror eq 'too_many'; + $issue->{'on_reserve'} = 1 if $renewerror and $renewerror eq 'on_reserve'; + + if ( $issue->{'overdue'} ) { + push @overdues, $issue; + $overdues_count++; + $issue->{'overdue'} = 1; + } + else { + $issue->{'issued'} = 1; + } + # imageurl: + my $itemtype = $issue->{'itemtype'}; + if ( $itemtype ) { + $issue->{'imageurl'} = getitemtypeimagelocation( 'opac', $itemtypes->{$itemtype}->{'imageurl'} ); + $issue->{'description'} = $itemtypes->{$itemtype}->{'description'}; + } + $issue->{date_due} = format_date($issue->{date_due}); + push @issuedat, $issue; + $count++; + + my $isbn = GetNormalizedISBN($issue->{'isbn'}); + $issue->{normalized_isbn} = $isbn; } - } - $template->param( ISSUES => \@issuedat ); $template->param( issues_count => $count ); @@ -175,18 +179,29 @@ for my $branch_hash (sort keys %$branches ) { selected => $selected }; } -$template->param( branchloop => \@branch_loop, "mylibraryfirst"=>C4::Context->preference("SearchMyLibraryFirst")); +$template->param( branchloop => \@branch_loop ); # now the reserved items.... my @reserves = GetReservesFromBorrowernumber( $borrowernumber ); foreach my $res (@reserves) { $res->{'reservedate'} = format_date( $res->{'reservedate'} ); + + if ( $res->{'expirationdate'} ne '0000-00-00' ) { + $res->{'expirationdate'} = format_date( $res->{'expirationdate'} ) + } else { + $res->{'expirationdate'} = ''; + } + my $publictype = $res->{'publictype'}; $res->{$publictype} = 1; $res->{'waiting'} = 1 if $res->{'found'} eq 'W'; + $res->{'formattedwaitingdate'} = format_date($res->{'waitingdate'}); $res->{'branch'} = $branches->{ $res->{'branchcode'} }->{'branchname'}; my $biblioData = GetBiblioData($res->{'biblionumber'}); $res->{'reserves_title'} = $biblioData->{'title'}; + if ($OPACDisplayRequestPriority) { + $res->{'priority'} = '' if $res->{'priority'} eq '0'; + } } # use Data::Dumper; @@ -194,6 +209,7 @@ foreach my $res (@reserves) { $template->param( RESERVES => \@reserves ); $template->param( reserves_count => $#reserves+1 ); +$template->param( showpriority=>1 ) if $OPACDisplayRequestPriority; my @waiting; my $wcount = 0; @@ -212,9 +228,9 @@ foreach my $res (@reserves) { $res->{'wait'}= 1; $res->{'holdingbranch'}=$item->{'holdingbranch'}; $res->{'biblionumber'}=$item->{'biblionumber'}; - $res->{'barcodenumber'} = $item->{'barcode'}; + $res->{'barcodenumber'} = $item->{'barcode'}; $res->{'wbrcode'} = $res->{'branchcode'}; - $res->{'itemnumber'} = $res->{'itemnumber'}; + $res->{'itemnumber'} = $res->{'itemnumber'}; $res->{'wbrname'} = $branches->{$res->{'branchcode'}}->{'branchname'}; if($res->{'holdingbranch'} eq $res->{'wbrcode'}){ $res->{'atdestination'} = 1; @@ -232,6 +248,10 @@ foreach my $res (@reserves) { push @waiting, $res; $wcount++; } + # can be cancelled + #$res->{'cancelable'} = 1 if ($res->{'wait'} && $res->{'atdestination'} && $res->{'found'} ne "1"); + $res->{'cancelable'} = 1 if ($res->{wait} and not $res->{found}) or (not $res->{wait} and not $res->{intransit}); + } $template->param( WAITING => \@waiting ); @@ -242,19 +262,42 @@ foreach ( @$alerts ) { $_->{ $_->{type} } = 1; $_->{relatedto} = findrelatedto( $_->{type}, $_->{externalid} ); } -if (C4::Context->preference("AmazonContent" ) or - C4::Context->preference("GoogleJackets" ) or - C4::Context->preference("BakerTaylorEnabled") ) { - $template->param(JacketImages=>1); + +if (C4::Context->preference('BakerTaylorEnabled')) { + $template->param( + BakerTaylorEnabled => 1, + BakerTaylorImageURL => &image_url(), + BakerTaylorLinkURL => &link_url(), + BakerTaylorBookstoreURL => C4::Context->preference('BakerTaylorBookstoreURL'), + ); +} + +if (C4::Context->preference("OPACAmazonCoverImages") or + C4::Context->preference("GoogleJackets") or + C4::Context->preference("BakerTaylorEnabled") or + C4::Context->preference("SyndeticsCoverImages")) { + $template->param(JacketImages=>1); +} + +if ( GetMessagesCount( $borrowernumber, 'B' ) ) { + $template->param( bor_messages => 1 ); +} + +if ( $borr->{'opacnote'} ) { + $template->param( + bor_messages => 1, + opacnote => $borr->{'opacnote'}, + ); } $template->param( + bor_messages_loop => GetMessages( $borrowernumber, 'B', 'NONE' ), waiting_count => $wcount, textmessaging => $borr->{textmessaging}, - patronupdate => $patronupdate, - OpacRenewalAllowed => C4::Context->preference("OpacRenewalAllowed"), - userview => 1, - dateformat => C4::Context->preference("dateformat"), + patronupdate => $patronupdate, + OpacRenewalAllowed => C4::Context->preference("OpacRenewalAllowed"), + userview => 1, + dateformat => C4::Context->preference("dateformat"), ); output_html_with_http_headers $query, $cookie, $template->output;