@@ -, +, @@ - Add 'requested_partners' as an 'embed' enum - Add 'requested_partners' accessor calling optional backend 'get_requested_partners' method. - Store requested partners upon email send, calling optional backend 'set_requested_partners' method. - Add 'requested_parners' embed to overloaded TO_JSON method. - Add 'requested_partners' embed to illrequests API call - Add render function for "Additional status" datatables column - Add display of requested partner email addresses to illlist table - Add display of requested partner email addresses to illview display --- Koha/Illrequest.pm | 27 +++++++++++++++++++++- Koha/REST/V1/Illrequests.pm | 3 +++ api/v1/swagger/paths/illrequests.json | 3 ++- ill/ill-requests.pl | 4 ++-- .../prog/en/modules/ill/ill-requests.tt | 22 ++++++++++++++---- 5 files changed, 50 insertions(+), 9 deletions(-) --- a/Koha/Illrequest.pm +++ a/Koha/Illrequest.pm @@ -1,6 +1,6 @@ package Koha::Illrequest; -# Copyright PTFS Europe 2016 +# Copyright PTFS Europe 2016,2018 # # This file is part of Koha. # @@ -1042,6 +1042,13 @@ EOF my $result = sendmail(%mail); if ( $result ) { $self->status("GENREQ")->store; + $self->_backend_capability( + 'set_requested_partners', + { + request => $self, + to => $to + } + ); return { error => 0, status => '', @@ -1125,6 +1132,23 @@ sub store { return $ret; } +=head3 requested_partners + + my $partners_string = $illRequest->requested_partners; + +Return the string representing the email addresses of the partners to +whom a request has been sent + +=cut + +sub requested_partners { + my ( $self ) = @_; + return $self->_backend_capability( + 'get_requested_partners', + { request => $self } + ); +} + =head3 TO_JSON $json = $illrequest->TO_JSON @@ -1160,6 +1184,7 @@ sub _type { =head1 AUTHOR Alex Sassmannshausen +Andrew Isherwood =cut --- a/Koha/REST/V1/Illrequests.pm +++ a/Koha/REST/V1/Illrequests.pm @@ -160,6 +160,9 @@ sub list { if ($embed{status_alias}) { $to_push->{status_alias} = $req->statusalias; } + if ($embed{requested_partners}) { + $to_push->{requested_partners} = $req->requested_partners; + } push @output, $to_push; } --- a/api/v1/swagger/paths/illrequests.json +++ a/api/v1/swagger/paths/illrequests.json @@ -18,7 +18,8 @@ "patron", "library", "capabilities", - "metadata" + "metadata", + "requested_partners" ] } }, { --- a/ill/ill-requests.pl +++ a/ill/ill-requests.pl @@ -251,10 +251,10 @@ if ( $backends_available ) { } catch { my $error; - if ( $_->isa( 'Koha::Exceptions::Ill::NoTargetEmail' ) ) { + if ( ref($_) eq 'Koha::Exceptions::Ill::NoTargetEmail' ) { $error = 'no_target_email'; } - elsif ( $_->isa( 'Koha::Exceptions::Ill::NoLibraryEmail' ) ) { + elsif ( ref($_) eq 'Koha::Exceptions::Ill::NoLibraryEmail' ) { $error = 'no_library_email'; } else { --- a/koha-tmpl/intranet-tmpl/prog/en/modules/ill/ill-requests.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/ill/ill-requests.tt @@ -353,6 +353,9 @@ [% request.statusalias.lib | html %] [% ELSE %] [% request.capabilities.$req_status.name | html%] + [% IF request.requested_partners.length > 0 %] + ([% request.requested_partners | html %]) + [% END %] [% END %]
@@ -580,7 +583,8 @@ var uniques = {}; tableData.forEach(function(row) { var resolvedName = getStatusName( - oData[0].capabilities[row.status].name + oData[0].capabilities[row.status].name, + row ); uniques[resolvedName] = 1 }); @@ -761,21 +765,29 @@ var status_name = meta.settings.oInit.originalData[0].capabilities[ row.status ].name; - return getStatusName(status_name); + return getStatusName(status_name, row); } else { return ''; } } }; - var getStatusName = function(origName) { + var getStatusName = function(origName, row) { switch( origName ) { case "New request": return _("New request"); case "Requested": return _("Requested"); case "Requested from partners": - return _("Requested from partners"); + var statStr = _("Requested from partners"); + if ( + row.hasOwnProperty('requested_partners') && + row.requested_partners && + row.requested_partners.length > 0 + ) { + statStr += ' (' + row.requested_partners + ')'; + } + return statStr; case "Request reverted": return _("Request reverted"); case "Queued request": @@ -873,7 +885,7 @@ // Get our data from the API and process it prior to passing // it to datatables var ajax = $.ajax( - '/api/v1/illrequests?embed=metadata,patron,capabilities,library,comments,status_alias' + '/api/v1/illrequests?embed=metadata,patron,capabilities,library,comments,status_alias,requested_partners' ).done(function() { var data = JSON.parse(ajax.responseText); // Make a copy, we'll be removing columns next and need --