Bug 36911: Reindent circ-menu.inc

This patch reindents the circ-menu include file so that it has
consistent indentation. These changes should have no visible effect on
the page.

To test, apply the patch and enable the 'CircSidebar' system
preference if necessary.

- View any circulation page, including the checkout page, to confirm
  that the left-hand sidebar menu is unchanged.
- Test with the 'patronimages' system preference both on and off.

Viewing the diff while ignoring whitespace changes should show only
places where a line break was added.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 002fbdcc62)
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
Owen Leonard 2024-05-21 16:36:54 +00:00 committed by Lucas Gass
parent 6d9aab06d4
commit 3f561bd2be
1 changed files with 323 additions and 270 deletions

View File

@ -2,301 +2,354 @@
[% USE KohaDates %] [% USE KohaDates %]
[% PROCESS 'member-display-address-style.inc' %] [% PROCESS 'member-display-address-style.inc' %]
[% IF ( patron.borrowernumber ) %] [% IF ( patron.borrowernumber ) %]
[% SET patron_is_staff = patron.has_permission({ 'catalogue' => 1 }) %] [% SET patron_is_staff = patron.has_permission({ 'catalogue' => 1 }) %]
[% SET patron_is_superlibrarian = patron.is_superlibrarian %] [% SET patron_is_superlibrarian = patron.is_superlibrarian %]
[% SET patron_type_class = 'is-not-staff' %] [% SET patron_type_class = 'is-not-staff' %]
[% IF ( patron_is_superlibrarian ) %] [% IF ( patron_is_superlibrarian ) %]
[% patron_type_class = 'is-staff is-superlibrarian' %] [% patron_type_class = 'is-staff is-superlibrarian' %]
[% ELSIF ( patron_is_staff ) %] [% ELSIF ( patron_is_staff ) %]
[% patron_type_class = 'is-staff' %] [% patron_type_class = 'is-staff' %]
[% END %]
<div class="patroninfo [% patron_type_class | html %]">
[% IF ( patronimages ) %]
<h5 class="text-center">
[% ELSE %]
<h5>
[% END %]
[% IF ( patron_is_staff ) %]
<i class="fa-solid fa-shield fa-fw" title="Staff patron"></i>
[% END %]
[% IF ( patron_is_superlibrarian ) %]
<i class="fa fa-bolt fa-fw" title="Superlibrarian patron"></i>
[% END %]
[% IF ( patron.protected ) %]
<i class="fa fa-lock fa-fw" title="Protected patron"></i>
[% END %]
[% INCLUDE 'patron-title.inc' %]
</h5>
[% IF Koha.Preference('showLastPatron') %]
<input type="hidden" id="hiddenborrowernumber" value="[% patron.borrowernumber | html %]">
<input type="hidden" id="hiddenborrowername" value="[% patron.surname | html %] [% patron.firstname | html %]">
<input type="hidden" id="hiddenborrowercard" value="[% patron.cardnumber | html %]">
[% END %]
[% IF ( patronimages ) %]
<div>
<div class="patronimage-container">
[% IF ( patron.image ) %]
<img src="/cgi-bin/koha/members/patronimage.pl?borrowernumber=[% patron.borrowernumber | uri %]" class="patronimage" alt="[% patron.firstname | html %] [% patron.surname | html %] ([% patron.cardnumber | html %])" />
[% IF ( CAN_user_tools_batch_upload_patron_images ) %]
<div class="patronimage-controls">
<div class="patronimage-control"><a data-borrowernumber="[% patron.borrowernumber | uri %]" data-cardnumber="[% patron.cardnumber | html %]" class="btn btn-default edit-patronimage" title="Patron photo" href="#"><i class="fa-solid fa-pencil" aria-hidden="true"></i> Edit</a></div>
</div>
[% END %]
[% ELSE %]
<div class="patronimage empty"></div>
[% IF ( CAN_user_tools_batch_upload_patron_images ) %]
<div class="patronimage-controls">
<div class="patronimage-control"><a data-borrowernumber="[% patron.borrowernumber | uri %]" data-cardnumber="[% patron.cardnumber | html %]" class="btn btn-default edit-patronimage" title="Patron photo" href="#"><i class="fa fa-plus"></i> Add</a></div>
</div>
[% END %]
[% END %]
</div>
</div>
[% END %]
<ul class="patronbriefinfo">
[% IF patron.pronouns %]
<li class="patronpronouns">([% patron.pronouns | html %])</li>
[% END %] [% END %]
[% IF !(Koha.Preference('HidePersonalPatronDetailOnCirculation')) %] <div class="patroninfo [% patron_type_class | html %]">
[% IF ( patronimages ) %]
[% PROCESS 'display-address-style' %] <h5 class="text-center">
[% IF ( patron.phone || patron.mobile || patron.phonepro ) %]<li class="patronphone">
[% IF ( patron.phone ) %]
<a href="tel:[% patron.phone | url %]">[% patron.phone | html %]</a>
[% ELSE %] [% ELSE %]
[% IF ( patron.mobile ) %] <h5>
<a href="tel:[% patron.mobile | url %]">[% patron.mobile | html %]</a> [% END %]
[% ELSE %] [% IF ( patron_is_staff ) %]
[% IF ( patron.phonepro ) %] <i class="fa-solid fa-shield fa-fw" title="Staff patron"></i>
<a href="tel:[% patron.phonepro | url %]">[% patron.phonepro | html %]</a>
[% END %]
[% END %] [% END %]
[% END %]</li>[% END %] [% IF ( patron_is_superlibrarian ) %]
[% IF ( patron.email ) %] <i class="fa fa-bolt fa-fw" title="Superlibrarian patron"></i>
<li class="email"> <a href="mailto:[% patron.email | url %]" title="[% patron.email | html %]">[% patron.email | html %]</a></li>
[% ELSE %]
[% IF ( patron.emailpro ) %]
<li class="email"> <a href="mailto:[% patron.emailpro | url %]" title="[% patron.emailpro | html %]">[% patron.emailpro | html %]</a></li>
[% END %] [% END %]
[% END %] [% IF ( patron.protected ) %]
[% IF ( patron.dateofbirth ) %] <i class="fa fa-lock fa-fw" title="Protected patron"></i>
<li class="patrondateofbirth"> [% END %]
<span>Born:</span> [% INCLUDE 'patron-title.inc' %]
[% INCLUDE 'patron-age.inc' %] </h5>
</li>
[% IF Koha.Preference('showLastPatron') %]
<input type="hidden" id="hiddenborrowernumber" value="[% patron.borrowernumber | html %]">
<input type="hidden" id="hiddenborrowername" value="[% patron.surname | html %] [% patron.firstname | html %]">
<input type="hidden" id="hiddenborrowercard" value="[% patron.cardnumber | html %]">
[% END %] [% END %]
[% UNLESS ( patron.address or patron.address2 ) %] [% IF ( patronimages ) %]
<li><span class="empty" id="noaddressstored">No address stored.</span></li> <div>
[% END %] <div class="patronimage-container">
[% UNLESS ( patron.city ) %] [% IF ( patron.image ) %]
<li><span class="empty" id="nocitystored">No city stored.</span></li> <img src="/cgi-bin/koha/members/patronimage.pl?borrowernumber=[% patron.borrowernumber | uri %]" class="patronimage" alt="[% patron.firstname | html %] [% patron.surname | html %] ([% patron.cardnumber | html %])" />
[% END %] [% IF ( CAN_user_tools_batch_upload_patron_images ) %]
[% UNLESS ( patron.phone or patron.mobile or patron.phonepro) %] <div class="patronimage-controls">
<li> <span class="empty">No phone stored.</span></li> <div class="patronimage-control">
[% END %] <a data-borrowernumber="[% patron.borrowernumber | uri %]" data-cardnumber="[% patron.cardnumber | html %]" class="btn btn-default edit-patronimage" title="Patron photo" href="#"><i class="fa-solid fa-pencil" aria-hidden="true"></i> Edit</a>
[% UNLESS ( patron.email or patron.emailpro) %] </div>
<li> <span class="empty">No email stored.</span></li> </div>
[% END %] [% END %]
[% UNLESS ( patron.dateofbirth ) %] [% ELSE %]
<li> <span class="empty">No date of birth stored.</span></li> <div class="patronimage empty"></div>
[% IF ( CAN_user_tools_batch_upload_patron_images ) %]
<div class="patronimage-controls">
<div class="patronimage-control">
<a data-borrowernumber="[% patron.borrowernumber | uri %]" data-cardnumber="[% patron.cardnumber | html %]" class="btn btn-default edit-patronimage" title="Patron photo" href="#"><i class="fa fa-plus"></i> Add</a>
</div>
</div>
[% END %]
[% END %]
</div>
</div>
[% END %] [% END %]
[% END %] <ul class="patronbriefinfo">
[% IF patron.pronouns %]
<li class="patronpronouns">([% patron.pronouns | html %])</li>
[% END %]
[% IF Koha.Preference('ExtendedPatronAttributes') %] [% IF !(Koha.Preference('HidePersonalPatronDetailOnCirculation')) %]
[% FOREACH extendedattribute IN patron.extended_attributes %]
[% IF ( extendedattribute.type.display_checkout ) %] [%# FIXME We should filter in the line above %] [% PROCESS 'display-address-style' %]
[% IF ( extendedattribute.attribute.defined ) %]
<li class="patronattribute"> [% IF ( patron.phone || patron.mobile || patron.phonepro ) %]
<span class="patronattributelabel">[% extendedattribute.type.description | html %]</span>: <li class="patronphone">
[% IF extendedattribute.type.is_date %] [% IF ( patron.phone ) %]
[% extendedattribute.description | $KohaDates %] <a href="tel:[% patron.phone | url %]">[% patron.phone | html %]</a>
[% ELSE %] [% ELSE %]
[% extendedattribute.description | html %] [% IF ( patron.mobile ) %]
<a href="tel:[% patron.mobile | url %]">[% patron.mobile | html %]</a>
[% ELSE %]
[% IF ( patron.phonepro ) %]
<a href="tel:[% patron.phonepro | url %]">[% patron.phonepro | html %]</a>
[% END %]
[% END %]
[% END %] [% END %]
</li> </li>
[% END %] [% END %]
[% IF ( patron.email ) %]
<li class="email">
<a href="mailto:[% patron.email | url %]" title="[% patron.email | html %]">[% patron.email | html %]</a>
</li>
[% ELSE %]
[% IF ( patron.emailpro ) %]
<li class="email">
<a href="mailto:[% patron.emailpro | url %]" title="[% patron.emailpro | html %]">[% patron.emailpro | html %]</a>
</li>
[% END %]
[% END %]
[% IF ( patron.dateofbirth ) %]
<li class="patrondateofbirth">
<span>Born:</span>
[% INCLUDE 'patron-age.inc' %]
</li>
[% END %]
[% UNLESS ( patron.address or patron.address2 ) %]
<li><span class="empty" id="noaddressstored">No address stored.</span></li>
[% END %]
[% UNLESS ( patron.city ) %]
<li><span class="empty" id="nocitystored">No city stored.</span></li>
[% END %]
[% UNLESS ( patron.phone or patron.mobile or patron.phonepro) %]
<li> <span class="empty">No phone stored.</span></li>
[% END %]
[% UNLESS ( patron.email or patron.emailpro) %]
<li> <span class="empty">No email stored.</span></li>
[% END %]
[% UNLESS ( patron.dateofbirth ) %]
<li> <span class="empty">No date of birth stored.</span></li>
[% END %]
[% END %] [% END %]
[% END %]
[% END %]
<li class="patroncategory">Category: <span class="patroncategory_description">[% patron.category.description | html %]</span> <span class="patroncategory_code">([% patron.categorycode | html %])</span></li>
<li class="patronlibrary">Home library: [% Branches.GetName( patron.branchcode ) | html %]</li>
<li class="patronborrowernumber">Borrowernumber: [% patron.borrowernumber | html %]</li>
<li><span class="patronupdatedon">Updated on [% patron.updated_on | $KohaDates with_hours => 1 %]</span></li>
[% IF patron.account_locked %]
[% IF patron.login_attempts < 0 %]
<li class="blocker account_admin_locked">Account has been administratively locked</li>
[% ELSE %]
<li class="blocker account_locked">Account has been locked</li>
[% END %]
[% END %]
</ul></div>
<div id="menu">
<ul>
[% IF ( CAN_user_circulate_circulate_remaining_permissions ) %]
[% IF ( circview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/circ/circulation.pl?borrowernumber=[% patron.borrowernumber | uri %]">Check out</a></li>
[% IF Koha.Preference('BatchCheckouts') && Koha.Preference('BatchCheckoutsValidCategories').split(',').grep('^' _ patron.categorycode _ '$').size > 0 %]
[% IF ( batch_checkout_view ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/circ/circulation.pl?borrowernumber=[% patron.borrowernumber | uri %]&amp;batch=1">Batch check out</a></li>
[% END %]
[% END %]
[% IF CAN_user_borrowers_edit_borrowers %]
[% IF ( detailview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% patron.borrowernumber | uri %]">Details</a></li>
[% END %]
[% IF ( CAN_user_updatecharges_remaining_permissions ) %]
[% IF ( finesview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/pay.pl?borrowernumber=[% patron.borrowernumber | uri %]">Accounting</a></li>
[% END %]
[% IF ( CAN_user_circulate_circulate_remaining_permissions ) %]
[% IF Koha.Preference("RoutingSerials") %][% IF ( routinglistview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/routing-lists.pl?borrowernumber=[% patron.borrowernumber | uri %]">Routing lists</a></li>[% END %]
[% END %]
[% IF CAN_user_borrowers_edit_borrowers %]
[% IF ( intranetreadinghistory ) %]
[% IF ( readingrecordview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/readingrec.pl?borrowernumber=[% patron.borrowernumber | uri %]">Circulation history</a></li>
[% END %]
[% END %]
[% IF CAN_user_borrowers_edit_borrowers %]
[% IF ( IntranetReadingHistoryHolds ) %]
[% IF ( holdshistoryview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/holdshistory.pl?borrowernumber=[% patron.borrowernumber | uri %]">Holds history</a></li>
[% END %]
[% END %]
[% IF ( CAN_user_tools_view_system_logs ) %]
[% IF ( logview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/tools/viewlog.pl?do_it=1&amp;modules=MEMBERS&amp;modules=CIRCULATION&amp;object=[% patron.borrowernumber | uri %]&amp;src=circ">Modification log</a></li>
[% END %]
[% IF CAN_user_borrowers_edit_borrowers %]
[% IF ( sentnotices ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/notices.pl?borrowernumber=[% patron.borrowernumber | uri %]">Notices</a></li>
[% END %]
[% IF CAN_user_borrowers_edit_borrowers %]
[% IF ( statisticsview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/statistics.pl?borrowernumber=[% patron.borrowernumber | uri %]">Statistics</a></li>
[% END %]
[% IF CAN_user_borrowers_edit_borrowers %]
[% IF ( EnableBorrowerFiles ) %]
[% IF ( borrower_files ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/files.pl?borrowernumber=[% patron.borrowernumber | uri %]">Files</a></li>
[% END %]
[% END %]
[% IF CAN_user_suggestions_suggestions_manage %] [% IF Koha.Preference('ExtendedPatronAttributes') %]
[% IF ( suggestionsview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/purchase-suggestions.pl?borrowernumber=[% patron.borrowernumber | uri %]">Purchase suggestions</a></li> [% FOREACH extendedattribute IN patron.extended_attributes %]
[% END %] [% IF ( extendedattribute.type.display_checkout ) %] [%# FIXME We should filter in the line above %]
[% IF CAN_user_borrowers_edit_borrowers && useDischarge %] [% IF ( extendedattribute.attribute.defined ) %]
[% IF dischargeview %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/discharge.pl?borrowernumber=[% patron.borrowernumber | uri %]">Discharges</a></li> <li class="patronattribute">
[% END %] <span class="patronattributelabel">[% extendedattribute.type.description | html %]</span>:
[% IF Koha.Preference('HouseboundModule') %] [% IF extendedattribute.type.is_date %]
[% IF houseboundview %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/housebound.pl?borrowernumber=[% patron.borrowernumber | uri %]">Housebound</a></li> [% extendedattribute.description | $KohaDates %]
[% END %] [% ELSE %]
[% IF Koha.Preference('ILLModule') && CAN_user_ill %] [% extendedattribute.description | html %]
[% IF illview %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/ill-requests.pl?borrowernumber=[% patron.borrowernumber | uri %]">ILL requests history</a></li> [% END %]
[% END %] </li>
[% IF Koha.Preference('UseRecalls') && CAN_user_recalls %] [% END %]
[% IF recallsview %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/recallshistory.pl?borrowernumber=[% patron.borrowernumber | uri %]">Recalls history</a></li> [% END %]
[% END %] [% END %]
[% IF ( CAN_user_serials && patron.alert_subscriptions.count ) %] [% END %]
[% IF alertsview %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/alert-subscriptions.pl?borrowernumber=[% patron.borrowernumber | uri %]">Alert subscriptions ([% patron.alert_subscriptions.count | html %])</a></li>
[% END %]
</ul></div>
[% IF patronimages && CAN_user_tools_batch_upload_patron_images %] <li class="patroncategory">
<!-- Modal --> Category: <span class="patroncategory_description">[% patron.category.description | html %]</span> <span class="patroncategory_code">([% patron.categorycode | html %])</span>
<div class="modal" id="patronImageEdit" tabindex="-1" role="dialog" aria-labelledby="patronImageEditLabel"> </li>
<div class="modal-dialog" role="document"> <li class="patronlibrary">Home library: [% Branches.GetName( patron.branchcode ) | html %]</li>
<div class="modal-content"> <li class="patronborrowernumber">Borrowernumber: [% patron.borrowernumber | html %]</li>
<div class="modal-header"> <li><span class="patronupdatedon">Updated on [% patron.updated_on | $KohaDates with_hours => 1 %]</span></li>
<button type="button" class="closebtn" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> [% IF patron.account_locked %]
<h4 class="modal-title" id="patronImageEditLabel">Patron photo</h4> [% IF patron.login_attempts < 0 %]
</div> <li class="blocker account_admin_locked">Account has been administratively locked</li>
<div class="modal-body"> [% ELSE %]
[% IF ( patron.cardnumber ) %] <li class="blocker account_locked">Account has been locked</li>
<div id="upload-patron-image" class="patroninfo-section"> [% END %]
<h5>Upload patron photo</h5> [% END %]
<form method="post" id="picture-upload" action="/cgi-bin/koha/tools/picture-upload.pl" </ul>
enctype="multipart/form-data"> </div>
[% IF ( patron.image ) %]
<div class="hint"> <div id="menu">
To update the image for [% patron.title | html %] [% patron.firstname | html %] [% patron.surname | html %], select a new image file and click 'Upload.' <br />Click the 'Delete' button to <ul>
remove the current image. [% IF ( CAN_user_circulate_circulate_remaining_permissions ) %]
[% IF ( circview ) %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/circ/circulation.pl?borrowernumber=[% patron.borrowernumber | uri %]">Check out</a>
</li>
[% IF Koha.Preference('BatchCheckouts') && Koha.Preference('BatchCheckoutsValidCategories').split(',').grep('^' _ patron.categorycode _ '$').size > 0 %]
[% IF ( batch_checkout_view ) %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/circ/circulation.pl?borrowernumber=[% patron.borrowernumber | uri %]&amp;batch=1">Batch check out</a>
</li>
[% END %]
[% END %]
[% IF CAN_user_borrowers_edit_borrowers %]
[% IF ( detailview ) %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% patron.borrowernumber | uri %]">Details</a>
</li>
[% END %]
[% IF ( CAN_user_updatecharges_remaining_permissions ) %]
[% IF ( finesview ) %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/members/pay.pl?borrowernumber=[% patron.borrowernumber | uri %]">Accounting</a>
</li>
[% END %]
[% IF ( CAN_user_circulate_circulate_remaining_permissions ) %]
[% IF Koha.Preference("RoutingSerials") %]
[% IF ( routinglistview ) %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/members/routing-lists.pl?borrowernumber=[% patron.borrowernumber | uri %]">Routing lists</a>
</li>
[% END %]
[% END %]
[% IF CAN_user_borrowers_edit_borrowers %]
[% IF ( intranetreadinghistory ) %]
[% IF ( readingrecordview ) %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/members/readingrec.pl?borrowernumber=[% patron.borrowernumber | uri %]">Circulation history</a>
</li>
[% END %]
[% END %]
[% IF CAN_user_borrowers_edit_borrowers %]
[% IF ( IntranetReadingHistoryHolds ) %]
[% IF ( holdshistoryview ) %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/members/holdshistory.pl?borrowernumber=[% patron.borrowernumber | uri %]">Holds history</a>
</li>
[% END %]
[% END %]
[% IF ( CAN_user_tools_view_system_logs ) %]
[% IF ( logview ) %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/tools/viewlog.pl?do_it=1&amp;modules=MEMBERS&amp;modules=CIRCULATION&amp;object=[% patron.borrowernumber | uri %]&amp;src=circ">Modification log</a>
</li>
[% END %]
[% IF CAN_user_borrowers_edit_borrowers %]
[% IF ( sentnotices ) %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/members/notices.pl?borrowernumber=[% patron.borrowernumber | uri %]">Notices</a>
</li>
[% END %]
[% IF CAN_user_borrowers_edit_borrowers %]
[% IF ( statisticsview ) %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/members/statistics.pl?borrowernumber=[% patron.borrowernumber | uri %]">Statistics</a>
</li>
[% END %]
[% IF CAN_user_borrowers_edit_borrowers %]
[% IF ( EnableBorrowerFiles ) %]
[% IF ( borrower_files ) %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/members/files.pl?borrowernumber=[% patron.borrowernumber | uri %]">Files</a>
</li>
[% END %]
[% END %]
[% IF CAN_user_suggestions_suggestions_manage %]
[% IF ( suggestionsview ) %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/members/purchase-suggestions.pl?borrowernumber=[% patron.borrowernumber | uri %]">Purchase suggestions</a>
</li>
[% END %]
[% IF CAN_user_borrowers_edit_borrowers && useDischarge %]
[% IF dischargeview %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/members/discharge.pl?borrowernumber=[% patron.borrowernumber | uri %]">Discharges</a>
</li>
[% END %]
[% IF Koha.Preference('HouseboundModule') %]
[% IF houseboundview %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/members/housebound.pl?borrowernumber=[% patron.borrowernumber | uri %]">Housebound</a>
</li>
[% END %]
[% IF Koha.Preference('ILLModule') && CAN_user_ill %]
[% IF illview %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/members/ill-requests.pl?borrowernumber=[% patron.borrowernumber | uri %]">ILL requests history</a>
</li>
[% END %]
[% IF Koha.Preference('UseRecalls') && CAN_user_recalls %]
[% IF recallsview %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/members/recallshistory.pl?borrowernumber=[% patron.borrowernumber | uri %]">Recalls history</a>
</li>
[% END %]
[% IF ( CAN_user_serials && patron.alert_subscriptions.count ) %]
[% IF alertsview %]<li class="active">[% ELSE %]<li>[% END %]
<a href="/cgi-bin/koha/members/alert-subscriptions.pl?borrowernumber=[% patron.borrowernumber | uri %]">Alert subscriptions ([% patron.alert_subscriptions.count | html %])</a>
</li>
[% END %]
</ul>
</div>
[% IF patronimages && CAN_user_tools_batch_upload_patron_images %]
<!-- Modal -->
<div class="modal" id="patronImageEdit" tabindex="-1" role="dialog" aria-labelledby="patronImageEditLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="closebtn" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="patronImageEditLabel">Patron photo</h4>
</div>
<div class="modal-body">
[% IF ( patron.cardnumber ) %]
<div id="upload-patron-image" class="patroninfo-section">
<h5>Upload patron photo</h5>
<form method="post" id="picture-upload" action="/cgi-bin/koha/tools/picture-upload.pl"
enctype="multipart/form-data">
[% IF ( patron.image ) %]
<div class="hint">
To update the image for [% patron.title | html %] [% patron.firstname | html %] [% patron.surname | html %], select a new image file and click 'Upload.' <br />Click the 'Delete' button to
remove the current image.
</div>
[% ELSE %]
<div class="hint">
[% patron.title | html %] [% patron.firstname | html %] [% patron.surname | html %] does not currently have an image available. To import an image for [% patron.title | html %] [% patron.firstname | html %] [% patron.surname | html %], enter the name of an image file to upload.
</div>
[% END %]
<p>Only PNG, GIF, JPEG, XPM formats are supported.</p>
<label for="uploadfile">Select the file to upload: </label>
<input type="file" id="uploadfile" name="uploadfile" required="required" />
<div class="action">
[% INCLUDE 'csrf-token.inc' %]
<input type="hidden" id="image" name="filetype" value="image" />
<input type="hidden" id="cardnumber" name="cardnumber" value="[% patron.cardnumber | html %]" />
<input type="hidden" id="borrowernumber" name="borrowernumber" value="[% patron.borrowernumber | html %]" />
<button type="submit" class="btn btn-default btn-xs" name="op" value="cud-Upload"><i class="fa fa-upload"></i> Upload photo</button>
[% IF ( patron.image ) %]
<button id="delpicture" type="submit" class="btn btn-default btn-xs delete" name="op" value="cud-Delete"><i class="fa fa-trash-can"></i> Delete</button>
[% END %]
</div>
</form>
</div>
<div id="capture-patron-image" class="patroninfo-section">
<h5>Take patron photo</h5>
<form method="post" id="camera-upload" action="/cgi-bin/koha/tools/picture-upload.pl">
<div class="btn-toolbar">
<div class="btn-group">
<button class="btn btn-default" id="takebutton"><i class="fa fa-camera"></i> Take photo</button>
</div>
<div class="btn-group">
<button class="btn btn-default" id="retakebutton" style="display:none;"><i class="fa-solid fa-rotate"></i> Retake photo</button>
</div>
<div class="btn-group">
<a id="downloadbutton" href="#" class="btn btn-default" style="display:none;"><i class="fa fa-download"></i> Download photo</a>
</div>
<div class="btn-group">
<button id="savebutton" type="submit" class="btn btn-default" style="display:none;"><i class="fa-solid fa-hard-drive"></i> Upload</button>
</div>
</div>
<div id="camera">
<video id="viewfinder">Video stream not available.</video>
</div>
<canvas id="canvas" style="display:none"></canvas>
<div id="output" style="display:none">
<img style="width:100%;height:auto;" id="photo" alt="The screen capture will appear in this box.">
</div>
<input type="hidden" name="uploadfilename" value="patron-photo.jpg" />
<textarea id="uploadfiletext" name="uploadfiletext" style="display:none;"></textarea>
[% INCLUDE 'csrf-token.inc' %]
<input type="hidden" name="filetype" value="image" />
<input type="hidden" name="cardnumber" value="[% patron.cardnumber | html %]" />
<input type="hidden" name="borrowernumber" value="[% patron.borrowernumber | html %]" />
<input name="op" type="hidden" value="cud-Upload" />
</form>
</div>
<div class="dialog message" style="display:none" id="camera-error">
<div>
<span class="fa-stack fa-lg">
<i class="fa fa-camera fa-stack-1x"></i>
<i class="fa fa-ban fa-stack-2x text-danger"></i>
</span>
</div>
<div>
<strong>Cannot take patron photo.</strong>
<span id="camera-error-message"></span>
</div>
</div> </div>
[% ELSE %] [% ELSE %]
<div class="hint"> <div id="missing-cardnumber-picture-upload">
[% patron.title | html %] [% patron.firstname | html %] [% patron.surname | html %] does not currently have an image available. To import an image for [% patron.title | html %] [% patron.firstname | html %] [% patron.surname | html %], enter the name of an image file to upload. <p>The patron must have a card number before a patron photo can be uploaded.</p>
</div> </div>
[% END %] [% END %]
<p>Only PNG, GIF, JPEG, XPM formats are supported.</p>
<label for="uploadfile">Select the file to upload: </label>
<input type="file" id="uploadfile" name="uploadfile" required="required" />
<div class="action">
[% INCLUDE 'csrf-token.inc' %]
<input type="hidden" id="image" name="filetype" value="image" />
<input type="hidden" id="cardnumber" name="cardnumber" value="[% patron.cardnumber | html %]" />
<input type="hidden" id="borrowernumber" name="borrowernumber" value="[% patron.borrowernumber | html %]" />
<button type="submit" class="btn btn-default btn-xs" name="op" value="cud-Upload"><i class="fa fa-upload"></i> Upload photo</button>
[% IF ( patron.image ) %]
<button id="delpicture" type="submit" class="btn btn-default btn-xs delete" name="op" value="cud-Delete"><i class="fa fa-trash-can"></i> Delete</button>
[% END %]
</div>
</form>
</div>
<div id="capture-patron-image" class="patroninfo-section">
<h5>Take patron photo</h5>
<form method="post" id="camera-upload" action="/cgi-bin/koha/tools/picture-upload.pl">
<div class="btn-toolbar">
<div class="btn-group">
<button class="btn btn-default" id="takebutton"><i class="fa fa-camera"></i> Take photo</button>
</div>
<div class="btn-group">
<button class="btn btn-default" id="retakebutton" style="display:none;"><i class="fa-solid fa-rotate"></i> Retake photo</button>
</div>
<div class="btn-group">
<a id="downloadbutton" href="#" class="btn btn-default" style="display:none;"><i class="fa fa-download"></i> Download photo</a>
</div>
<div class="btn-group">
<button id="savebutton" type="submit" class="btn btn-default" style="display:none;"><i class="fa-solid fa-hard-drive"></i> Upload</button>
</div>
</div>
<div id="camera">
<video id="viewfinder">Video stream not available.</video>
</div>
<canvas id="canvas" style="display:none"></canvas>
<div id="output" style="display:none">
<img style="width:100%;height:auto;" id="photo" alt="The screen capture will appear in this box.">
</div>
<input type="hidden" name="uploadfilename" value="patron-photo.jpg" />
<textarea id="uploadfiletext" name="uploadfiletext" style="display:none;"></textarea>
[% INCLUDE 'csrf-token.inc' %]
<input type="hidden" name="filetype" value="image" />
<input type="hidden" name="cardnumber" value="[% patron.cardnumber | html %]" />
<input type="hidden" name="borrowernumber" value="[% patron.borrowernumber | html %]" />
<input name="op" type="hidden" value="cud-Upload" />
</form>
</div>
<div class="dialog message" style="display:none" id="camera-error">
<div>
<span class="fa-stack fa-lg">
<i class="fa fa-camera fa-stack-1x"></i>
<i class="fa fa-ban fa-stack-2x text-danger"></i>
</span>
</div> </div>
<div> <div class="modal-footer">
<strong>Cannot take patron photo.</strong> <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<span id="camera-error-message"></span>
</div> </div>
</div> </div>
[% ELSE %]
<div id="missing-cardnumber-picture-upload">
<p>The patron must have a card number before a patron photo can be uploaded.</p>
</div>
[% END %]
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
</div> </div>
</div> </div>
</div> [% END %]
</div>
[% END %]
[% END %] [% END %]