5 [% USE AuthorisedValues %]
6 [% USE ColumnsSettings %]
8 [% INCLUDE 'doc-head-open.inc' %]
9 <title>Koha › Patrons ›
10 [% UNLESS blocking_error %]
11 Patron details for [% INCLUDE 'patron-title.inc' no_html = 1 %]
14 [% INCLUDE 'doc-head-close.inc' %]
15 [% Asset.css("css/datatables.css") %]
17 input[type="file"] { display: inline-block; }
18 .patroninfo-section { padding: .5em; margin: .5em; }
19 .patroninfo-section .rows { padding: .5em; }
20 .patroninfo-heading { background-color: rgba(237, 244, 246, .4); padding: .5em; margin-bottom: .3em; clear:both;}
21 .patroninfo-heading h3 { display: inline-block; }
22 .patroninfo-heading .btn { float: right; }
26 <body id="pat_moremember" class="pat">
27 [% INCLUDE 'header.inc' %]
28 [% INCLUDE 'patron-search.inc' %]
30 <div id="breadcrumbs">
31 <a href="/cgi-bin/koha/mainpage.pl">Home</a>
32 › <a href="/cgi-bin/koha/members/members-home.pl">Patrons</a>
33 › [% UNLESS blocking_error %]Patron details for [% INCLUDE 'patron-title.inc' %][% END %]
36 <div id="doc3" class="yui-t2">
41 [% INCLUDE 'members-toolbar.inc' %]
44 <div class="dialog alert">
45 [% IF ( error == 'CANT_DELETE_STAFF' ) %]
46 <h3>Unable to delete staff user</h3>
47 <p>Insufficient privileges.</p>
49 [% IF ( error == 'CANT_DELETE_YOURSELF' ) %]
50 <h3>Not allowed to delete own account</h3>
51 <p>Deleting your own account would lock you out of Koha.</p>
53 [% IF ( error == 'CANT_DELETE_OTHERLIBRARY' ) %]
54 <h3>Unable to delete patrons from other libraries with current settings</h3>
55 <p>Insufficient privileges.</p>
57 [% IF ( error == 'CANT_DELETE' ) %]
58 <h3>Unable to delete patron</h3>
59 <p>Insufficient privileges.</p>
66 [% IF ( was_renewed ) %]
67 <div class="dialog message">
68 Patron's account has been renewed until [% patron.dateexpiry | $KohaDates %]
73 <div id="circmessages" class="circmessage attention">
75 [% INCLUDE 'blocked-fines.inc' %]
80 [% IF ( patron_messages ) %]
81 <div id="messages" class="circmessage">
84 [% FOREACH patron_message IN patron_messages %]
86 [% IF(patron_message.message_type == "L") %]
87 <span class="circ-hlt">
91 [% patron_message.message_date | $KohaDates %]
92 [% Branches.GetName( patron_message.branchcode ) %]
93 [% IF patron_message.manager_id %]
94 ( <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% patron_message.manager_id %]">[% patron_message.get_column('manager_firstname') %] [% patron_message.get_column('manager_surname') %]</a> )
96 <i>"[% patron_message.message | html %]"</i>
98 [% IF patron_message.branchcode == branchcode OR Koha.Preference('AllowAllMessageDeletion') %]
99 <a class="btn btn-link btn-sm" href="/cgi-bin/koha/circ/del_message.pl?message_id=[% patron_message.message_id %]&borrowernumber=[% patron_message.borrowernumber %]&from=moremember" onclick="return confirm(MSG_CONFIRM_DELETE_MESSAGE);"><i class="fa fa-trash"></i> Delete</a>
104 <a id="addnewmessageLabel" href="#add_message_form" class="btn btn-link btn-sm" data-toggle="modal"><i class="fa fa-plus"></i> Add a new message</a>
109 <div id="circmessages" class="circmessage attention">
111 [% IF ( userdebarred ) %]
112 <li class="blocker">Patron's account is restricted
113 [% IF ( userdebarreddate ) %]
114 until [% userdebarreddate %]
117 [% IF ( debarredcomment ) %]
118 with the explanation: <i>
119 [% IF debarredcomment.search('OVERDUES_PROCESS') %]
120 Restriction added by overdues process [% debarredcomment.remove('OVERDUES_PROCESS ') | html_line_break %]
122 [% debarredcomment | html_line_break %]
126 <a href="#reldebarments" id="view_restrictions">View restrictions</a>
129 [% IF ( patron.gonenoaddress ) %]
130 <li class="blocker">Patron's address is in doubt.</li>
133 <li class="blocker">Patron's card has been reported lost.</li>
141 [% patron.title | html %] [% patron.firstname | html %]
143 [% patron.surname | html %] ([% patron.cardnumber | html %])
145 <div class="yui-u first">
147 <div id="patron-information" class="patroninfo-section">
149 <div class="patroninfo-heading">
150 <h3>Contact information</h3>
151 [% IF ( guarantor.borrowernumber ) %]
152 <a class="btn btn-default btn-xs" href="memberentry.pl?op=modify&borrowernumber=[% patron.borrowernumber %]&step=1&guarantorid=[% guarantor.borrowernumber %]"><i class="fa fa-pencil"></i> Edit</a>
154 <a class="btn btn-default btn-xs" href="memberentry.pl?op=modify&borrowernumber=[% patron.borrowernumber %]&step=1"><i class="fa fa-pencil"></i> Edit</a>
158 [% IF ( patron.othernames ) %]“[% patron.othernames | html %]”[% END %]
160 <div class="address">
162 [% IF Koha.Preference( 'AddressFormat' ) %]
163 [% INCLUDE "member-display-address-style-${ Koha.Preference( 'AddressFormat' ) }.inc" %]
165 [% INCLUDE 'member-display-address-style-us.inc' %]
172 [% IF ( patron.phone ) %]
174 <span class="label">Primary phone: </span>
175 <a href="tel:[% patron.phone %]">[% patron.phone | html %]</a>
178 [% IF ( patron.phonepro ) %]
180 <span class="label">Secondary phone: </span>
181 <a href="tel:[% patron.phonepro %]">[% patron.phonepro | html %]</a>
184 [% IF ( patron.mobile ) %]
186 <span class="label">Other phone: </span>
187 <a href="tel:[% patron.mobile %]">[% patron.mobile | html %]</a>
190 [% IF ( patron.fax ) %]
192 <span class="label">Fax: </span>
193 [% patron.fax |html %]
196 [% IF ( patron.email ) %]
198 <span class="label">Primary email:</span>
199 <a title="[% patron.email %]" href="mailto:[% patron.email | url %]">[% patron.email | html %]</a>
202 [% IF ( patron.emailpro ) %]
204 <span class="label">Secondary email: </span>
205 <a title="[% patron.emailpro %]" href="mailto:[% patron.emailpro | url %]">[% patron.emailpro | html %]</a>
209 [% IF ( patron.initials ) %]
211 <span class="label">Initials: </span>
212 [% patron.initials | html %]
215 [% IF ( patron.dateofbirth ) %]
217 <span class="label">Date of birth:</span>
218 [% patron.dateofbirth | $KohaDates %] ([% age %] years)
221 [% IF ( patron.sex ) %]
223 <span class="label">Gender:</span>
224 [% IF ( patron.sex == 'F' ) %]Female[% ELSIF ( patron.sex == 'M' ) %]Male[% ELSE %][% patron.sex %][% END %]
230 <span class="label">Guarantees:</span>
232 [% FOREACH guarantee IN guarantees %]
233 [% IF logged_in_user.can_see_patron_infos( guarantee ) %]
234 <li><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% guarantee.borrowernumber %]">[% guarantee.firstname | html %] [% guarantee.surname | html %]</a></li>
236 <li>[% guarantee.firstname | html %] [% guarantee.surname | html %]</li>
241 [% ELSIF guarantor %]
243 <span class="label">Guarantor:</span>
244 [% IF guarantor.borrowernumber AND logged_in_user.can_see_patron_infos( guarantor ) %]
245 <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% guarantor.borrowernumber %]">[% guarantor.firstname | html %] [% guarantor.surname | html %]</a>
247 [% guarantor.firstname | html %] [% guarantor.surname | html %]
252 </div> [% # /div.rows %]
253 </div> [% # /div#patron-information %]
255 [% IF ( patronimages ) %]
256 [% IF ( CAN_user_tools_batch_upload_patron_images ) %]
257 <div id="manage-patron-image" class="patroninfo-section">
258 [% IF ( patron.image ) %]
259 <div class="patroninfo-heading">
260 <h3>Manage patron image</h3>
261 <a class="btn btn-default btn-xs" id="show-picture-upload" href="#"><i class="fa fa-pencil"></i> Edit</a>
264 <div class="patroninfo-heading">
265 <h3>Upload patron image</h3>
266 <a class="btn btn-default btn-xs" id="show-picture-upload" href="#"><i class="fa fa-plus"></i> Add</a>
269 <form method="post" id="picture-upload" style="display:none;" action="/cgi-bin/koha/tools/picture-upload.pl" enctype="multipart/form-data">
270 [% IF ( patron.image ) %]
271 <div class="hint">To update the image for [% patron.title | html %] [% patron.surname | html %], select a new image file and click 'Upload.' <br />Click the 'Delete' button to remove the current image.</div>
273 <div class="hint">[% patron.title %] [% patron.firstname | html %] [% patron.surname | html %] does not currently have an image available. To import an image for [% patron.title %] [% patron.surname | html %], enter the name of an image file to upload.</div>
275 <p>Only PNG, GIF, JPEG, XPM formats are supported.</p>
276 <label for="uploadfile">Select the file to upload: </label>
277 <input type="file" id="uploadfile" name="uploadfile" required="required" />
279 <input type="hidden" name="csrf_token" value="[% csrf_token %]" />
280 <input type="hidden" id="image" name="filetype" value="image" />
281 <input type="hidden" id="cardnumber" name="cardnumber" value="[% patron.cardnumber | html %]" />
282 <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber %]" />
283 <button type="submit" class="btn btn-default btn-xs"><i class="fa fa-upload"></i> Upload</button>
284 <input name="op" type="hidden" value="Upload" />
285 [% IF ( patron.image ) %]
286 <a id="delpicture" href="/cgi-bin/koha/tools/picture-upload.pl?op=Delete&borrowernumber=[% patron.borrowernumber %]&csrf_token=[% csrf_token %]" class="btn btn-default btn-xs delete"><i class="fa fa-trash"></i> Delete</a>
288 <a href="#" id="cancel-picture-upload" class="cancel">Cancel</a>
291 </div> [% # /div#manage-patron-image %]
295 [% IF Koha.Preference('HouseboundModule') %]
296 <div id="houseboundroles" class="patroninfo-section">
297 [% IF ( housebound_role.housebound_chooser == 1 OR housebound_role.housebound_deliverer == 1 ) %]
298 <div class="patroninfo-heading">
299 <h3>Housebound roles</h3>
300 <a class="btn btn-default btn-xs" href="memberentry.pl?op=modify&borrowernumber=[% patron.borrowernumber %]&step=4"><i class="fa fa-pencil"></i> Edit</a>
305 <span class="label">Chooser:</span>
306 [% IF ( housebound_role.housebound_chooser == 1 ) %]
313 <span class="label">Deliverer:</span>
314 [% IF ( housebound_role.housebound_deliverer == 1 ) %]
323 <div class="patroninfo-heading">
324 <h3>Housebound roles</h3>
325 <a class="btn btn-default btn-xs" href="memberentry.pl?op=modify&borrowernumber=[% patron.borrowernumber %]&step=7"><i class="fa fa-plus"></i> Add</a>
328 </div> [% #/ div#houseboundroles %]
331 [% IF ( ExtendedPatronAttributes ) %]
332 [% UNLESS ( no_patron_attribute_types ) %]
333 <div id="patron-extended-attributes" class="patroninfo-section">
334 [% IF ( attributes_loop ) %]
335 <div class="patroninfo-heading">
336 <h3>Additional attributes and identifiers</h3>
337 <a class="btn btn-default btn-xs" href="memberentry.pl?op=modify&borrowernumber=[% patron.borrowernumber %]&step=4"><i class="fa fa-pencil"></i> Edit</a>
339 [% FOREACH attribute IN attributes_loop %]
340 [% IF attribute.class %]
341 <div id="aai_[% attribute.class %]" class="rows">
343 <div id="aai" class="rows">
345 <h4>[% attribute.lib %]</h4>
347 [% FOREACH item IN attribute.items %]
349 <span class="label">[% item.description %]: </span>
350 [% IF ( item.value_description ) %]
351 [% item.value_description %]
353 [% item.value| html_line_break %]
363 <div class="patroninfo-heading">
364 <h3>Additional attributes and identifiers</h3>
365 <a class="btn btn-default btn-xs" href="memberentry.pl?op=modify&borrowernumber=[% patron.borrowernumber %]&step=4"><i class="fa fa-plus"></i> Add</a>
368 </div> [% # /div#patron-extended-attributes %]
372 [% IF ( EnhancedMessagingPreferences ) %]
373 <div id="patron-messaging-prefs" class="patroninfo-section">
374 <div class="patroninfo-heading">
375 <h3>Patron messaging preferences</h3>
376 <a class="btn btn-default btn-xs" href="memberentry.pl?op=modify&borrowernumber=[% patron.borrowernumber %]&step=5"><i class="fa fa-pencil"></i> Edit</a>
378 [% INCLUDE 'messaging-preference-form.inc' %]
379 [% IF ( SMSSendDriver ) %]
383 <span class="label">SMS number:</span>
384 <a href="sms:[% patron.smsalertnumber %]">[% patron.smsalertnumber %]</a>
389 </div> [% # /div#patron-messaging-prefs %]
392 </div> [% # /div.yui-u.first %]
395 <div id="patron-library-details" class="patroninfo-section">
396 <div class="patroninfo-heading">
398 <a class="btn btn-default btn-xs" href="memberentry.pl?op=modify&borrowernumber=[% patron.borrowernumber %]&step=3"><i class="fa fa-pencil"></i> Edit</a>
403 <span class="label">Card number: </span>
404 [% patron.cardnumber %]
407 <span class="label">Borrowernumber: </span>
408 [% patron.borrowernumber %]
411 <span class="label">Category: </span>
412 [% patron.category.description %] ([% patron.categorycode %])
415 <span class="label">Registration date: </span>
416 [% patron.dateenrolled | $KohaDates %]
419 [% IF ( patron.date_renewed ) %]
421 <span class="label">Renewal date: </span>
422 [% patron.date_renewed | $KohaDates %]
427 <span class="label">Expiration date: </span>
428 [% IF ( was_renewed ) %]
429 <strong class="reregistrinfo">[% patron.dateexpiry | $KohaDates %]</strong>
431 [% patron.dateexpiry | $KohaDates %]
435 <span class="label">Library: </span>
439 [% IF ( OPACPrivacy ) %]
441 <span class="label">Privacy Pref:</span>
442 [% IF ( privacy0 ) %]Forever[% END %]
443 [% IF ( privacy1 ) %]Default[% END %]
444 [% IF ( privacy2 ) %]Never[% END %]
449 <span class="label">Show checkouts to guarantor</span>
450 [% IF privacy_guarantor_checkouts %]
457 [% IF ( patron.sort1 ) %]
459 <span class="label">Sort field 1:</span>
460 [% AuthorisedValues.GetByCode('Bsort1', patron.sort1) |html %]
463 [% IF ( patron.sort2 ) %]
465 <span class="label">Sort field 2:</span>
466 [% AuthorisedValues.GetByCode('Bsort2', patron.sort2) |html %]
470 <span class="label">Username: </span>
471 [% patron.userid |html %]
474 <span class="label">Password: </span>
475 [% IF ( patron.password ) %]
478 <span class="problem"><a href="/cgi-bin/koha/members/member-password.pl?member=[% patron.borrowernumber %]">Undefined</a></span>
482 [% IF ( patron.borrowernotes ) %]
484 <span class="label">Circulation note: </span>
485 [% patron.borrowernotes |html %]
489 [% IF ( patron.opacnote ) %]
491 <span class="label">OPAC note:</span>
492 [% patron.opacnote |html %]
496 [% IF Koha.Preference( 'NorwegianPatronDBEnable' ) == 1 %]
497 [% IF ( sync == 1 ) %]
499 <span class="label">Activate sync: </span>
502 [% IF ( syncstatus ) %]
504 <span class="label">Sync status: </span>
508 [% IF ( lastsync ) %]
510 <span class="label">Last sync: </span>
511 [% lastsync | $KohaDates %]
516 <span class="label">Activate sync: </span>
522 [% IF ( Koha.Preference('CheckPrevCheckout') == 'softyes' || Koha.Preference('CheckPrevCheckout') == 'softno' ) %]
524 <span class="label">Check previous checkouts: </span>
525 [% IF ( patron.checkprevcheckout == 'yes' ) %]
527 [% ELSIF ( patron.checkprevcheckout == 'no' ) %]
535 [% IF Koha.Preference('TranslateNotices') %]
537 <span class="label">Preferred language for notices: </span>
538 [% translated_language %]
542 </div> [% # /div.rows %]
543 </div> [% # /div#patron-library-details %]
545 <div id="patron-alternate-address" class="patroninfo-section">
546 [% IF ( patron.B_phone || patron.B_email || patron.contactnote || patron.B_address || patron.B_address2 || patron.B_city || patron.B_zipcode || patron.B_country ) %]
547 <div class="patroninfo-heading">
548 <h3>Alternate address</h3>
549 <a class="btn btn-default btn-xs" href="memberentry.pl?op=modify&borrowernumber=[% patron.borrowernumber %]&step=6"><i class="fa fa-pencil"></i> Edit</a>
551 <div class="address">
553 [% IF Koha.Preference( 'AddressFormat' ) %]
554 [% INCLUDE "member-display-alt-address-style-${ Koha.Preference( 'AddressFormat' ) }.inc" %]
556 [% INCLUDE 'member-display-alt-address-style-us.inc' %]
562 [% IF ( patron.B_phone ) %]
564 <span class="label">Phone: </span>
565 <a href="tel:[% patron.B_phone %]">[% patron.B_phone |html %]</a>
569 [% IF ( patron.B_email ) %]
571 <span class="label">Email: </span>
572 <a title="[% patron.B_email %]" href="mailto:[% patron.B_email | url %]">[% B_email |html %]</a>
576 [% IF ( patron.contactnote ) %]
578 <span class="label">Contact note: </span>
579 [% patron.contactnote |html %]
585 <div class="patroninfo-heading">
586 <h3 class="inline">Alternate address</h3>
587 <a class="btn btn-default btn-xs" href="memberentry.pl?op=modify&borrowernumber=[% patron.borrowernumber %]&step=6"><i class="fa fa-plus"></i> Add</a>
590 </div> [% # /div#patron-alternate-address %]
592 <div id="patron-alternative-contact" class="patroninfo-section">
593 [% IF ( patron.altcontactsurname || patron.altcontactfirstname || patron.altcontactaddress1 || patron.altcontactaddress2 || patron.altcontactaddress3 || patron.altcontactstate || patron.altcontactzipcode || patron.altcontactcountry || patron.altcontactphone ) %]
594 <div class="patroninfo-heading">
595 <h3>Alternative contact</h3>
596 <a class="btn btn-default btn-xs" href="memberentry.pl?op=modify&borrowernumber=[% patron.borrowernumber %]&step=2"><i class="fa fa-pencil"></i> Edit</a>
600 [% IF ( patron.altcontactsurname ) %]
602 <span class="label">Surname: </span>
603 [% patron.altcontactsurname | html %]
606 [% IF ( patron.altcontactfirstname ) %]
608 <span class="label">First name: </span>
609 [% patron.altcontactfirstname | html %]
612 [% IF ( patron.altcontactaddress1 ) %]
614 <span class="label">Address: </span>
615 [% patron.altcontactaddress1 | html %]
618 [% IF ( patron.altcontactaddress2 ) %]
620 <span class="label">Address 2: </span>
621 [% patron.altcontactaddress2 | html %]
624 [% IF ( patron.altcontactaddress3 ) %]
626 <span class="label">City: </span>
627 [% patron.altcontactaddress3 | html %]
631 [% IF ( patron.altcontactstate ) %]
633 <span class="label">State: </span>
634 [% patron.altcontactstate | html %]
637 [% IF ( patron.altcontactzipcode ) %]
639 <span class="label">ZIP/Postal code: </span>
640 [% patron.altcontactzipcode | html %]
643 [% IF ( patron.altcontactcountry ) %]
645 <span class="label">Country: </span>
646 [% patron.altcontactcountry | html %]
649 [% IF ( patron.altcontactphone ) %]
651 <span class="label">Phone: </span>
652 <a href="tel:[% patron.altcontactphone | url %]">[% patron.altcontactphone | html %]</a>
656 </div> [% # /div.rows %]
658 <div class="patroninfo-heading">
659 <h3>Alternative contact</h3>
660 <a class="btn btn-default btn-xs" href="memberentry.pl?op=modify&borrowernumber=[% patron.borrowernumber %]&step=2"><i class="fa fa-plus"></i> Add</a>
663 </div> [% # /div#patron-alternative-contact %]
664 </div> [% # /div.yui-u %]
665 </div> [% # /div.yui-g %]
667 <div id="finesholdsissues" class="toptabs">
670 <a href="#checkouts">[% issuecount %] Checkout(s)</a>
672 [% IF relatives_issues_count %]
674 <a href="#relatives-issues" id="relatives-issues-tab">Relatives' checkouts</a>
678 <a href="#finesandcharges">Fines & Charges</a>
680 [% IF ( CAN_user_circulate_circulate_remaining_permissions ) %]
682 [% IF ( holds_count ) %]
683 <a href="#reserves" id="holds-tab">[% holds_count %] Hold(s)</a>
685 <a href="#reserves" id="holds-tab">0 Holds</a>
689 [% IF Koha.Preference('ArticleRequests') %]
691 <a href="#article-requests" id="article-requests-tab"> [% patron.article_requests_current.count %] Article requests</a>
695 <a id="debarments-tab-link" href="#reldebarments">[% debarments.size %] Restrictions</a>
697 [% SET enrollments = patron.get_club_enrollments(1) %]
698 [% SET enrollable = patron.get_enrollable_clubs(0,1) %]
699 [% IF CAN_user_clubs && ( enrollable.count || enrollments.count ) %]
701 <a id="clubs-tab-link" href="#clubs-tab">
702 Clubs ([% enrollments.count %]/[% enrollable.count %])
708 [% INCLUDE "checkouts-table.inc" %]
710 [% IF ( relatives_issues_count ) %]
711 <div id="relatives-issues">
712 <table id="relatives-issues-table" style="width: 100% !Important;">
715 <th scope="col">Due date hidden not formatted</th>
716 <th scope="col">Due date</th>
717 <th scope="col">Title</th>
718 <th scope="col">Item type</th>
719 <th scope="col">Location</th>
720 <th scope="col">Checked out on</th>
721 <th scope="col">Checked out from</th>
722 <th scope="col">Call no</th>
723 <th scope="col">Charge</th>
724 <th scope="col">Fine</th>
725 <th scope="col">Price</th>
726 <th scope="col">Patron</th>
733 <div id="finesandcharges">
734 [% IF ( totaldue_raw ) %]
735 <p>Total due: [% totaldue %]</p>
737 <p>No outstanding charges</p>
741 [% IF CAN_user_clubs && ( enrollments.count || enrollable.count ) %]
747 [% INCLUDE borrower_debarments.inc %]
749 [% IF ( CAN_user_circulate_circulate_remaining_permissions ) %]
751 [% IF ( holds_count ) %]
752 <form action="/cgi-bin/koha/reserve/modrequest.pl" method="post">
753 <input type="hidden" name="from" value="circ" />
754 <table id="holds-table" style="width: 100% !Important;">
770 <fieldset class="action">
771 <input type="submit" class="cancel" name="submit" value="Cancel marked holds" />
775 [% IF Koha.Preference('SuspendHoldsIntranet') %]
776 <form action="/cgi-bin/koha/reserve/modrequest_suspendall.pl" method="post">
777 <fieldset class="action">
778 <input type="hidden" name="from" value="borrower" />
779 <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber %]" />
780 <input type="submit" value="Suspend all holds" />
782 [% IF Koha.Preference('AutoResumeSuspendedHolds') %]
783 <label for="suspend_until">until</label>
784 <input type="text" size="10" id="suspend_until" name="suspend_until" class="datepicker"/>
785 <span class="hint">Specify date on which to resume [% INCLUDE 'date-format.inc' %]: </span>
790 <form action="/cgi-bin/koha/reserve/modrequest_suspendall.pl" method="post">
791 <fieldset class="action">
792 <input type="hidden" name="from" value="borrower" />
793 <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber %]" />
794 <input type="hidden" name="suspend" value="0" />
795 <input type="submit" value="Resume all suspended holds" />
798 [% END # IF SuspendHoldsIntranet %]
801 <p>Patron has nothing on hold.</p>
803 </div> [% # /div#reserves %]
806 [% IF Koha.Preference('ArticleRequests') %]
807 [% INCLUDE 'patron-article-requests.inc' %]
810 </div> [% # /div#finesholdsissues %]
811 </div> [% # /div.yui-b %]
812 </div> [% # /div#yui-main %]
815 [% INCLUDE 'circ-menu.inc' %]
817 </div> [% # /div#bd %]
819 [% MACRO jsinclude BLOCK %]
820 [% INCLUDE 'datatables.inc' %]
821 [% INCLUDE 'columns_settings.inc' %]
822 [% INCLUDE 'strings.inc' %]
823 [% INCLUDE 'calendar.inc' %]
824 [% Asset.js("lib/jquery/plugins/jquery.checkboxes.min.js") %]
825 [% Asset.js("lib/jquery/plugins/jquery-ui-timepicker-addon.min.js") %]
826 [% INCLUDE 'timepicker.inc' %]
827 [% Asset.js("lib/jquery/plugins/jquery.dataTables.rowGrouping.js") %]
828 [% Asset.js("js/pages/circulation.js") %]
829 [% Asset.js("js/checkouts.js") %]
830 [% Asset.js("js/holds.js") %]
831 [% Asset.js("js/members-menu.js") %]
832 [% Asset.js("js/messaging-preference-form.js") %]
834 /* Set some variable needed in circulation.js */
835 var interface = "[% interface %]";
836 var theme = "[% theme %]";
837 var borrowernumber = "[% patron.borrowernumber %]";
838 var branchcode = "[% Branches.GetLoggedInBranchcode() %]";
839 var exports_enabled = "[% Koha.Preference('ExportCircHistory') %]";
840 var AllowCirculate = [% (CAN_user_circulate_circulate_remaining_permissions)? 1 : 0 %]
841 var AllowRenewalLimitOverride = [% (CAN_user_circulate_override_renewals && Koha.Preference('AllowRenewalLimitOverride') )? 1: 0 %];
842 var script = "moremember";
843 var relatives_borrowernumbers = new Array();
844 [% FOREACH b IN relatives_borrowernumbers %]
845 relatives_borrowernumbers.push("[% b %]");
848 var MSG_EXPORT_SELECT_CHECKOUTS = _("You must select checkout(s) to export");
849 var MSG_CONFIRM_DELETE_MESSAGE = _("Are you sure you want to delete this message? This cannot be undone.");
851 columns_settings = [% ColumnsSettings.GetColumns( 'members', 'moremember', 'issues-table', 'json' ) %]
853 $(document).ready(function() {
854 if ( $('#clubs-tab').length ) {
855 $('#clubs-tab-link').on('click', function() {
856 $('#clubs-tab').text(_("Loading..."));
857 $('#clubs-tab').load('/cgi-bin/koha/clubs/patron-clubs-tab.pl?borrowernumber=[% borrowernumber %]');
861 $('#finesholdsissues').tabs({
862 // Correct table sizing for tables hidden in tabs
863 // http://www.datatables.net/examples/api/tabs_and_scrolling.html
864 "show": function(event, ui) {
865 var oTable = $('div.dataTables_wrapper>table', ui.panel).dataTable();
866 if ( oTable.length > 0 ) {
867 oTable.fnAdjustColumnSizing();
870 "activate": function( event, ui ) {
871 $('#'+ui.newTab.context.id).click();
874 $("#holdst").dataTable($.extend(true, {}, dataTablesDefaults, {
877 { "aTargets": [ -1,-2 ], "bSortable": false, "bSearchable": false }
880 { "sType": "title-string" },{ "sType": "anti-the" },null,null,null,null,null,null
884 [% IF ( patron.image ) %]
885 $('#delpicture').click(function(){
886 return confirm(_("Are you sure you want to delete this patron image? This cannot be undone."));
888 $('#manage-patron-image').find("input[value*=Upload]").click(function(){
889 if($("#uploadfile").val() == ""){
890 alert(_("Please choose a file to upload"));
893 return confirm(_("Are you sure you want to replace the current patron image? This cannot be undone."));
897 $("#suspend_until").datepicker({
898 onClose: function(dateText, inst) {
899 validate_date(dateText, inst);
901 minDate: 1, // require that hold suspended until date is after today
902 }).on("change", function(e, value) {
903 if ( ! is_valid_date( $(this).val() ) ) {$(this).val("");}
906 $("#view_restrictions").on("click",function(){
907 $('#debarments-tab-link').click();
910 $("#show-picture-upload").on("click", function(e){
913 $("#picture-upload").toggle();
916 $("#cancel-picture-upload").on("click", function(e){
918 $("#picture-upload, #show-picture-upload").toggle();
922 function uncheck_sibling(me){
923 nodename=me.getAttribute("name");
924 if (nodename =="barcodes[]"){
925 var Node=me.parentNode.previousSibling;
926 while (Node.nodeName!="TD"){Node=Node.previousSibling}
927 var Nodes=Node.childNodes;
928 for (var i=0;i < Nodes.length;i++){
929 if (Nodes[i].nodeName=="INPUT" && Nodes[i].getAttribute("type")=="checkbox"){
930 Nodes[i].checked=false;
934 var Node=me.parentNode.nextSibling;
935 while (Node.nodeName!="TD"){Node=Node.nextSibling}
936 var Nodes=Node.childNodes;
937 for (var i=0;i<Nodes.length;i++){
938 if (Nodes[i].nodeName=="INPUT" && Nodes[i].getAttribute("type")=="checkbox"){
939 Nodes[i].checked=false;
945 function validate1(date) {
946 var today = new Date();
947 if ( date < today ) {
956 [% INCLUDE 'intranet-bottom.inc' %]