Owen Leonard
efce19392f
This patch updates the patron notices list so that notices are shown in a modal dialog instead of inline in the table. The "Resend" button is shown in the modal window controls. To test, apply the patch and locate a patron in the staff interface with multiple sent notices. - View the patron's "Notices" tab. - In the table of notices, click one of the notice titles. - A modal window should appear with the notice subject as the header and the notice content in the main body of the modal. - If the message has any other status than 'pending' there should be a "Resend" button in the modal footer. Confirm that it submits the form and resends the correct message. - Try viewing multiple notices to confirm that the contents of the modal are correctly updated for each message. Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
182 lines
10 KiB
Text
182 lines
10 KiB
Text
[% USE raw %]
|
|
[% USE Asset %]
|
|
[% USE Koha %]
|
|
[% USE AuthorisedValues %]
|
|
[% USE Branches %]
|
|
[% USE KohaDates %]
|
|
[% SET footerjs = 1 %]
|
|
[% INCLUDE 'doc-head-open.inc' %]
|
|
<title>Sent notices for [% INCLUDE 'patron-title.inc' no_html = 1 %]</title>
|
|
[% INCLUDE 'doc-head-close.inc' %]
|
|
<style>
|
|
.notice { display: none; }
|
|
</style>
|
|
</head>
|
|
|
|
<body id="pat_notices" class="pat">
|
|
[% INCLUDE 'header.inc' %]
|
|
[% INCLUDE 'patron-search.inc' %]
|
|
|
|
<nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumb">
|
|
<ol>
|
|
<li>
|
|
<a href="/cgi-bin/koha/mainpage.pl">Home</a>
|
|
</li>
|
|
<li>
|
|
<a href="/cgi-bin/koha/members/members-home.pl">Patrons</a>
|
|
</li>
|
|
<li>
|
|
<a href="#" aria-current="page">
|
|
Sent notices for [% INCLUDE 'patron-title.inc' %]
|
|
</a>
|
|
</li>
|
|
</ol>
|
|
</nav>
|
|
|
|
<div class="main container-fluid">
|
|
<div class="row">
|
|
<div class="col-sm-10 col-sm-push-2">
|
|
<main>
|
|
|
|
[% INCLUDE 'members-toolbar.inc' %]
|
|
<h1>Sent notices for [% INCLUDE 'patron-title.inc' %]</h1>
|
|
|
|
[% IF ( QUEUED_MESSAGES ) %]
|
|
<table id="noticestable">
|
|
<thead>
|
|
<tr>
|
|
<th>Notice</th>
|
|
<th>Type</th>
|
|
<th>Status</th>
|
|
<th>Updated on</th>
|
|
<th>Time created</th>
|
|
<th>Delivery note</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
[% FOREACH QUEUED_MESSAGE IN QUEUED_MESSAGES %]
|
|
<tr>
|
|
<td>
|
|
<a class="notice-title" data-noticeid="[% QUEUED_MESSAGE.message_id | html %]" href="/cgi-bin/koha/members/notices.pl?borrowernumber=[% borrowernumber | uri %]&noticeid=[% QUEUED_MESSAGE.message_id | uri %]">[% QUEUED_MESSAGE.subject | html %]</a>
|
|
<iframe class="notice" id="notice[% QUEUED_MESSAGE.message_id | html %]" srcdoc="[% QUEUED_MESSAGE.content | html | html_line_break %]"></iframe>
|
|
</td>
|
|
<td>
|
|
[% IF ( QUEUED_MESSAGE.message_transport_type == 'email' ) %]email
|
|
[% ELSIF ( QUEUED_MESSAGE.message_transport_type == 'print' ) %]print
|
|
[% ELSIF ( QUEUED_MESSAGE.message_transport_type == 'feed' ) %]feed
|
|
[% ELSIF ( QUEUED_MESSAGE.message_transport_type == 'sms' ) %]sms
|
|
[% ELSE %][% QUEUED_MESSAGE.message_transport_type | html %][% END %]
|
|
</td>
|
|
<td>
|
|
[% IF ( QUEUED_MESSAGE.status == 'sent' ) %]sent
|
|
[% ELSIF ( QUEUED_MESSAGE.status == 'pending' ) %]pending
|
|
[% ELSIF ( QUEUED_MESSAGE.status == 'failed' ) %]failed
|
|
[% ELSIF ( QUEUED_MESSAGE.status == 'deleted' ) %]deleted
|
|
[% ELSE %][% QUEUED_MESSAGE.status | html %][% END %]
|
|
[% IF ( QUEUED_MESSAGE.status != 'pending' ) %]
|
|
<div class="notice">
|
|
<form id="resend_notice[% QUEUED_MESSAGE.message_id | html %]" action="/cgi-bin/koha/members/notices.pl?borrowernumber=[% borrowernumber | html %]" method="POST">
|
|
<input type="hidden" name="op" value="resend_notice" />
|
|
<input type="hidden" name="borrowernumber" value="[% borrowernumber | html %]" />
|
|
<input type="hidden" name="message_id" value="[% QUEUED_MESSAGE.message_id | html %]" />
|
|
</form>
|
|
</div>
|
|
[% END %]
|
|
</td>
|
|
<td data-order="[% QUEUED_MESSAGE.updated_on | html %]">[% QUEUED_MESSAGE.updated_on | $KohaDates with_hours => 1 %]</td>
|
|
<td data-order="[% QUEUED_MESSAGE.time_queued | html %]">[% QUEUED_MESSAGE.time_queued | $KohaDates with_hours => 1 %]</td>
|
|
<td>
|
|
[% IF ( QUEUED_MESSAGE.failure_code ) %]
|
|
[% IF ( QUEUED_MESSAGE.failure_code == "INVALID_BORNUMBER" ) %]Invalid borrowernumber [% borrowernumber | html %]
|
|
[% ELSIF ( QUEUED_MESSAGE.failure_code == 'NO_EMAIL' ) %]Unable to find an email address for this borrower
|
|
[% ELSIF (matches = QUEUED_MESSAGE.failure_code.match('INVALID_EMAIL:(\w+)') ) %]Invalid [% matches.0 | html %] email address found [% borrowernumber | html %]
|
|
[% ELSIF ( QUEUED_MESSAGE.failure_code == 'NO_FROM' ) %]Missing from email address
|
|
[% ELSIF ( QUEUED_MESSAGE.failure_code == 'MISSING_SMS' ) %]Missing SMS number
|
|
[% ELSIF ( QUEUED_MESSAGE.failure_code == 'DUPLICATE_MESSAGE' ) %]Message is duplicate
|
|
[% ELSIF ( QUEUED_MESSAGE.failure_code == 'NO_NOTES' ) %]No notes from SMS driver
|
|
[% ELSIF ( QUEUED_MESSAGE.failure_code == 'SENDMAIL' ) %]Unhandled email failure, check the logs for further details
|
|
[% ELSIF ( QUEUED_MESSAGE.failure_code == "UNKNOWN_ERROR" ) %]Unknown error
|
|
[% ELSE %]Error occurred while sending email.
|
|
[% END %]
|
|
[% END %]
|
|
</td>
|
|
</tr>
|
|
[% END %]
|
|
</tbody>
|
|
</table>
|
|
[% ELSE %]
|
|
<div class="dialog message">There is no record of any messages that have been sent to this patron.</div>
|
|
[% END %]
|
|
|
|
</main>
|
|
</div> <!-- /.col-sm-10.col-sm-push-2 -->
|
|
|
|
<div class="col-sm-2 col-sm-pull-10">
|
|
<aside>
|
|
[% INCLUDE 'circ-menu.inc' %]
|
|
</aside>
|
|
</div> <!-- /.col-sm-2.col-sm-pull-10 -->
|
|
</div> <!-- /.row -->
|
|
|
|
<!-- Modal -->
|
|
<div class="modal" id="noticeModal" tabindex="-1" aria-labelledby="noticeModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="closebtn" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
<h5 class="modal-title" id="noticeModalLabel">Notice</h5>
|
|
</div>
|
|
<div class="modal-body">
|
|
...
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" id="resend-notice" class="btn btn-default" style="display:none"><i class="fa fa-refresh" aria-hidden="true"></i> Resend</button>
|
|
<button type="button" class="btn btn-default deny cancel" data-dismiss="modal"><i class="fa fa-remove"></i> Close</button>
|
|
</div>
|
|
</div> <!-- /.modal-content -->
|
|
</div> <!-- /.modal-dialog -->
|
|
</div> <!-- /.modal -->
|
|
|
|
[% MACRO jsinclude BLOCK %]
|
|
[% INCLUDE 'datatables.inc' %]
|
|
<script>
|
|
$(document).ready(function() {
|
|
$("#noticestable").dataTable($.extend(true, {}, dataTablesDefaults, {
|
|
"aaSorting": [[ 3, "desc" ]],
|
|
"sPaginationType": "full"
|
|
}));
|
|
|
|
$("#noticestable").on("click", ".notice-title", function(e){
|
|
e.preventDefault();
|
|
var title = $(this).text();
|
|
var noticeid = $(this).data("noticeid");
|
|
var body = $("#notice" + noticeid ).attr("srcdoc");
|
|
if( $("#resend_notice" + noticeid ).length ){
|
|
$("#resend-notice").show();
|
|
}
|
|
$("#resend-notice").data("noticeid", noticeid );
|
|
$("#noticeModalLabel").text( title );
|
|
$("#noticeModal .modal-body").html( body );
|
|
$("#noticeModal").modal("show");
|
|
});
|
|
|
|
$("#resend-notice").on("click", function(e){
|
|
e.preventDefault();
|
|
var noticeid = $(this).data("noticeid");
|
|
$("#resend_notice" + noticeid ).submit();
|
|
});
|
|
|
|
$("#noticeModal").on("hide.bs.modal", function(){
|
|
$("#resend-notice").removeData("noticeid").hide();
|
|
$("#noticeModalLabel").text("");
|
|
$("#noticeModal .modal-body").html("");
|
|
});
|
|
});
|
|
</script>
|
|
[% INCLUDE 'str/members-menu.inc' %]
|
|
[% Asset.js("js/members-menu.js") | $raw %]
|
|
[% END %]
|
|
|
|
[% INCLUDE 'intranet-bottom.inc' %]
|