Lines 476-484
Link Here
|
476 |
[% SET embed = ['extended_attributes','library'] %] |
476 |
[% SET embed = ['extended_attributes','library'] %] |
477 |
let table_node = $("#[% table_id | html %]"); |
477 |
let table_node = $("#[% table_id | html %]"); |
478 |
patrons_table = table_node.kohaTable({ |
478 |
patrons_table = table_node.kohaTable({ |
479 |
"ajax": { |
479 |
ajax: { |
480 |
"url": patron_search_url, |
480 |
url: patron_search_url, |
481 |
"dataSrc": function ( json ) { |
481 |
dataSrc: function ( json ) { |
482 |
[% IF redirect_if_one_result %] |
482 |
[% IF redirect_if_one_result %] |
483 |
// redirect if there is only 1 result. |
483 |
// redirect if there is only 1 result. |
484 |
// Do not redirect if state has been loaded |
484 |
// Do not redirect if state has been loaded |
Lines 496-502
Link Here
|
496 |
} |
496 |
} |
497 |
}, |
497 |
}, |
498 |
[% IF open_on_row_click OR preview_on_name_click OR remember_selections %] |
498 |
[% IF open_on_row_click OR preview_on_name_click OR remember_selections %] |
499 |
"drawCallback": function( settings ) { |
499 |
drawCallback: function( settings ) { |
500 |
var api = this.api(); |
500 |
var api = this.api(); |
501 |
var data = api.data(); |
501 |
var data = api.data(); |
502 |
if ( data.length == 0 ) return; |
502 |
if ( data.length == 0 ) return; |
Lines 520-527
Link Here
|
520 |
[% END %] |
520 |
[% END %] |
521 |
}, |
521 |
}, |
522 |
[% END %] |
522 |
[% END %] |
523 |
"deferLoading": defer_loading, |
523 |
deferLoading: defer_loading, |
524 |
"columns": [ |
524 |
columns: [ |
525 |
[% FOR column IN columns %] |
525 |
[% FOR column IN columns %] |
526 |
[% IF default_sort_column == column %] |
526 |
[% IF default_sort_column == column %] |
527 |
[% order_column_index = loop.count - 1%] |
527 |
[% order_column_index = loop.count - 1%] |
Lines 529-547
Link Here
|
529 |
[% SWITCH column %] |
529 |
[% SWITCH column %] |
530 |
[% CASE 'checkbox' %] |
530 |
[% CASE 'checkbox' %] |
531 |
{ |
531 |
{ |
532 |
"data": "patron_id", |
532 |
data: "patron_id", |
533 |
"searchable": false, |
533 |
searchable: false, |
534 |
"orderable": false, |
534 |
orderable: false, |
535 |
"render": function( data, type, row, meta ) { |
535 |
render: function( data, type, row, meta ) { |
536 |
return "<label for='check" + data + "' class='content_hidden'>" + _("Select patron") + "</label><input type='checkbox' class='check" + data + " selection' name='borrowernumber' value='" + data + "' />"; |
536 |
return "<label for='check" + data + "' class='content_hidden'>" + _("Select patron") + "</label><input type='checkbox' class='check" + data + " selection' name='borrowernumber' value='" + data + "' />"; |
537 |
} |
537 |
} |
538 |
} |
538 |
} |
539 |
[% CASE 'cardnumber' %] |
539 |
[% CASE 'cardnumber' %] |
540 |
{ |
540 |
{ |
541 |
"data": "cardnumber", |
541 |
data: "cardnumber", |
542 |
"searchable": true, |
542 |
searchable: true, |
543 |
"orderable": true, |
543 |
orderable: true, |
544 |
"render": function( data, type, row, meta ) { |
544 |
render: function( data, type, row, meta ) { |
545 |
let patron_id = encodeURIComponent(row.patron_id); |
545 |
let patron_id = encodeURIComponent(row.patron_id); |
546 |
[% IF !open_on_row_click AND CAN_user_circulate_circulate_remaining_permissions %] |
546 |
[% IF !open_on_row_click AND CAN_user_circulate_circulate_remaining_permissions %] |
547 |
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>"; |
547 |
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 553-572
Link Here
|
553 |
} |
553 |
} |
554 |
[% CASE 'dateofbirth' %] |
554 |
[% CASE 'dateofbirth' %] |
555 |
{ |
555 |
{ |
556 |
"data": "date_of_birth", |
556 |
data: "date_of_birth", |
557 |
"type": "date", |
557 |
type: "date", |
558 |
"searchable": true, |
558 |
searchable: true, |
559 |
"orderable": true, |
559 |
orderable: true, |
560 |
"render": function( data, type, row, meta ) { |
560 |
render: function( data, type, row, meta ) { |
561 |
return data ? "<span class=\"dateofbirth\">" + escape_str($date(data)) + "<span class=\"agehint\"> (" + _("%s years").format($get_age(data)) + ")</span></span>" : ""; |
561 |
return data ? "<span class=\"dateofbirth\">" + escape_str($date(data)) + "<span class=\"agehint\"> (" + _("%s years").format($get_age(data)) + ")</span></span>" : ""; |
562 |
} |
562 |
} |
563 |
} |
563 |
} |
564 |
[% CASE 'address' %] |
564 |
[% CASE 'address' %] |
565 |
{ |
565 |
{ |
566 |
"data": "me.street_number:me.address:me.address2:me.city:me.state:me.postal_code:me.country", |
566 |
data: "me.street_number:me.address:me.address2:me.city:me.state:me.postal_code:me.country", |
567 |
"searchable": true, |
567 |
searchable: true, |
568 |
"orderable": true, |
568 |
orderable: true, |
569 |
"render": function( data, type, row, meta ) { |
569 |
render: function( data, type, row, meta ) { |
570 |
let r = '<div class="address"><ul>'; |
570 |
let r = '<div class="address"><ul>'; |
571 |
r += $format_address(row, { no_line_break: true, include_li: true }); |
571 |
r += $format_address(row, { no_line_break: true, include_li: true }); |
572 |
r += '</div></ul>'; |
572 |
r += '</div></ul>'; |
Lines 575-584
Link Here
|
575 |
} |
575 |
} |
576 |
[% CASE 'address-library' %] |
576 |
[% CASE 'address-library' %] |
577 |
{ |
577 |
{ |
578 |
"data": "me.street_number:me.address:me.address2:me.city:me.state:me.postal_code:me.country", |
578 |
data: "me.street_number:me.address:me.address2:me.city:me.state:me.postal_code:me.country", |
579 |
"searchable": true, |
579 |
searchable: true, |
580 |
"orderable": true, |
580 |
orderable: true, |
581 |
"render": function( data, type, row, meta ) { |
581 |
render: function( data, type, row, meta ) { |
582 |
let r = '<div class="address"><ul>'; |
582 |
let r = '<div class="address"><ul>'; |
583 |
r += $format_address(row, { no_line_break: true, include_li: true }); |
583 |
r += $format_address(row, { no_line_break: true, include_li: true }); |
584 |
r += '</div></ul>'; |
584 |
r += '</div></ul>'; |
Lines 588-597
Link Here
|
588 |
} |
588 |
} |
589 |
[% CASE 'name-address' %] |
589 |
[% CASE 'name-address' %] |
590 |
{ |
590 |
{ |
591 |
"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", |
591 |
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", |
592 |
"searchable": true, |
592 |
searchable: true, |
593 |
"orderable": true, |
593 |
orderable: true, |
594 |
"render": function( data, type, row, meta ) { |
594 |
render: function( data, type, row, meta ) { |
595 |
let patron_id = encodeURIComponent(row.patron_id); |
595 |
let patron_id = encodeURIComponent(row.patron_id); |
596 |
let r = ''; |
596 |
let r = ''; |
597 |
[% IF ! open_on_row_click %] |
597 |
[% IF ! open_on_row_click %] |
Lines 613-622
Link Here
|
613 |
} |
613 |
} |
614 |
[% CASE 'name' %] |
614 |
[% CASE 'name' %] |
615 |
{ |
615 |
{ |
616 |
"data": "me.surname:me.preferred_name:me.firstname:me.middle_name:me.othernames", |
616 |
data: "me.surname:me.preferred_name:me.firstname:me.middle_name:me.othernames", |
617 |
"searchable": true, |
617 |
searchable: true, |
618 |
"orderable": true, |
618 |
orderable: true, |
619 |
"render": function( data, type, row, meta ) { |
619 |
render: function( data, type, row, meta ) { |
620 |
let patron_id = encodeURIComponent(row.patron_id); |
620 |
let patron_id = encodeURIComponent(row.patron_id); |
621 |
[% IF ! open_on_row_click %] |
621 |
[% IF ! open_on_row_click %] |
622 |
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>"; |
622 |
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 627-636
Link Here
|
627 |
} |
627 |
} |
628 |
[% CASE 'branch' %] |
628 |
[% CASE 'branch' %] |
629 |
{ |
629 |
{ |
630 |
"data": "library.name:me.library_id", |
630 |
data: "library.name:me.library_id", |
631 |
"searchable": true, |
631 |
searchable: true, |
632 |
"orderable": true, |
632 |
orderable: true, |
633 |
"render": function( data, type, row, meta ) { |
633 |
render: function( data, type, row, meta ) { |
634 |
if( !singleBranchMode && row.library.library_id == logged_in_library_id ) { |
634 |
if( !singleBranchMode && row.library.library_id == logged_in_library_id ) { |
635 |
return "<span class=\"currentlibrary\">" + escape_str(row.library.name) + "</span>"; |
635 |
return "<span class=\"currentlibrary\">" + escape_str(row.library.name) + "</span>"; |
636 |
} else { |
636 |
} else { |
Lines 640-684
Link Here
|
640 |
} |
640 |
} |
641 |
[% CASE 'category' %] |
641 |
[% CASE 'category' %] |
642 |
{ |
642 |
{ |
643 |
"data": "category_id", |
643 |
data: "category_id", |
644 |
"searchable": true, |
644 |
searchable: true, |
645 |
"orderable": true, |
645 |
orderable: true, |
646 |
"render": function( data, type, row, meta ) { |
646 |
render: function( data, type, row, meta ) { |
647 |
return escape_str(categories_map[data.toLowerCase()].description); |
647 |
return escape_str(categories_map[data.toLowerCase()].description); |
648 |
} |
648 |
} |
649 |
} |
649 |
} |
650 |
[% CASE 'dateexpiry' %] |
650 |
[% CASE 'dateexpiry' %] |
651 |
{ |
651 |
{ |
652 |
"data": "expiry_date", |
652 |
data: "expiry_date", |
653 |
"type": "date", |
653 |
type: "date", |
654 |
"searchable": true, |
654 |
searchable: true, |
655 |
"orderable": true, |
655 |
orderable: true, |
656 |
"render": function( data, type, row, meta ) { |
656 |
render: function( data, type, row, meta ) { |
657 |
return "<span class=\"dateexpiry" + (new Date(data) < new Date() ? ' expired' : '') + "\">" + (data ? escape_str($date(data)) : '') + "</span>"; |
657 |
return "<span class=\"dateexpiry" + (new Date(data) < new Date() ? ' expired' : '') + "\">" + (data ? escape_str($date(data)) : '') + "</span>"; |
658 |
} |
658 |
} |
659 |
} |
659 |
} |
660 |
[% CASE 'borrowernotes' %] |
660 |
[% CASE 'borrowernotes' %] |
661 |
{ |
661 |
{ |
662 |
"data": "staff_notes", |
662 |
data: "staff_notes", |
663 |
"searchable": true, |
663 |
searchable: true, |
664 |
"orderable": true, |
664 |
orderable: true, |
665 |
[%# We don't escape here, we allow html tag in staff notes %] |
665 |
[%# We don't escape here, we allow html tag in staff notes %] |
666 |
} |
666 |
} |
667 |
[% CASE 'phone' %] |
667 |
[% CASE 'phone' %] |
668 |
{ |
668 |
{ |
669 |
"data": "phone", |
669 |
data: "phone", |
670 |
"searchable": true, |
670 |
searchable: true, |
671 |
"orderable": true, |
671 |
orderable: true, |
672 |
"render": function( data, type, row, meta ) { |
672 |
render: function( data, type, row, meta ) { |
673 |
return escape_str(data); |
673 |
return escape_str(data); |
674 |
} |
674 |
} |
675 |
} |
675 |
} |
676 |
[% CASE 'checkouts' %][% embed.push('checkouts+count', 'overdues+count') %] |
676 |
[% CASE 'checkouts' %][% embed.push('checkouts+count', 'overdues+count') %] |
677 |
{ |
677 |
{ |
678 |
"data": "", |
678 |
data: "", |
679 |
"searchable": false, |
679 |
searchable: false, |
680 |
"orderable": false, |
680 |
orderable: false, |
681 |
"render": function( data, type, row, meta ) { |
681 |
render: function( data, type, row, meta ) { |
682 |
if ( row.overdues_count ) { |
682 |
if ( row.overdues_count ) { |
683 |
return "<span class='overdue'><strong>"+row.overdues_count + "</strong></span>" + " / " + row.checkouts_count; |
683 |
return "<span class='overdue'><strong>"+row.overdues_count + "</strong></span>" + " / " + row.checkouts_count; |
684 |
} else { |
684 |
} else { |
Lines 688-697
Link Here
|
688 |
} |
688 |
} |
689 |
[% CASE 'account_balance' %][% embed.push('account_balance') %] |
689 |
[% CASE 'account_balance' %][% embed.push('account_balance') %] |
690 |
{ |
690 |
{ |
691 |
"data": "", |
691 |
data: "", |
692 |
"searchable": false, |
692 |
searchable: false, |
693 |
"orderable": false, |
693 |
orderable: false, |
694 |
"render": function( data, type, row, meta ) { |
694 |
render: function( data, type, row, meta ) { |
695 |
let r = "<span style='text-align: right; display: block;'><a href=\"/cgi-bin/koha/members/boraccount.pl?borrowernumber="+row.patron_id+"\">"; |
695 |
let r = "<span style='text-align: right; display: block;'><a href=\"/cgi-bin/koha/members/boraccount.pl?borrowernumber="+row.patron_id+"\">"; |
696 |
let balance_str = row.account_balance || 0; |
696 |
let balance_str = row.account_balance || 0; |
697 |
balance_str = balance_str.escapeHtml().format_price(); |
697 |
balance_str = balance_str.escapeHtml().format_price(); |
Lines 711-720
Link Here
|
711 |
|
711 |
|
712 |
[% CASE 'sort1' %] |
712 |
[% CASE 'sort1' %] |
713 |
{ |
713 |
{ |
714 |
"data": "statistics_1", |
714 |
data: "statistics_1", |
715 |
"searchable": true, |
715 |
searchable: true, |
716 |
"orderable": true, |
716 |
orderable: true, |
717 |
"render": function( data, type, row, meta ) { |
717 |
render: function( data, type, row, meta ) { |
718 |
if (data === null) return ''; |
718 |
if (data === null) return ''; |
719 |
let bsort1 = av_bsort1_map[data.toString()]; |
719 |
let bsort1 = av_bsort1_map[data.toString()]; |
720 |
return escape_str(bsort1 ? bsort1.lib : data); |
720 |
return escape_str(bsort1 ? bsort1.lib : data); |
Lines 723-732
Link Here
|
723 |
|
723 |
|
724 |
[% CASE 'sort2' %] |
724 |
[% CASE 'sort2' %] |
725 |
{ |
725 |
{ |
726 |
"data": "statistics_2", |
726 |
data: "statistics_2", |
727 |
"searchable": true, |
727 |
searchable: true, |
728 |
"orderable": true, |
728 |
orderable: true, |
729 |
"render": function( data, type, row, meta ) { |
729 |
render: function( data, type, row, meta ) { |
730 |
if (data === null) return ''; |
730 |
if (data === null) return ''; |
731 |
let bsort2 = av_bsort2_map[data.toString()]; |
731 |
let bsort2 = av_bsort2_map[data.toString()]; |
732 |
return escape_str(bsort2 ? bsort2.lib : data); |
732 |
return escape_str(bsort2 ? bsort2.lib : data); |
Lines 736-742
Link Here
|
736 |
|
736 |
|
737 |
[% CASE 'action' %] |
737 |
[% CASE 'action' %] |
738 |
{ |
738 |
{ |
739 |
"data": function( row, type, val, meta ) { |
739 |
data: function( row, type, val, meta ) { |
740 |
|
740 |
|
741 |
let patron_id = encodeURIComponent(row.patron_id); |
741 |
let patron_id = encodeURIComponent(row.patron_id); |
742 |
let action_node = ""; |
742 |
let action_node = ""; |
Lines 764-784
Link Here
|
764 |
|
764 |
|
765 |
return action_node; |
765 |
return action_node; |
766 |
}, |
766 |
}, |
767 |
"searchable": false, |
767 |
searchable: false, |
768 |
"orderable": false |
768 |
orderable: false |
769 |
} |
769 |
} |
770 |
[% END %] |
770 |
[% END %] |
771 |
[% UNLESS loop.last %],[% END %] |
771 |
[% UNLESS loop.last %],[% END %] |
772 |
[% END %] |
772 |
[% END %] |
773 |
], |
773 |
], |
774 |
'embed': [% To.json(embed) | $raw %], |
774 |
embed: [% To.json(embed) | $raw %], |
775 |
"order": [[ [% order_column_index | html %], "asc" ]], |
775 |
order: [[ [% order_column_index | html %], "asc" ]], |
776 |
"autoWidth": false, |
776 |
autoWidth: false, |
777 |
'lengthMenu': [aLengthMenu, aLengthMenuLabel], |
777 |
lengthMenu: [aLengthMenu, aLengthMenuLabel], |
778 |
"pagingType": 'full_numbers', |
778 |
pagingType: 'full_numbers', |
779 |
"pageLength": [% Koha.Preference('PatronsPerPage') | html %], |
779 |
pageLength: [% Koha.Preference('PatronsPerPage') | html %], |
780 |
[% IF sticky_header %] |
780 |
[% IF sticky_header %] |
781 |
"initComplete": function(settings, json) { |
781 |
initComplete: function(settings, json) { |
782 |
$("#[% sticky_header | html %]").show(); |
782 |
$("#[% sticky_header | html %]").show(); |
783 |
}, |
783 |
}, |
784 |
[% END %] |
784 |
[% END %] |