2 [% INCLUDE 'doc-head-open.inc'%]
3 <title>Koha › Tools › Batch patron modification</title>
4 [% INCLUDE 'doc-head-close.inc' %]
5 [% INCLUDE 'calendar.inc' %]
6 <link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/css/datatables.css" />
7 [% INCLUDE 'datatables.inc' %]
8 <script type="text/javascript">
10 var patron_attributes_lib = new Array();
11 var patron_attributes_values = new Array();
12 $(document).ready(function() {
14 $("#borrowerst").dataTable($.extend(true, {}, dataTablesDefaults, {
16 [% IF ( op == 'show_results' ) %]
18 { 'sType': "title-string", 'aTargets' : [ 'title-string'] }
22 { "aTargets": [ 0 ], "bSortable": false, "bSearchable": false },
23 { 'sType': "title-string", 'aTargets' : [ 'title-string'] }
28 $("#selectallbutton").click(function() {
29 $("#borrowerst").find("input:checkbox").each(function() {
30 $(this).attr("checked", true);
34 $("#clearallbutton").click(function() {
35 $("#borrowerst").find("input:checkbox").each(function() {
36 $(this).attr("checked", false);
42 var values = new Array();
43 var lib = new Array();
44 [% FOREACH pav IN patron_attributes_values %]
47 [% FOREACH option IN pav.options %]
48 values.push("[% option.lib %]");
49 lib.push("[% option.authorised_value %]");
51 patron_attributes_lib["[% pav.attribute_code %]"] = values;
52 patron_attributes_values["[% pav.attribute_code %]"] = lib;
55 $('select[name="patron_attributes"]').change(function() {
56 updateAttrValues(this);
59 $('select[name="patron_attributes"]').change();
63 function updateAttrValues (select_attr) {
64 var attr_code = $(select_attr).val();
65 var type = $(select_attr).find("option:selected").attr('data-type');
66 var category = $(select_attr).find("option:selected").attr('data-category');
67 var span = $(select_attr).parent().parent().find('span.patron_attributes_value');
68 var information_category_node = $(select_attr).parent().parent().find('span.information_category');
69 information_category_node.html("");
70 if ( category.length > 0 ) {
71 information_category_node.html(_("This attribute will be only applied to the patron's category %s").format(category));
73 if ( type == 'select' ) {
74 var options = '<option value = ""></option>';
75 for ( var i = 0 ; i < patron_attributes_values[attr_code].length ; i++ ) {
76 options += '<option value="'+patron_attributes_values[attr_code][i]+'">'+patron_attributes_lib[attr_code][i]+'</option>';
78 span.html('<select name="patron_attributes_value">' + options + '</select>');
80 span.html('<input type="text" name="patron_attributes_value"/>')
84 function add_attributes() {
85 var li_node = $("li.attributes:last");
86 var li_clone = $(li_node).clone();
87 if ( $(li_clone).find("a.delete").length == 0 ) {
88 $(li_clone).append('<a href="#" title="Delete" class="delete" onclick="del_attributes(this);return false;"><i class="fa fa-fw fa-trash"></i> Delete</a>');
90 $(li_clone).find('select[name="patron_attributes"]').change(function() {
91 updateAttrValues(this);
94 $(li_clone).find('select[name="patron_attributes"]').change();
96 $("#fields_list>ol").append(li_clone);
100 function del_attributes(a_node) {
101 $(a_node).parent('li').remove();
102 update_attr_values();
105 function update_attr_values() {
106 $("li.attributes").each(function(i) {
107 $(this).find("input:checkbox").val("attr"+i+"_value");
110 function clearDate(nodeid) {
111 $("#"+nodeid).val("");
117 <body id="tools_modborrowers" class="tools">
118 [% INCLUDE 'header.inc' %]
119 [% INCLUDE 'cat-search.inc' %]
121 <div id="breadcrumbs">
122 <a href="/cgi-bin/koha/mainpage.pl">Home</a> ›
123 <a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a> ›
124 <a href="/cgi-bin/koha/tools/modborrowers.pl">Batch patron modification</a>
127 <div id="doc3" class="yui-t2">
131 [% IF ( op == 'show_form' ) %]
132 <h1>Batch patron modification</h1>
133 <form method="post" enctype="multipart/form-data" action="/cgi-bin/koha/tools/modborrowers.pl">
134 <fieldset class="rows">
135 <legend>Use a file</legend>
137 <li><label for="uploadfile">File: </label> <input type="file" id="uploadfile" name="uploadfile" /></li>
141 [% IF patron_lists %]
142 <fieldset class="rows">
143 <legend>Or use a patron list</legend>
146 <label for="patron_list_id">Patron list: </label>
147 <select id="patron_list_id" name="patron_list_id">
148 <option value=""></option>
149 [% FOREACH pl IN patron_lists %]
150 <option value="[% pl.patron_list_id %]">[% pl.name %]</option>
158 <fieldset class="rows">
159 <legend>Or list cardnumbers one by one</legend>
162 <label for="cardnumberlist">Card number list (one cardnumber per line): </label>
163 <textarea rows="10" cols="30" id="cardnumberlist" name="cardnumberlist">[% cardnumberlist %]</textarea>
167 <input type="hidden" name="op" value="show" />
168 <fieldset class="action">
169 <input type="submit" value="Continue" class="button" />
170 <a class="cancel" href="/cgi-bin/koha/tools/tools-home.pl">Cancel</a>
175 [% IF ( op == 'show' or op == 'show_results' ) %]
176 [% IF ( op == 'show' ) %]
177 <h1>Batch patrons modification</h1>
179 <h1>Batch patrons results</h1>
181 [% IF ( notfoundcardnumbers ) %]
182 <div class="dialog alert"><p>Warning, the following cardnumbers were not found:</p></div>
183 <table style="margin:auto;">
185 <tr><th>Cardnumbers not found</th></tr>
188 [% FOREACH notfoundcardnumber IN notfoundcardnumbers %]
189 <tr><td>[% notfoundcardnumber.cardnumber %]</td></tr>
195 [% IF ( op == 'show_results' ) %]
197 <div class="dialog alert">
198 <h4>Errors occurred:</h4>
199 <ul class="warnings">
200 [% FOREACH error IN errors %]
201 [% IF ( error.error == 'can_not_update' ) %]
202 <li>Can not update patron.
203 [% IF ( error.cardnumber ) %] Cardnumber: [% error.cardnumber %] [% END %]
204 (Borrowernumber: [% error.borrowernumber %])
207 <li>[% error.error %]</li>
215 [% IF ( op == 'show' ) %]
216 <form name="f" action="modborrowers.pl" method="post">
217 <input type="hidden" name="op" value="do" />
218 [% IF ( borrowers ) %]
219 <div id="toolbar"><a id="selectallbutton" href="#">Select all</a> | <a id="clearallbutton" href="#">Clear all</a></div>
223 <div id="cataloguing_additem_itemlist">
224 <div style="overflow:auto">
225 <table id="borrowerst">
228 [% IF ( op == 'show' ) %]
238 <th>ZIP/Postal code</th>
240 <th class="title-string">Registration date</th>
241 <th class="title-string">Expiry date</th>
242 [% FOREACH attrh IN attributes_header %]
243 <th>[% attrh.attribute %]</th>
248 [% FOREACH borrower IN borrowers %]
250 [% IF ( op == 'show' ) %]
251 <td><input type="checkbox" name="borrowernumber" value="[% borrower.borrowernumber %]" checked="checked" /></td>
253 <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% borrower.borrowernumber %]">[% borrower.cardnumber %]</a></td>
254 <td>[% borrower.surname %]</td>
255 <td>[% borrower.firstname %]</td>
256 <td>[% borrower.branchname %]</td>
257 <td>[% borrower.categorycode %]</td>
258 <td>[% borrower.city %]</td>
259 <td>[% borrower.state %]</td>
260 <td>[% borrower.zipcode %]</td>
261 <td>[% borrower.country %]</td>
262 <td><span title="[% borrower.dateenrolled %]">[% borrower.dateenrolled | $KohaDates %]</span></td>
263 <td><span title="[% borrower.dateexpiry %]">[% borrower.dateexpiry | $KohaDates %]</span></td>
264 [% FOREACH pa IN borrower.patron_attributes %]
266 <td>[% pa.code %]=[% pa.value %]</td>
278 [% IF ( op == 'show' ) %]
279 <div id="cataloguing_additem_newitem">
280 <h2>Edit patrons</h2>
281 <div class="hint">Checking the box right next to the label will disable the entry and delete the values of that field on all selected patrons</div>
282 <fieldset class="rows" id="fields_list">
284 [% FOREACH field IN fields %]
286 [% IF ( field.mandatory ) %]
287 <label for="[% field.name %]" class="required">
289 <label for="[% field.name %]">
291 [% SWITCH ( field.name ) %]
294 [% CASE 'firstname' %]
296 [% CASE 'branchcode' %]
298 [% CASE 'categorycode' %]
312 [% CASE 'dateenrolled' %]
314 [% CASE 'dateexpiry' %]
316 [% CASE 'borrowernotes' %]
320 [% IF field.mandatory %]
321 <input type="checkbox" title="This field is mandatory" name="disable_input" value="[% field.name %]" readonly="readonly" onclick="return false;" />
323 <input type="checkbox" title="Check to delete this field" name="disable_input" value="[% field.name %]" />
325 [% IF ( field.type == 'text' ) %]
326 <input type="text" name="[% field.name %]" value="" />
328 [% IF ( field.type == 'select' ) %]
329 [% IF field.option.size %]
330 <select name="[% field.name %]" >
331 [% FOREACH opt IN field.option %]
332 <option value="[% opt.value %]">[% opt.lib %]</option>
336 There is no value defined for [% field.name %]
339 [% IF ( field.type == 'date' ) %]
340 <input type="text" name="[% field.name %]" id="[% field.name %]" value="" size="10" maxlength="10" readonly="readonly" class="datepicker" />
341 <a href="#" onclick="clearDate('[% field.name %]');return false;"><i class="fa fa-fw fa-trash"></i> Clear</a>
343 [% IF field.mandatory %]
344 <span class="required">Required fields cannot be cleared</span>
348 [% IF ( patron_attributes_codes ) %]
349 <li class="attributes">
350 <label style="width:auto;">Attribute:
351 <select name="patron_attributes">
352 [% FOREACH pac IN patron_attributes_codes %]
353 <option value="[% pac.attribute_code %]" data-type="[% pac.type %]" data-category="[% pac.category_lib %]">[% pac.attribute_lib %]</option>
357 <input type="checkbox" title="check to delete this field" name="disable_input" value="attr0_value" />
358 <span class="patron_attributes_value"></span>
359 <a href="#" title="Add an attribute" onclick="add_attributes(); return false;"><i class="fa fa-fw fa-plus"></i> New</a>
360 <span class="information_category hint" style="width:25%;float:right;"></span>
365 <fieldset class="action">
366 <input type="submit" name="mainformsubmit" value="Save" />
367 <a href="/cgi-bin/koha/tools/modborrowers.pl" class="cancel">Cancel</a>
374 [% IF ( op == 'show_results' ) %]
376 <a href="/cgi-bin/koha/tools/modborrowers.pl" title="New batch patrons modification">New batch patron modification</a>
382 [% INCLUDE 'tools-menu.inc' %]
385 [% INCLUDE 'intranet-bottom.inc' %]