|
Lines 472-480
Link Here
|
| 472 |
[% SET embed = ['extended_attributes','library'] %] |
472 |
[% SET embed = ['extended_attributes','library'] %] |
| 473 |
let table_node = $("#[% table_id | html %]"); |
473 |
let table_node = $("#[% table_id | html %]"); |
| 474 |
patrons_table = table_node.kohaTable({ |
474 |
patrons_table = table_node.kohaTable({ |
| 475 |
"ajax": { |
475 |
ajax: { |
| 476 |
"url": patron_search_url, |
476 |
url: patron_search_url, |
| 477 |
"dataSrc": function ( json ) { |
477 |
dataSrc: function ( json ) { |
| 478 |
[% IF redirect_if_one_result %] |
478 |
[% IF redirect_if_one_result %] |
| 479 |
// redirect if there is only 1 result. |
479 |
// redirect if there is only 1 result. |
| 480 |
// Do not redirect if state has been loaded |
480 |
// Do not redirect if state has been loaded |
|
Lines 492-498
Link Here
|
| 492 |
} |
492 |
} |
| 493 |
}, |
493 |
}, |
| 494 |
[% IF open_on_row_click OR preview_on_name_click OR remember_selections %] |
494 |
[% IF open_on_row_click OR preview_on_name_click OR remember_selections %] |
| 495 |
"drawCallback": function( settings ) { |
495 |
drawCallback: function( settings ) { |
| 496 |
var api = this.api(); |
496 |
var api = this.api(); |
| 497 |
var data = api.data(); |
497 |
var data = api.data(); |
| 498 |
if ( data.length == 0 ) return; |
498 |
if ( data.length == 0 ) return; |
|
Lines 516-523
Link Here
|
| 516 |
[% END %] |
516 |
[% END %] |
| 517 |
}, |
517 |
}, |
| 518 |
[% END %] |
518 |
[% END %] |
| 519 |
"deferLoading": defer_loading, |
519 |
deferLoading: defer_loading, |
| 520 |
"columns": [ |
520 |
columns: [ |
| 521 |
[% FOR column IN columns %] |
521 |
[% FOR column IN columns %] |
| 522 |
[% IF default_sort_column == column %] |
522 |
[% IF default_sort_column == column %] |
| 523 |
[% order_column_index = loop.count - 1%] |
523 |
[% order_column_index = loop.count - 1%] |
|
Lines 525-543
Link Here
|
| 525 |
[% SWITCH column %] |
525 |
[% SWITCH column %] |
| 526 |
[% CASE 'checkbox' %] |
526 |
[% CASE 'checkbox' %] |
| 527 |
{ |
527 |
{ |
| 528 |
"data": "patron_id", |
528 |
data: "patron_id", |
| 529 |
"searchable": false, |
529 |
searchable: false, |
| 530 |
"orderable": false, |
530 |
orderable: false, |
| 531 |
"render": function( data, type, row, meta ) { |
531 |
render: function( data, type, row, meta ) { |
| 532 |
return "<label for='check" + data + "' class='content_hidden'>" + _("Select patron") + "</label><input type='checkbox' class='check" + data + " selection' name='borrowernumber' value='" + data + "' />"; |
532 |
return "<label for='check" + data + "' class='content_hidden'>" + _("Select patron") + "</label><input type='checkbox' class='check" + data + " selection' name='borrowernumber' value='" + data + "' />"; |
| 533 |
} |
533 |
} |
| 534 |
} |
534 |
} |
| 535 |
[% CASE 'cardnumber' %] |
535 |
[% CASE 'cardnumber' %] |
| 536 |
{ |
536 |
{ |
| 537 |
"data": "cardnumber", |
537 |
data: "cardnumber", |
| 538 |
"searchable": true, |
538 |
searchable: true, |
| 539 |
"orderable": true, |
539 |
orderable: true, |
| 540 |
"render": function( data, type, row, meta ) { |
540 |
render: function( data, type, row, meta ) { |
| 541 |
let patron_id = encodeURIComponent(row.patron_id); |
541 |
let patron_id = encodeURIComponent(row.patron_id); |
| 542 |
[% IF !open_on_row_click AND CAN_user_circulate_circulate_remaining_permissions %] |
542 |
[% IF !open_on_row_click AND CAN_user_circulate_circulate_remaining_permissions %] |
| 543 |
return "<a href=\"/cgi-bin/koha/circ/circulation.pl?borrowernumber=" + patron_id + "\" title=\"[% I18N.t("Check out") | html %]\" class=\"patron_name\" data-borrowernumber=\"" + patron_id + "\" style=\"white-space:nowrap\">" + escape_str(data) + "</a>"; |
543 |
return "<a href=\"/cgi-bin/koha/circ/circulation.pl?borrowernumber=" + patron_id + "\" title=\"[% I18N.t("Check out") | html %]\" class=\"patron_name\" data-borrowernumber=\"" + patron_id + "\" style=\"white-space:nowrap\">" + escape_str(data) + "</a>"; |
|
Lines 549-568
Link Here
|
| 549 |
} |
549 |
} |
| 550 |
[% CASE 'dateofbirth' %] |
550 |
[% CASE 'dateofbirth' %] |
| 551 |
{ |
551 |
{ |
| 552 |
"data": "date_of_birth", |
552 |
data: "date_of_birth", |
| 553 |
"type": "date", |
553 |
type: "date", |
| 554 |
"searchable": true, |
554 |
searchable: true, |
| 555 |
"orderable": true, |
555 |
orderable: true, |
| 556 |
"render": function( data, type, row, meta ) { |
556 |
render: function( data, type, row, meta ) { |
| 557 |
return data ? "<span class=\"dateofbirth\">" + escape_str($date(data)) + "<span class=\"agehint\"> (" + _("%s years").format($get_age(data)) + ")</span></span>" : ""; |
557 |
return data ? "<span class=\"dateofbirth\">" + escape_str($date(data)) + "<span class=\"agehint\"> (" + _("%s years").format($get_age(data)) + ")</span></span>" : ""; |
| 558 |
} |
558 |
} |
| 559 |
} |
559 |
} |
| 560 |
[% CASE 'address' %] |
560 |
[% CASE 'address' %] |
| 561 |
{ |
561 |
{ |
| 562 |
"data": "me.street_number:me.address:me.address2:me.city:me.state:me.postal_code:me.country", |
562 |
data: "me.street_number:me.address:me.address2:me.city:me.state:me.postal_code:me.country", |
| 563 |
"searchable": true, |
563 |
searchable: true, |
| 564 |
"orderable": true, |
564 |
orderable: true, |
| 565 |
"render": function( data, type, row, meta ) { |
565 |
render: function( data, type, row, meta ) { |
| 566 |
let r = '<div class="address"><ul>'; |
566 |
let r = '<div class="address"><ul>'; |
| 567 |
r += $format_address(row, { no_line_break: true, include_li: true }); |
567 |
r += $format_address(row, { no_line_break: true, include_li: true }); |
| 568 |
r += '</div></ul>'; |
568 |
r += '</div></ul>'; |
|
Lines 571-580
Link Here
|
| 571 |
} |
571 |
} |
| 572 |
[% CASE 'address-library' %] |
572 |
[% CASE 'address-library' %] |
| 573 |
{ |
573 |
{ |
| 574 |
"data": "me.street_number:me.address:me.address2:me.city:me.state:me.postal_code:me.country", |
574 |
data: "me.street_number:me.address:me.address2:me.city:me.state:me.postal_code:me.country", |
| 575 |
"searchable": true, |
575 |
searchable: true, |
| 576 |
"orderable": true, |
576 |
orderable: true, |
| 577 |
"render": function( data, type, row, meta ) { |
577 |
render: function( data, type, row, meta ) { |
| 578 |
let r = '<div class="address"><ul>'; |
578 |
let r = '<div class="address"><ul>'; |
| 579 |
r += $format_address(row, { no_line_break: true, include_li: true }); |
579 |
r += $format_address(row, { no_line_break: true, include_li: true }); |
| 580 |
r += '</div></ul>'; |
580 |
r += '</div></ul>'; |
|
Lines 584-593
Link Here
|
| 584 |
} |
584 |
} |
| 585 |
[% CASE 'name-address' %] |
585 |
[% CASE 'name-address' %] |
| 586 |
{ |
586 |
{ |
| 587 |
"data": "me.surname:me.preferred_name:me.firstname:me.middle_name:me.othernames:me.street_number:me.address:me.address2:me.city:me.state:me.postal_code:me.country", |
587 |
data: "me.surname:me.preferred_name:me.firstname:me.middle_name:me.othernames:me.street_number:me.address:me.address2:me.city:me.state:me.postal_code:me.country", |
| 588 |
"searchable": true, |
588 |
searchable: true, |
| 589 |
"orderable": true, |
589 |
orderable: true, |
| 590 |
"render": function( data, type, row, meta ) { |
590 |
render: function( data, type, row, meta ) { |
| 591 |
let patron_id = encodeURIComponent(row.patron_id); |
591 |
let patron_id = encodeURIComponent(row.patron_id); |
| 592 |
let r = ''; |
592 |
let r = ''; |
| 593 |
[% IF ! open_on_row_click %] |
593 |
[% IF ! open_on_row_click %] |
|
Lines 610-619
Link Here
|
| 610 |
} |
610 |
} |
| 611 |
[% CASE 'name' %] |
611 |
[% CASE 'name' %] |
| 612 |
{ |
612 |
{ |
| 613 |
"data": "me.surname:me.preferred_name:me.firstname:me.middle_name:me.othernames", |
613 |
data: "me.surname:me.preferred_name:me.firstname:me.middle_name:me.othernames", |
| 614 |
"searchable": true, |
614 |
searchable: true, |
| 615 |
"orderable": true, |
615 |
orderable: true, |
| 616 |
"render": function( data, type, row, meta ) { |
616 |
render: function( data, type, row, meta ) { |
| 617 |
let patron_id = encodeURIComponent(row.patron_id); |
617 |
let patron_id = encodeURIComponent(row.patron_id); |
| 618 |
[% IF ! open_on_row_click %] |
618 |
[% IF ! open_on_row_click %] |
| 619 |
return "<a href=\"/cgi-bin/koha/members/moremember.pl?borrowernumber=" + patron_id + "\" class=\"patron_name\" data-borrowernumber=\"" + patron_id + "\" style=\"white-space:nowrap\">" + $patron_to_html(row, { invert_name: 1 }) + "</a>"; |
619 |
return "<a href=\"/cgi-bin/koha/members/moremember.pl?borrowernumber=" + patron_id + "\" class=\"patron_name\" data-borrowernumber=\"" + patron_id + "\" style=\"white-space:nowrap\">" + $patron_to_html(row, { invert_name: 1 }) + "</a>"; |
|
Lines 650-685
Link Here
|
| 650 |
} |
650 |
} |
| 651 |
[% CASE 'dateexpiry' %] |
651 |
[% CASE 'dateexpiry' %] |
| 652 |
{ |
652 |
{ |
| 653 |
"data": "expiry_date", |
653 |
data: "expiry_date", |
| 654 |
"type": "date", |
654 |
type: "date", |
| 655 |
"searchable": true, |
655 |
searchable: true, |
| 656 |
"orderable": true, |
656 |
orderable: true, |
| 657 |
"render": function( data, type, row, meta ) { |
657 |
render: function( data, type, row, meta ) { |
| 658 |
return "<span class=\"dateexpiry" + (new Date(data) < new Date() ? ' expired' : '') + "\">" + (data ? escape_str($date(data)) : '') + "</span>"; |
658 |
return "<span class=\"dateexpiry" + (new Date(data) < new Date() ? ' expired' : '') + "\">" + (data ? escape_str($date(data)) : '') + "</span>"; |
| 659 |
} |
659 |
} |
| 660 |
} |
660 |
} |
| 661 |
[% CASE 'borrowernotes' %] |
661 |
[% CASE 'borrowernotes' %] |
| 662 |
{ |
662 |
{ |
| 663 |
"data": "staff_notes", |
663 |
data: "staff_notes", |
| 664 |
"searchable": true, |
664 |
searchable: true, |
| 665 |
"orderable": true, |
665 |
orderable: true, |
| 666 |
[%# We don't escape here, we allow html tag in staff notes %] |
666 |
[%# We don't escape here, we allow html tag in staff notes %] |
| 667 |
} |
667 |
} |
| 668 |
[% CASE 'phone' %] |
668 |
[% CASE 'phone' %] |
| 669 |
{ |
669 |
{ |
| 670 |
"data": "phone", |
670 |
data: "phone", |
| 671 |
"searchable": true, |
671 |
searchable: true, |
| 672 |
"orderable": true, |
672 |
orderable: true, |
| 673 |
"render": function( data, type, row, meta ) { |
673 |
render: function( data, type, row, meta ) { |
| 674 |
return escape_str(data); |
674 |
return escape_str(data); |
| 675 |
} |
675 |
} |
| 676 |
} |
676 |
} |
| 677 |
[% CASE 'checkouts' %][% embed.push('checkouts+count', 'overdues+count') %] |
677 |
[% CASE 'checkouts' %][% embed.push('checkouts+count', 'overdues+count') %] |
| 678 |
{ |
678 |
{ |
| 679 |
"data": "", |
679 |
data: "", |
| 680 |
"searchable": false, |
680 |
searchable: false, |
| 681 |
"orderable": false, |
681 |
orderable: false, |
| 682 |
"render": function( data, type, row, meta ) { |
682 |
render: function( data, type, row, meta ) { |
| 683 |
if ( row.overdues_count ) { |
683 |
if ( row.overdues_count ) { |
| 684 |
return "<span class='overdue'><strong>"+row.overdues_count + "</strong></span>" + " / " + row.checkouts_count; |
684 |
return "<span class='overdue'><strong>"+row.overdues_count + "</strong></span>" + " / " + row.checkouts_count; |
| 685 |
} else { |
685 |
} else { |
|
Lines 689-698
Link Here
|
| 689 |
} |
689 |
} |
| 690 |
[% CASE 'account_balance' %][% embed.push('account_balance') %] |
690 |
[% CASE 'account_balance' %][% embed.push('account_balance') %] |
| 691 |
{ |
691 |
{ |
| 692 |
"data": "", |
692 |
data: "", |
| 693 |
"searchable": false, |
693 |
searchable: false, |
| 694 |
"orderable": false, |
694 |
orderable: false, |
| 695 |
"render": function( data, type, row, meta ) { |
695 |
render: function( data, type, row, meta ) { |
| 696 |
let r = "<span style='text-align: right; display: block;'><a href=\"/cgi-bin/koha/members/boraccount.pl?borrowernumber="+row.patron_id+"\">"; |
696 |
let r = "<span style='text-align: right; display: block;'><a href=\"/cgi-bin/koha/members/boraccount.pl?borrowernumber="+row.patron_id+"\">"; |
| 697 |
let balance_str = row.account_balance || 0; |
697 |
let balance_str = row.account_balance || 0; |
| 698 |
balance_str = balance_str.escapeHtml().format_price(); |
698 |
balance_str = balance_str.escapeHtml().format_price(); |
|
Lines 743-749
Link Here
|
| 743 |
|
743 |
|
| 744 |
[% CASE 'action' %] |
744 |
[% CASE 'action' %] |
| 745 |
{ |
745 |
{ |
| 746 |
"data": function( row, type, val, meta ) { |
746 |
data: function( row, type, val, meta ) { |
| 747 |
|
747 |
|
| 748 |
let patron_id = encodeURIComponent(row.patron_id); |
748 |
let patron_id = encodeURIComponent(row.patron_id); |
| 749 |
let action_node = ""; |
749 |
let action_node = ""; |
|
Lines 771-791
Link Here
|
| 771 |
|
771 |
|
| 772 |
return action_node; |
772 |
return action_node; |
| 773 |
}, |
773 |
}, |
| 774 |
"searchable": false, |
774 |
searchable: false, |
| 775 |
"orderable": false |
775 |
orderable: false |
| 776 |
} |
776 |
} |
| 777 |
[% END %] |
777 |
[% END %] |
| 778 |
[% UNLESS loop.last %],[% END %] |
778 |
[% UNLESS loop.last %],[% END %] |
| 779 |
[% END %] |
779 |
[% END %] |
| 780 |
], |
780 |
], |
| 781 |
'embed': [% To.json(embed) | $raw %], |
781 |
embed: [% To.json(embed) | $raw %], |
| 782 |
"order": [[ [% order_column_index | html %], "asc" ]], |
782 |
order: [[ [% order_column_index | html %], "asc" ]], |
| 783 |
"autoWidth": false, |
783 |
autoWidth: false, |
| 784 |
'lengthMenu': [aLengthMenu, aLengthMenuLabel], |
784 |
lengthMenu: [aLengthMenu, aLengthMenuLabel], |
| 785 |
"pagingType": 'full_numbers', |
785 |
pagingType: 'full_numbers', |
| 786 |
"pageLength": [% Koha.Preference('PatronsPerPage') | html %], |
786 |
pageLength: [% Koha.Preference('PatronsPerPage') | html %], |
| 787 |
[% IF sticky_header %] |
787 |
[% IF sticky_header %] |
| 788 |
"initComplete": function(settings, json) { |
788 |
initComplete: function(settings, json) { |
| 789 |
$("#[% sticky_header | html %]").show(); |
789 |
$("#[% sticky_header | html %]").show(); |
| 790 |
}, |
790 |
}, |
| 791 |
[% END %] |
791 |
[% END %] |