X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=opac%2Fopac-request-article.pl;h=dcf9f214a5e55dc7a181215a562f880c4d975d0a;hb=3d5e974f8fe5a72abc0cb59f6b954a431f9541f9;hp=89110b6d448f921c1d5f6a17e1305765f150271a;hpb=472538b17d99a044994de2baca8f68544c45000b;p=koha-ffzg.git diff --git a/opac/opac-request-article.pl b/opac/opac-request-article.pl old mode 100644 new mode 100755 index 89110b6d44..dcf9f214a5 --- a/opac/opac-request-article.pl +++ b/opac/opac-request-article.pl @@ -21,12 +21,16 @@ use Modern::Perl; use CGI qw ( -utf8 ); -use C4::Auth; -use C4::Output; +use C4::Auth qw( get_template_and_user ); +use C4::Output qw( output_html_with_http_headers ); use Koha::Biblios; +use Koha::Logger; use Koha::Patrons; +use Scalar::Util qw( blessed ); +use Try::Tiny; + my $cgi = CGI->new; my ( $template, $borrowernumber, $cookie ) = get_template_and_user( @@ -57,31 +61,55 @@ if ( $action eq 'create' ) { my $pages = $cgi->param('pages') || undef; my $chapters = $cgi->param('chapters') || undef; my $patron_notes = $cgi->param('patron_notes') || undef; + my $format = $cgi->param('format') || undef; + my $toc_request = $cgi->param('toc_request'); + + + my $success; - my $ar = Koha::ArticleRequest->new( - { - borrowernumber => $borrowernumber, - biblionumber => $biblionumber, - branchcode => $branchcode, - itemnumber => $itemnumber, - title => $title, - author => $author, - volume => $volume, - issue => $issue, - date => $date, - pages => $pages, - chapters => $chapters, - patron_notes => $patron_notes, + try { + my $ar = Koha::ArticleRequest->new( + { + borrowernumber => $borrowernumber, + biblionumber => $biblionumber, + branchcode => $branchcode, + itemnumber => $itemnumber, + title => $title, + author => $author, + volume => $volume, + issue => $issue, + date => $date, + pages => $pages, + chapters => $chapters, + patron_notes => $patron_notes, + format => $format, + toc_request => $toc_request ? 1 : 0, + } + )->request; + $success = 1; + } catch { + if ( blessed $_ and $_->isa('Koha::Exceptions::ArticleRequest::LimitReached') ) { + $template->param( + error_message => 'article_request_limit_reached' + ); } - )->store(); + else { + Koha::Logger->get->debug("Unhandled exception when placing an article request ($_)"); + $template->param( + error_message => 'article_request_unhandled_exception' + ); + } + }; - print $cgi->redirect("/cgi-bin/koha/opac-user.pl#opac-user-article-requests"); - exit; + if ( $success ) { + print $cgi->redirect("/cgi-bin/koha/opac-user.pl#opac-user-article-requests"); + exit; + } # Should we redirect? } -elsif ( !$action && C4::Context->preference('ArticleRequestsHostRedirection') ) { +elsif ( !$action && C4::Context->preference('ArticleRequestsOpacHostRedirection') ) { # Conditions: no items, host item entry (MARC21 773) - my ( $host, $pageinfo ) = $biblio->host_record( { no_items => 1 } ); + my ( $host, $pageinfo ) = $biblio->get_marc_host( { no_items => 1 } ); if ($host) { $template->param( pageinfo => $pageinfo, @@ -94,6 +122,15 @@ elsif ( !$action && C4::Context->preference('ArticleRequestsHostRedirection') ) my $patron = Koha::Patrons->find($borrowernumber); +if(!$patron->can_request_article) { + $template->param( + error_message => 'article_request_limit_reached' + ); +} + +$template->param( article_request_fee => $patron->article_request_fee ) + if $action ne 'create'; + $template->param( biblio => $biblio, patron => $patron,