Koha/koha-tmpl/intranet-tmpl/prog/en/modules/circ/renew.tt
Owen Leonard f892ae8bf1 Bug 28376: Replace jQueryUI date/timepicker with Flatpickr
This patch is a proof of concept demonstrating how jQueryUI date & time
pickers could be replaced using the Flatpickr library
(https://flatpickr.js.org/).

NEW: I've modified the default configuration of Flatpickr instances so
that a "Clear date" link is automatically appended. This eliminates the
need to add a button to the markup and event handling for each case.

NEW: Date/time formatting should be corrected in this revised patch.

The patch modifies three pages as test cases:
 - Circulation -> Renew (with SpecifyDueDates enabled), to demonstrate
   date and time selection.
   - NEW: You can also test the datepicker shown when you renew an
     on-hold item. This demonstrates a configuration which requires that
     the selection be after today.
 - Administration -> Patron categories -> New category, to demonstrate a
   calendar-only date picker enforcing a date after today.
 - NEW: Reports -> Patrons. The "Date of birth" fields are linked so
   that the second cannot be before the first.

I've made some customizations to the default Flatpickr library's CSS and
incorporated it into staff-global.scss, so you must rebuild the staff
client SCSS
(https://wiki.koha-community.org/wiki/Working_with_SCSS_in_the_OPAC_and_staff_client).

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2021-08-30 18:08:04 +02:00

272 lines
15 KiB
Text

[% USE raw %]
[% USE Asset %]
[% USE Koha %]
[% USE KohaDates %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title>Renew [% title | html %] &rsaquo; Circulation &rsaquo; Koha</title>
[% INCLUDE 'doc-head-close.inc' %]
</head>
<body id="circ_renew" class="circ">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'circ-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/circ/circulation-home.pl">Circulation</a>
</li>
<li>
<a href="#" aria-current="page">
Renew
</a>
</li>
</ol>
</nav>
<div class="main container-fluid">
<div class="row">
<div class="col-sm-12">
<main>
<div class="row">
[% IF Koha.Preference('CircSidebar') %]
<div class="col-sm-10 col-sm-push-2">
[% ELSE %]
<div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">
[% END %]
[% IF error %]
<div class="dialog alert">
<h3>Cannot renew:</h3>
[% IF error == "no_item" %]
<p>No item matches this barcode</p>
[% ELSIF error == "no_checkout" %]
<p>[% INCLUDE 'biblio-title.inc' biblio=item.biblio link = 1 %] ( <a href="/cgi-bin/koha/catalogue/moredetail.pl?itemnumber=[% item.itemnumber | uri %]&amp;biblionumber=[% item.biblio.biblionumber | uri %]&amp;bi=[% item.biblioitemnumber.biblioitemnumber | uri %]#item[% item.itemnumber | uri %]">[% item.barcode | html %]</a> ) is not checked out to a patron.</p>
[% ELSIF error == "too_many" %]
<p>[% INCLUDE 'biblio-title.inc' biblio=item.biblio link = 1 %] ( [% item.barcode | html %] ) has been renewed the maximum number of times by [% borrower.firstname | html %] [% borrower.surname | html %] ( <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrower.borrowernumber | uri %]"> [% borrower.cardnumber | html %] </a> )</p>
[% IF Koha.Preference('AllowRenewalLimitOverride') %]
<form method="post" action="/cgi-bin/koha/circ/renew.pl">
<input type="hidden" name="barcode" value="[% item.barcode | html %]"/>
<input type="hidden" name="override_limit" value="1" />
<button type="submit" class="approve"><i class="fa fa-check"></i> Override limit and renew</button>
</form>
[% END %]
[% ELSIF error == "too_unseen" %]
<p>[% INCLUDE 'biblio-title.inc' biblio=item.biblio %] ( [% item.barcode | html %] ) has been renewed the maximum number of consecutive times without being seen by the library )</p>
[% IF Koha.Preference('AllowRenewalLimitOverride') %]
<form method="post" action="/cgi-bin/koha/circ/renew.pl">
<input type="hidden" name="barcode" value="[% item.barcode | html %]"/>
<input type="hidden" name="override_limit" value="1" />
<button type="submit" class="approve"><i class="fa fa-check"></i> Override limit and renew</button>
</form>
[% END %]
[% ELSIF error == "too_soon" %]
<p>[% INCLUDE 'biblio-title.inc' biblio=item.biblio link = 1 %] ( [% item.barcode | html %] ) cannot be renewed before [% soonestrenewdate | $KohaDates %]. </p>
[% IF Koha.Preference('AllowRenewalLimitOverride') %]
<form method="post" action="/cgi-bin/koha/circ/renew.pl">
<input type="hidden" name="barcode" value="[% item.barcode | html %]"/>
<input type="hidden" name="override_limit" value="1" />
<button type="submit" class="approve"><i class="fa fa-check"></i> Override and renew</button>
</form>
[% END %]
[% ELSIF error == "auto_too_soon" %]
<p>[% INCLUDE 'biblio-title.inc' biblio=item.biblio link = 1 %] ( [% item.barcode | html %] ) has been scheduled for automatic renewal and cannot be renewed before [% soonestrenewdate | $KohaDates %]. </p>
[% IF Koha.Preference('AllowRenewalLimitOverride') %]
<form method="post" action="/cgi-bin/koha/circ/renew.pl">
<input type="hidden" name="barcode" value="[% item.barcode | html %]"/>
<input type="hidden" name="override_limit" value="1" />
<button type="submit" class="approve"><i class="fa fa-check"></i> Override and renew</button>
</form>
[% END %]
[% ELSIF error == "auto_too_late" %]
<p>[% INCLUDE 'biblio-title.inc' biblio=item.biblio link = 1 %] ( [% item.barcode | html %] ) has been scheduled for automatic renewal and cannot be renewed anymore since [% latestautorenewdate | $KohaDates %]. </p>
[% IF Koha.Preference('AllowRenewalLimitOverride') %]
<form method="post" action="/cgi-bin/koha/circ/renew.pl">
<input type="hidden" name="barcode" value="[% item.barcode | html %]"/>
<input type="hidden" name="override_limit" value="1" />
<input type="submit" class="approve" value="Override and renew" />
</form>
[% END %]
[% ELSIF error == "auto_account_expired" %]
<p>[% INCLUDE 'biblio-title.inc' biblio=item.biblio link = 1 %] ( [% item.barcode | html %] ) has been scheduled for automatic renewal and cannot be renewed because the patron's account is expired</p>
[% IF Koha.Preference('AllowRenewalLimitOverride') %]
<form method="post" action="/cgi-bin/koha/circ/renew.pl">
<input type="hidden" name="barcode" value="[% item.barcode | html %]"/>
<input type="hidden" name="override_limit" value="1" />
<input type="submit" class="approve" value="Override and renew" />
</form>
[% END %]
[% ELSIF error == "auto_renew" or error == "auto_too_much_oweing" %]
<p>[% INCLUDE 'biblio-title.inc' biblio=item.biblio link = 1 %] ( [% item.barcode | html %] ) has been scheduled for automatic renewal. </p>
[% IF Koha.Preference('AllowRenewalLimitOverride') %]
<form method="post" action="/cgi-bin/koha/circ/renew.pl">
<input type="hidden" name="barcode" value="[% item.barcode | html %]"/>
<input type="hidden" name="override_limit" value="1" />
<button type="submit" class="approve"><i class="fa fa-check"></i> Override limit and renew</button>
</form>
[% END %]
[% ELSIF error == "on_reserve" %]
<p>[% INCLUDE 'biblio-title.inc' biblio=item.biblio link = 1 %] ( [% item.barcode | html %] ): This item is on hold for another patron.</p>
<form method="post" action="/cgi-bin/koha/circ/renew.pl">
<input type="hidden" name="barcode" value="[% item.barcode | html %]"/>
<input type="hidden" name="override_limit" value="1" />
<input type="hidden" name="override_holds" value="1" />
<div>
<label for="renewonholdduedate">Renewal due date:</label> <input type="text" size="20" id="renewonholdduedate" name="renewonholdduedate" value="" />
</div>
<button type="submit" class="approve"><i class="fa fa-check"></i> Override and renew</button>
</form>
[% ELSIF error == "patron_restricted" %]
<p>[% borrower.firstname | html %] [% borrower.surname | html %] ( <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrower.borrowernumber | uri %]"> [% borrower.cardnumber | html %] </a> ) is currently restricted.</p>
[% ELSIF error == "item_denied_renewal" %]
<p>Item is not allowed renewal.</p>
[% ELSIF error == "onsite_checkout" %]
<p>Item cannot be renewed because it's an onsite checkout</p>
[% ELSE %]
[% error | html %]
[% END %]
<form method="get" action="/cgi-bin/koha/circ/renew.pl">
<input type="hidden" name="hard_due_date" value="[% hard_due_date | html %]" />
<button type="submit" class="deny"><i class="fa fa-times"></i> Continue without renewing</button>
</form>
</div>
[% END %]
[% IF date_due %]
<div class="dialog message">
<h3>Item renewed:</h3>
<p>
[% INCLUDE 'biblio-title.inc' biblio=item.biblio link = 1 %]
( <a href="/cgi-bin/koha/catalogue/moredetail.pl?itemnumber=[% item.itemnumber | uri %]&amp;biblionumber=[% item.biblio.biblionumber | uri %]&amp;bi=[% item.biblioitemnumber.biblioitemnumber | uri %]#item[% item.itemnumber | uri %]">[% item.barcode | html %]</a> )
renewed for
[% borrower.firstname | html %] [% borrower.surname | html %] ( <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrower.borrowernumber | uri %]"> [% borrower.cardnumber | html %] </a> )
now due on [% date_due | $KohaDates %]
</p>
</div>
[% END %]
[% UNLESS error %]
<form method="post" action="/cgi-bin/koha/circ/renew.pl" autocomplete="off" >
<fieldset>
<h2>Renew</h2>
[% IF Koha.Preference('UnseenRenewals') %]
<div class="renew_formfield">
<div>
<label for="barcode" class="hint">Enter item barcode: </label>
</div>
<input name="barcode" id="barcode" size="14" class="barcode focus" type="text" />
</div>
<div class="renew_formfield">
<label for="unseen" class="hint">Record renewal as unseen if appropriate: </label>
<input value="1" name="unseen" id="unseen" type="checkbox" />
</div>
[% ELSE %]
<div>
<label for="barcode" class="hint">Enter item barcode: </label>
</div>
<input name="barcode" id="barcode" size="14" class="barcode focus" type="text" />
[% END %]
<button type="submit" class="btn btn-default">Submit</button>
<div class="circ-settings show">
<div class="date-select" id="renew_date_override_fields">
<div><label for="hard_due_date" class="hint">Renewal due date [% INCLUDE 'date-format.inc' %]:</label></div>
<input type="text" size="20" id="hard_due_date" name="hard_due_date" value="[% hard_due_date | $KohaDates with_hours => 1 %]" />
</div> <!-- /.date-select -->
</div>
</fieldset>
</form>
[% END %]
[% IF Koha.Preference('CircSidebar') %]
</div> <!-- /.col-sm-10.col-sm-push-2 -->
<div class="col-sm-2 col-sm-pull-10">
<aside>
[% INCLUDE 'circ-nav.inc' %]
</aside>
</div> <!-- /.col-sm-2.col-sm-pull-10 -->
</div> <!-- /.row -->
[% END %]
</main>
</div> <!-- /.col-sm-12 -->
</div> <!-- /.row -->
[% MACRO jsinclude BLOCK %]
[% INCLUDE 'calendar.inc' %]
[% IF error %]
<script>
$( document ).ready(function() {
removeFocus();
});
</script>
[% END %]
<script>
$( document ).ready(function() {
var renewonholdduedate = $("#renewonholdduedate").flatpickr({
enableTime: true,
dateFormat: flatpickr_dateformat_string + " " + flatpickr_timeformat_string,
minDate: new Date().fp_incr(1)
});
[% IF Koha.Preference('SpecifyDueDate') %]
var hard_due_date = $("#hard_due_date").flatpickr({
enableTime: true,
dateFormat: flatpickr_dateformat_string + " " + flatpickr_timeformat_string,
});
[% END %]
});
</script>
[% END %]
[% INCLUDE 'intranet-bottom.inc' %]