use Modern::Perl;
+use JSON qw( encode_json );
+
use CGI qw ( -utf8 );
-use C4::Auth;
+use C4::Auth qw( get_template_and_user );
use C4::Koha;
-use C4::Output;
+use C4::Output qw( output_html_with_http_headers );
+use Koha::Illrequest::Config;
use Koha::Illrequests;
use Koha::Libraries;
use Koha::Patrons;
+use Koha::Illrequest::Availability;
-my $query = new CGI;
+my $query = CGI->new;
# Grab all passed data
# 'our' since Plack changes the scoping
template_name => "opac-illrequests.tt",
query => $query,
type => "opac",
- authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ),
});
+# Are we able to actually work?
+my $reduced = C4::Context->preference('ILLOpacbackends');
+my $backends = Koha::Illrequest::Config->new->available_backends($reduced);
+my $backends_available = ( scalar @{$backends} > 0 );
+$template->param( backends_available => $backends_available );
+
my $op = $params->{'method'} || 'list';
if ( $op eq 'list' ) {
my $req = Koha::Illrequest->new;
$template->param(
requests => $requests,
- backends => $req->available_backends
+ backends => $backends
);
} elsif ( $op eq 'view') {
illrequest_id => $params->{illrequest_id}
});
$request->notesopac($params->{notesopac})->store;
+ # Send a notice to staff alerting them of the update
+ $request->send_staff_notice('ILL_REQUEST_MODIFIED');
print $query->redirect(
'/cgi-bin/koha/opac-illrequests.pl?method=view&illrequest_id=' .
$params->{illrequest_id} .
'&message=1'
);
+ exit;
} elsif ( $op eq 'cancreq') {
my $request = Koha::Illrequests->find({
borrowernumber => $loggedinuser,
$params->{illrequest_id} .
'&message=1'
);
-
+ exit;
} elsif ( $op eq 'create' ) {
if (!$params->{backend}) {
my $req = Koha::Illrequest->new;
} else {
my $request = Koha::Illrequest->new
->load_backend($params->{backend});
+
+ # Does this backend enable us to insert an availability stage and should
+ # we? If not, proceed as normal.
+ if (
+ C4::Context->preference("ILLCheckAvailability") &&
+ $request->_backend_capability(
+ 'should_display_availability',
+ $params
+ ) &&
+ # If the user has elected to continue with the request despite
+ # having viewed availability info, this flag will be set
+ !$params->{checked_availability}
+ ) {
+ # Establish which of the installed availability providers
+ # can service our metadata, if so, jump in
+ my $availability = Koha::Illrequest::Availability->new($params);
+ my $services = $availability->get_services({
+ ui_context => 'opac'
+ });
+ if (scalar @{$services} > 0) {
+ # Modify our method so we use the correct part of the
+ # template
+ $op = 'availability';
+ # Prepare the metadata we're sending them
+ my $metadata = $availability->prep_metadata($params);
+ $template->param(
+ metadata => $metadata,
+ services_json => encode_json($services),
+ services => $services,
+ illrequestsview => 1,
+ message => $params->{message},
+ method => $op,
+ whole => $params
+ );
+ output_html_with_http_headers $query, $cookie,
+ $template->output, undef, { force_no_caching => 1 };
+ exit;
+ }
+ }
+
$params->{cardnumber} = Koha::Patrons->find({
borrowernumber => $loggedinuser
})->cardnumber;
+ $params->{opac} = 1;
my $backend_result = $request->backend_create($params);
- $template->param(
- media => [ "Book", "Article", "Journal" ],
- branches => Koha::Libraries->search->unblessed,
- whole => $backend_result,
- request => $request
- );
- if ($backend_result->{stage} eq 'commit') {
- print $query->redirect('/cgi-bin/koha/opac-illrequests.pl?message=2');
+ if ($backend_result->{stage} eq 'copyrightclearance') {
+ $template->param(
+ stage => $backend_result->{stage},
+ whole => $backend_result
+ );
+ } else {
+ $template->param(
+ types => [ "Book", "Article", "Journal" ],
+ branches => Koha::Libraries->search->unblessed,
+ whole => $backend_result,
+ request => $request
+ );
+ if ($backend_result->{stage} eq 'commit') {
+ print $query->redirect('/cgi-bin/koha/opac-illrequests.pl?message=2');
+ exit;
+ }
}
- }
-
+ }
}
$template->param(
message => $params->{message},
illrequestsview => 1,
- method => $op
+ method => $op
);
-output_html_with_http_headers $query, $cookie, $template->output;
+output_html_with_http_headers $query, $cookie, $template->output, undef, { force_no_caching => 1 };