Lines 2-7
Link Here
|
2 |
[% USE I18N %] |
2 |
[% USE I18N %] |
3 |
[% USE Branches %] |
3 |
[% USE Branches %] |
4 |
[% USE ExtendedAttributeTypes %] |
4 |
[% USE ExtendedAttributeTypes %] |
|
|
5 |
[% USE Categories %] |
5 |
[% USE raw %] |
6 |
[% USE raw %] |
6 |
[% USE Asset %] |
7 |
[% USE Asset %] |
7 |
[% USE To %] |
8 |
[% USE To %] |
Lines 55-61
Link Here
|
55 |
<label for="categorycode_filter">Category:</label> |
56 |
<label for="categorycode_filter">Category:</label> |
56 |
<select id="categorycode_filter"> |
57 |
<select id="categorycode_filter"> |
57 |
<option value="">Any</option> |
58 |
<option value="">Any</option> |
58 |
[% FOREACH category IN categories %] |
59 |
[% FOREACH category IN Categories.limited.unblessed %] |
59 |
<option value="[% category.categorycode | html %]">[% category.description | html %]</option> |
60 |
<option value="[% category.categorycode | html %]">[% category.description | html %]</option> |
60 |
[% END %] |
61 |
[% END %] |
61 |
</select> |
62 |
</select> |
Lines 109-114
Link Here
|
109 |
[%# columns: See patron_search_js %] |
110 |
[%# columns: See patron_search_js %] |
110 |
[% BLOCK patron_search_table %] |
111 |
[% BLOCK patron_search_table %] |
111 |
|
112 |
|
|
|
113 |
[% UNLESS table_id %] |
114 |
[% SET table_id = "memberresultst" %] |
115 |
[% END %] |
116 |
|
112 |
[% IF filter == 'suggestions_managers' %] |
117 |
[% IF filter == 'suggestions_managers' %] |
113 |
<div class="hint">Only staff with superlibrarian or suggestions_manage permissions are returned in the search results</div> |
118 |
<div class="hint">Only staff with superlibrarian or suggestions_manage permissions are returned in the search results</div> |
114 |
[% ELSIF filter == 'orders_managers' %] |
119 |
[% ELSIF filter == 'orders_managers' %] |
Lines 130-136
Link Here
|
130 |
[% END %] |
135 |
[% END %] |
131 |
</div> |
136 |
</div> |
132 |
|
137 |
|
133 |
|
|
|
134 |
<h3 style="display: none;">Patrons found for: <span id="searchpattern"></span></h3> |
138 |
<h3 style="display: none;">Patrons found for: <span id="searchpattern"></span></h3> |
135 |
|
139 |
|
136 |
<div id="[% table_id | html %]_search_results" style="display:none;"> |
140 |
<div id="[% table_id | html %]_search_results" style="display:none;"> |
Lines 175-192
Link Here
|
175 |
<div class="modal" id="patronPreview" tabindex="-1" role="dialog" aria-labelledby="patronPreviewLabel"> |
179 |
<div class="modal" id="patronPreview" tabindex="-1" role="dialog" aria-labelledby="patronPreviewLabel"> |
176 |
<div class="modal-dialog" role="document"> |
180 |
<div class="modal-dialog" role="document"> |
177 |
<div class="modal-content"> |
181 |
<div class="modal-content"> |
178 |
<div class="modal-header"> |
|
|
179 |
<button type="button" class="closebtn" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> |
180 |
<h4 class="modal-title" id="patronPreviewLabel"></h4> |
181 |
</div> |
182 |
<div class="modal-body"> |
182 |
<div class="modal-body"> |
183 |
<div id="loading"> |
183 |
<div id="loading"> |
184 |
<img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading |
184 |
<img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading |
185 |
</div> |
185 |
</div> |
186 |
</div> |
186 |
</div> |
187 |
<div class="modal-footer"> |
|
|
188 |
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button> |
189 |
</div> |
190 |
</div> |
187 |
</div> |
191 |
</div> |
188 |
</div> |
192 |
</div> |
189 |
</div> |
Lines 213-218
Link Here
|
213 |
[% END %] |
210 |
[% END %] |
214 |
|
211 |
|
215 |
<script> |
212 |
<script> |
|
|
213 |
[% SET libraries = Branches.all %] |
214 |
[% SET categories = Categories.limited.unblessed %] |
216 |
let categories = [% To.json(categories) | $raw %].map(e => { |
215 |
let categories = [% To.json(categories) | $raw %].map(e => { |
217 |
e['_id'] = e.categorycode.toLowerCase(); |
216 |
e['_id'] = e.categorycode.toLowerCase(); |
218 |
e['_str'] = e.description; |
217 |
e['_str'] = e.description; |
Lines 649-670
Link Here
|
649 |
var borrowernumber = $(this).data("borrowernumber"); |
648 |
var borrowernumber = $(this).data("borrowernumber"); |
650 |
var firstname = $(this).data("firstname"); |
649 |
var firstname = $(this).data("firstname"); |
651 |
var surname = $(this).data("surname"); |
650 |
var surname = $(this).data("surname"); |
652 |
add_user( borrowernumber, firstname + " " + surname ); |
651 |
modal_add_user( borrowernumber, firstname + " " + surname ); |
653 |
}); |
652 |
}); |
654 |
|
|
|
655 |
$("body").on("click",".select_user",function(e){ |
653 |
$("body").on("click",".select_user",function(e){ |
656 |
e.preventDefault(); |
654 |
e.preventDefault(); |
657 |
var borrowernumber = $(this).data("borrowernumber"); |
655 |
var borrowernumber = $(this).data("borrowernumber"); |
658 |
var borrower_data = $("#borrower_data"+borrowernumber).val(); |
656 |
var borrower_data = $("#borrower_data"+borrowernumber).val(); |
659 |
select_user( borrowernumber, JSON.parse(borrower_data) ); |
657 |
modal_select_user( borrowernumber, JSON.parse(borrower_data) ); |
|
|
658 |
$(this).closest(".modal").modal('hide'); |
660 |
}); |
659 |
}); |
661 |
|
660 |
|
662 |
$("body").on("click",".patron_preview", function( e ){ |
661 |
$("body").on("click",".patron_preview", function( e ){ |
663 |
e.preventDefault(); |
662 |
e.preventDefault(); |
664 |
var borrowernumber = $(this).data("borrowernumber"); |
663 |
var borrowernumber = $(this).data("borrowernumber"); |
665 |
var page = "/cgi-bin/koha/members/moremember.pl?print=brief&borrowernumber=" + borrowernumber; |
664 |
var page = "/cgi-bin/koha/members/moremember.pl?print=brief&borrowernumber=" + borrowernumber; |
666 |
$("#patronPreview .modal-body").load( page + " div.container-fluid" ); |
665 |
$("#patron_preview_modal").load( page + " div.container-fluid", function(){ |
667 |
$('#patronPreview').modal({show:true}); |
666 |
$("#patron_preview_modal").find(".close").on("click", function(){ |
|
|
667 |
$('#patron_preview_modal').html(_("Loading...")).removeClass("show"); |
668 |
}); |
669 |
}); |
670 |
$("#patron_preview_modal").addClass("show"); |
668 |
}); |
671 |
}); |
669 |
|
672 |
|
670 |
$("#patronPreview").on('hidden.bs.modal', function (e) { |
673 |
$("#patronPreview").on('hidden.bs.modal', function (e) { |
Lines 826-865
Link Here
|
826 |
} |
829 |
} |
827 |
|
830 |
|
828 |
// modify parent window owner element |
831 |
// modify parent window owner element |
829 |
function add_user(borrowernumber, borrowername) { |
832 |
function modal_add_user(borrowernumber, borrowername) { |
830 |
var p = window.opener; |
833 |
[%# Note that add_user could sent data instead of borrowername too %] |
831 |
// In one place (serials/routing.tt), the page is reload on every add |
834 |
$("#info").hide(); |
832 |
// We have to wait for the page to be there |
835 |
$("#error").hide(); |
833 |
function wait_for_opener () { |
836 |
if ( add_user(borrowernumber, borrowername) < 0 ) { |
834 |
if ( ! $(opener.document).find('body').size() ) { |
837 |
$("#error").html(_("Patron '%s' is already in the list.").format(borrowername)); |
835 |
setTimeout(wait_for_opener, 500); |
838 |
$("#error").show(); |
836 |
} else { |
839 |
} else { |
837 |
[%# Note that add_user could sent data instead of borrowername too %] |
840 |
$("#info").html(_("Patron '%s' added.").format(borrowername)); |
838 |
$("#info").hide(); |
841 |
$("#info").show(); |
839 |
$("#error").hide(); |
|
|
840 |
if ( p.add_user(borrowernumber, borrowername) < 0 ) { |
841 |
$("#error").html(_("Patron '%s' is already in the list.").format(borrowername)); |
842 |
$("#error").show(); |
843 |
} else { |
844 |
$("#info").html(_("Patron '%s' added.").format(borrowername)); |
845 |
$("#info").show(); |
846 |
} |
847 |
} |
848 |
} |
842 |
} |
849 |
wait_for_opener(); |
|
|
850 |
} |
843 |
} |
851 |
function select_user(borrowernumber, data) { |
844 |
function modal_select_user(borrowernumber, data) { |
852 |
var p = window.opener; |
845 |
if ( document.getElementById("selected_patron_id") ) { |
853 |
if ( p.document.getElementById("selected_patron_id") ) { |
846 |
document.getElementById("selected_patron_id").value = borrowernumber; |
854 |
p.document.getElementById("selected_patron_id").value = borrowernumber; |
|
|
855 |
} else { |
847 |
} else { |
856 |
[% IF callback %] |
848 |
[% IF callback %] |
857 |
p.[% callback | html %](borrowernumber, data); |
849 |
[% callback | html %](borrowernumber, data); |
858 |
[% ELSE %] |
850 |
[% ELSE %] |
859 |
p.select_user(borrowernumber, data); |
851 |
select_user(borrowernumber, data); |
860 |
[% END %] |
852 |
[% END %] |
861 |
} |
853 |
} |
862 |
window.close(); |
|
|
863 |
} |
854 |
} |
864 |
</script> |
855 |
</script> |
865 |
[% END %] |
856 |
[% END %] |
|
|
857 |
|
858 |
|
859 |
[% BLOCK patron_search_modal %] |
860 |
[% UNLESS patron_search_modal_id %] |
861 |
[% patron_search_modal_id = "patron_search_modal" %] |
862 |
[% END %] |
863 |
<div id="[% patron_search_modal_id | html %]" class="modal modal-full" tabindex="-1" role="dialog" aria-labelledby="patronSearchLabel" aria-hidden="true" data-backdrop=""> |
864 |
<div class="modal-dialog" role="document"> |
865 |
<div class="modal-content"> |
866 |
<div class="modal-header"> |
867 |
<button type="button" class="closebtn" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> |
868 |
<h4 class="modal-title" id="patronSearchLabel">[% modal_title | html %]</h4> |
869 |
</div> |
870 |
<div class="modal-body"> |
871 |
[% PROCESS patron_search_filters filters => ['branch','category','sort1','sort2'] %] |
872 |
|
873 |
<div id="searchresults"> |
874 |
[% IF columns.grep('checkbox').size %] |
875 |
<div class="searchheader fh-fixedHeader" id="searchheader" style="display:none;"> |
876 |
<div> |
877 |
<a href="#" class="btn btn-link" id="select_all"><i class="fa fa-check"></i> Select all</a> |
878 |
| |
879 |
<a href="#" class="btn btn-link" id="clear_all"><i class="fa fa-remove"></i> Clear all</a> |
880 |
[% IF selection_type == 'add' %] |
881 |
<button id="add-selected" class="btn btn-sm btn-default" type="submit">Add selected patrons</button> |
882 |
[% END %] |
883 |
</div> |
884 |
</div> |
885 |
[% END %] |
886 |
[% PROCESS patron_search_table table_id => 'memberresultst' columns => columns %] |
887 |
</div> |
888 |
</div> |
889 |
<div class="modal-footer"> |
890 |
<a href="#" class="btn btn-default cancel" data-dismiss="modal" aria-hidden="true">Close</a> |
891 |
</div> |
892 |
</div> |
893 |
</div> |
894 |
</div> |
895 |
<div id="patron_preview_modal" class="basicModal"></div> |
896 |
[% END %] |