Bug 11879: Add a new field to patron record: main contact method
[koha-ffzg.git] / opac / opac-illrequests.pl
index 18453a4..5881ded 100755 (executable)
@@ -19,6 +19,8 @@
 
 use Modern::Perl;
 
+use JSON qw( encode_json );
+
 use CGI qw ( -utf8 );
 use C4::Auth;
 use C4::Koha;
@@ -28,8 +30,9 @@ 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
@@ -46,7 +49,6 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user({
     template_name   => "opac-illrequests.tt",
     query           => $query,
     type            => "opac",
-    authnotrequired => 0,
 });
 
 # Are we able to actually work?
@@ -83,6 +85,8 @@ if ( $op eq 'list' ) {
         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} .
@@ -110,6 +114,46 @@ if ( $op eq 'list' ) {
     } 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;
@@ -142,4 +186,4 @@ $template->param(
     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 };