Lines 45-51
Link Here
|
45 |
<main> |
45 |
<main> |
46 |
|
46 |
|
47 |
[% IF CAN_user_tools_manage_patron_lists %] |
47 |
[% IF CAN_user_tools_manage_patron_lists %] |
48 |
<div id="patron_list_dialog" class="dialog alert"> |
48 |
<div id="patron_list_dialog" class="dialog message"> |
49 |
Added <span class="patrons-length"></span> patrons to <a></a>. |
49 |
Added <span class="patrons-length"></span> patrons to <a></a>. |
50 |
</div> |
50 |
</div> |
51 |
[% END %] |
51 |
[% END %] |
Lines 72-109
Link Here
|
72 |
[% IF CAN_user_tools_manage_patron_lists || CAN_user_borrowers_edit_borrowers %] |
72 |
[% IF CAN_user_tools_manage_patron_lists || CAN_user_borrowers_edit_borrowers %] |
73 |
<div class="searchheader fh-fixedHeader" id="searchheader"> |
73 |
<div class="searchheader fh-fixedHeader" id="searchheader"> |
74 |
<div> |
74 |
<div> |
75 |
<a href="#" id="select_all"><i class="fa fa-check"></i> Select all</a> |
75 |
<a href="#" class="btn btn-link" id="select_all"><i class="fa fa-check"></i> Select all</a> |
76 |
| |
76 |
| |
77 |
<a href="#" id="clear_all"><i class="fa fa-remove"></i> Clear all</a> |
77 |
<a href="#" class="btn btn-link" id="clear_all"><i class="fa fa-remove"></i> Clear all</a> |
78 |
[% IF CAN_user_tools_manage_patron_lists %] |
78 |
[% IF CAN_user_tools_manage_patron_lists %] |
79 |
| |
79 |
|
80 |
<span> |
|
|
81 |
<label for="add_to_patron_list">Add selected patrons to:</label> |
82 |
<select id="add_to_patron_list" name="add_to_patron_list"> |
83 |
<option value=""></option> |
84 |
[% IF patron_lists %] |
85 |
<optgroup label="Patron lists:"> |
86 |
[% FOREACH pl IN patron_lists %] |
87 |
<option value="[% pl.patron_list_id | html %]">[% pl.name | html %]</option> |
88 |
[% END %] |
89 |
</optgroup> |
90 |
[% END %] |
91 |
|
92 |
<option value="new">[ New list ]</option> |
93 |
</select> |
94 |
|
95 |
<input type="text" id="new_patron_list" name="new_patron_list" id="new_patron_list" /> |
96 |
|
97 |
<input id="add_to_patron_list_submit" type="submit" class="submit" value="Save"> |
98 |
</span> |
99 |
[% END %] |
80 |
[% END %] |
100 |
|
81 |
|
101 |
[% IF CAN_user_tools_manage_patron_lists && CAN_user_borrowers_edit_borrowers %] |
82 |
[% IF CAN_user_tools_manage_patron_lists %] |
102 |
| |
83 |
<div id="patronlist-dropdown" class="btn-group"> |
|
|
84 |
<button id="patronlist-menu" type="button" class="btn btn-sm btn-default dropdown-toggle patron-edits disabled" disabled="disabled" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
85 |
Add to patron list <span class="caret"></span> |
86 |
</button> |
87 |
<ul class="dropdown-menu"> |
88 |
[% IF patron_lists %] |
89 |
[% FOREACH pl IN patron_lists %] |
90 |
<li><a href="#" class="patron-list-add" data-listid="[% pl.patron_list_id | html %]">[% pl.name | html %]</a></li> |
91 |
[% END %] |
92 |
[% END %] |
93 |
<li role="separator" class="divider"></li> |
94 |
<li><a href="#" class="patron-list-add" data-listid="new">New list</a></li> |
95 |
</ul> |
96 |
</div> |
103 |
[% END %] |
97 |
[% END %] |
104 |
|
98 |
|
105 |
[% IF CAN_user_borrowers_edit_borrowers %] |
99 |
[% IF CAN_user_borrowers_edit_borrowers %] |
106 |
<button id="merge-patrons" type="submit">Merge selected patrons</button> |
100 |
<button id="merge-patrons" class="btn btn-sm btn-default disabled" disabled="disabled" type="submit"><i class="fa fa-compress" aria-hidden="true"></i> Merge selected patrons</button> |
107 |
[% END %] |
101 |
[% END %] |
108 |
</div> |
102 |
</div> |
109 |
</div> |
103 |
</div> |
Lines 210-215
Link Here
|
210 |
</div> <!-- /.col-sm-2.col-sm-pull-10 --> |
204 |
</div> <!-- /.col-sm-2.col-sm-pull-10 --> |
211 |
</div> <!-- /.row --> |
205 |
</div> <!-- /.row --> |
212 |
|
206 |
|
|
|
207 |
<!-- New Patron List Modal --> |
208 |
<div class="modal" id="new-patron-list" tabindex="-1" role="dialog" aria-labelledby="new-patron-listLabel"> |
209 |
<div class="modal-dialog" role="document"> |
210 |
<div class="modal-content"> |
211 |
<div class="modal-header"> |
212 |
<button type="button" class="closebtn" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> |
213 |
<h4 class="modal-title" id="new-patron-listLabel">Add patrons to a new patron list</h4> |
214 |
</div> |
215 |
<form id="new-patron-list_form"> |
216 |
<div class="modal-body"> |
217 |
<div class="form-group"> |
218 |
<label for="new_patron_list" class="required">Patron list name: </label> |
219 |
<input class="form-control required" type="text" name="new_patron_list" id="new_patron_list" required="required" /> |
220 |
<input type="hidden" name="add_to_patron_list" id="add_to_patron_list" /> |
221 |
<span class="required">Required</span> |
222 |
</div> |
223 |
</div> <!-- /.modal-body --> |
224 |
<div class="modal-footer"> |
225 |
<button type="submit" id="add_to_patron_list_submit" class="btn btn-default approve">Submit</button> |
226 |
<button type="button" class="btn btn-default deny" data-dismiss="modal">Cancel</button> |
227 |
</div> <!-- /.modal-footer --> |
228 |
</form> <!-- /#new-patron-list_form --> |
229 |
</div> <!-- /.modal-content --> |
230 |
</div> <!-- /.modal-dialog --> |
231 |
</div> <!-- /#new-patron-list --> |
232 |
|
213 |
[% MACRO jsinclude BLOCK %] |
233 |
[% MACRO jsinclude BLOCK %] |
214 |
[% INCLUDE 'datatables.inc' %] |
234 |
[% INCLUDE 'datatables.inc' %] |
215 |
[% INCLUDE 'columns_settings.inc' %] |
235 |
[% INCLUDE 'columns_settings.inc' %] |
Lines 229-329
Link Here
|
229 |
$('#merge-patrons').prop('disabled', true); |
249 |
$('#merge-patrons').prop('disabled', true); |
230 |
$('#memberresultst').on('change', 'input.selection', function() { |
250 |
$('#memberresultst').on('change', 'input.selection', function() { |
231 |
if ( $('.selection:checked').length > 1 ) { |
251 |
if ( $('.selection:checked').length > 1 ) { |
232 |
$('#merge-patrons').prop('disabled', false); |
252 |
/* More than one checkbox has been checked */ |
|
|
253 |
$('#merge-patrons').prop('disabled', false).removeClass("disabled"); |
254 |
$("#patronlist-menu").removeClass("disabled").prop("disabled", false); |
255 |
} else if ( $('.selection:checked').length == 1 ) { |
256 |
/* At least one checkbox has been checked */ |
257 |
$('#merge-patrons').prop('disabled', true).addClass("disabled"); |
258 |
$("#patronlist-menu").removeClass("disabled").prop("disabled", false); |
233 |
} else { |
259 |
} else { |
234 |
$('#merge-patrons').prop('disabled', true); |
260 |
/* No checkbox has been checked */ |
|
|
261 |
$('#merge-patrons').prop('disabled', true).addClass("disabled"); |
262 |
$("#patronlist-menu").addClass("disabled").prop("disabled", true); |
235 |
} |
263 |
} |
236 |
}); |
264 |
}); |
|
|
265 |
|
237 |
$('#merge-patrons').on('click', function() { |
266 |
$('#merge-patrons').on('click', function() { |
238 |
var merge_patrons_url = 'merge-patrons.pl?' + $('.selection:checked') |
267 |
var merge_patrons_url = 'merge-patrons.pl?' + $('.selection:checked') |
239 |
.map(function() { |
268 |
.map(function() { |
240 |
return "id=" + $(this).val() |
269 |
return "id=" + $(this).val() |
241 |
}).get().join('&'); |
270 |
}).get().join('&'); |
242 |
|
|
|
243 |
window.location.href = merge_patrons_url; |
271 |
window.location.href = merge_patrons_url; |
244 |
}); |
272 |
}); |
245 |
|
273 |
|
246 |
$('#add_to_patron_list_submit').prop('disabled', true); |
274 |
$("#patronlist-dropdown").on("click", ".patron-list-add", function(e){ |
247 |
$('#new_patron_list').hide(); |
275 |
e.preventDefault(); |
248 |
|
276 |
|
249 |
$('#add_to_patron_list').change(function() { |
277 |
if ( $("#memberresultst input:checkbox:checked").length == 0 ) { |
250 |
var value = $('#add_to_patron_list').val(); |
278 |
alert( _("You have not selected any patrons to add to a list!") ); |
251 |
if ( value == 'new' ) { |
279 |
$(".btn-group").removeClass("open"); /* Close button menu */ |
252 |
$('#new_patron_list').val('') |
280 |
return false; |
253 |
$('#new_patron_list').show(); |
|
|
254 |
$('#new_patron_list').focus(); |
255 |
} else if ( value ) { |
256 |
$('#new_patron_list').hide(); |
257 |
$('#add_to_patron_list_submit').prop('disabled', false); |
258 |
} else { |
259 |
$('#new_patron_list').hide(); |
260 |
$('#add_to_patron_list_submit').prop('disabled', true); |
261 |
} |
281 |
} |
262 |
}); |
|
|
263 |
|
282 |
|
264 |
$('#new_patron_list').on('input', function() { |
283 |
var listid = $(this).data("listid"); |
265 |
if ( $('#new_patron_list').val() ) { |
284 |
$("#add_to_patron_list").val( listid ); |
266 |
$('#add_to_patron_list_submit').prop('disabled', false); |
285 |
if( listid == "new" ){ |
|
|
286 |
/* #add_to_patron_list value "new" in the modal form will tell API to create a new list */ |
287 |
$("#new-patron-list").modal("show"); |
267 |
} else { |
288 |
} else { |
268 |
$('#add_to_patron_list_submit').prop('disabled', true); |
289 |
/* Ajax submit the patrons to list */ |
269 |
} |
|
|
270 |
}); |
271 |
|
290 |
|
272 |
$("#add_to_patron_list_submit").on('click', function(e){ |
291 |
patronListAdd(); |
273 |
if ( $('#add_to_patron_list').val() == 'new' ) { |
|
|
274 |
if ( $('#new_patron_list').val() ) { |
275 |
$("#add_to_patron_list option").each(function() { |
276 |
if ( $(this).text() == $('#new_patron_list').val() ) { |
277 |
alert( _("You already have a list with that name!") ); |
278 |
return false; |
279 |
} |
280 |
}); |
281 |
} else { |
282 |
alert( _("You must give your new patron list a name!") ); |
283 |
return false; |
284 |
} |
285 |
} |
292 |
} |
|
|
293 |
}) |
286 |
|
294 |
|
287 |
if ( $("#memberresultst input:checkbox:checked").length == 0 ) { |
295 |
/* Submit selected patrons to a list via AJAX */ |
288 |
alert( _("You have not selected any patrons to add to a list!") ); |
296 |
$("#new-patron-list_form").on('submit', function(e){ |
|
|
297 |
e.preventDefault(); |
298 |
/* Upon submitting modal patron list add form... */ |
299 |
if ( $('#new_patron_list').val() ) { |
300 |
$(".patron-list-add").each(function() { |
301 |
/* Check each list name in the menu of patron lists */ |
302 |
/* If submitted list name matches... */ |
303 |
if ( $(this).text() == $('#new_patron_list').val() ) { |
304 |
alert( _("You already have a list with that name!") ); |
305 |
return false; |
306 |
} |
307 |
}); |
308 |
} else { |
309 |
alert( _("You must give your new patron list a name!") ); |
289 |
return false; |
310 |
return false; |
290 |
} |
311 |
} |
291 |
|
312 |
$("#new-patron-list").modal("hide"); |
292 |
var borrowernumbers = []; |
313 |
patronListAdd(); |
293 |
$("#memberresultst").find("input:checkbox:checked").each(function(){ |
|
|
294 |
borrowernumbers.push($(this).val()); |
295 |
}); |
296 |
var data = { |
297 |
add_to_patron_list: $("#add_to_patron_list").val(), |
298 |
new_patron_list: $("#new_patron_list").val(), |
299 |
borrowernumbers: borrowernumbers |
300 |
}; |
301 |
$.ajax({ |
302 |
data: data, |
303 |
type: 'POST', |
304 |
url: '/cgi-bin/koha/svc/members/add_to_list', |
305 |
success: function(data) { |
306 |
$("#patron_list_dialog").show(); |
307 |
$("#patron_list_dialog > span.patrons-length").html(data.patrons_added_to_list); |
308 |
$("#patron_list_dialog > a").attr("href", "/cgi-bin/koha/patron_lists/list.pl?patron_list_id=" + data.patron_list.patron_list_id); |
309 |
$("#patron_list_dialog > a").html(data.patron_list.name); |
310 |
if ( $('#add_to_patron_list').val() == 'new' ) { |
311 |
var new_patron_list_added = $("<option>", { |
312 |
value: data.patron_list.patron_list_id, |
313 |
text: data.patron_list.name |
314 |
}); |
315 |
$("#add_to_patron_list optgroup").append(new_patron_list_added); |
316 |
$("#add_to_patron_list").val(data.patron_list.patron_list_id); |
317 |
$("#new_patron_list").val(''); |
318 |
$('#add_to_patron_list').change(); |
319 |
} |
320 |
}, |
321 |
error: function() { |
322 |
alert("an error occurred"); |
323 |
} |
324 |
}); |
325 |
return true; |
326 |
}); |
314 |
}); |
|
|
315 |
|
327 |
$(".filterByLetter").on("click",function(e){ |
316 |
$(".filterByLetter").on("click",function(e){ |
328 |
e.preventDefault(); |
317 |
e.preventDefault(); |
329 |
filterByFirstLetterSurname( $(this).text(), true ); |
318 |
filterByFirstLetterSurname( $(this).text(), true ); |
Lines 510-515
Link Here
|
510 |
|
499 |
|
511 |
}); |
500 |
}); |
512 |
|
501 |
|
|
|
502 |
function patronListAdd(){ |
503 |
var borrowernumbers = []; |
504 |
$("#memberresultst").find("input:checkbox:checked").each(function(){ |
505 |
borrowernumbers.push($(this).val()); |
506 |
}); |
507 |
var data = { |
508 |
add_to_patron_list: $("#add_to_patron_list").val(), |
509 |
new_patron_list: $("#new_patron_list").val(), |
510 |
borrowernumbers: borrowernumbers |
511 |
}; |
512 |
$.ajax({ |
513 |
data: data, |
514 |
type: 'POST', |
515 |
url: '/cgi-bin/koha/svc/members/add_to_list', |
516 |
success: function(data) { |
517 |
$("#patron_list_dialog").show(); |
518 |
$("#patron_list_dialog > span.patrons-length").html(data.patrons_added_to_list); |
519 |
$("#patron_list_dialog > a").attr("href", "/cgi-bin/koha/patron_lists/list.pl?patron_list_id=" + data.patron_list.patron_list_id); |
520 |
$("#patron_list_dialog > a").html(data.patron_list.name); |
521 |
|
522 |
if ( $('#add_to_patron_list').val() == 'new' ) { |
523 |
/* Add a new entry to the menu */ |
524 |
$("#patronlist-dropdown .divider").before('<li><a class="patron-list-add" href="#" data-listid="' + data.patron_list.patron_list_id + '">' + data.patron_list.name + '</li>'); |
525 |
} |
526 |
}, |
527 |
error: function() { |
528 |
alert("an error occurred"); |
529 |
} |
530 |
}); |
531 |
return true; |
532 |
} |
533 |
|
513 |
function getSearchByLocation( setstate ){ |
534 |
function getSearchByLocation( setstate ){ |
514 |
/* Check to see if the URL contains a search parameter */ |
535 |
/* Check to see if the URL contains a search parameter */ |
515 |
if( location.search != ""){ |
536 |
if( location.search != ""){ |
516 |
- |
|
|