Bug 19623: (follow-up) Correct footer include in pop-up windows
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / common / patron_search.tt
1 [% USE Koha %]
2 [% USE Branches %]
3 [% INCLUDE 'doc-head-open.inc' %]
4 <title>Koha &rsaquo; Patron search</title>
5 [% INCLUDE 'doc-head-close.inc' %]
6 <link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/css/datatables.css" />
7 [% INCLUDE 'datatables.inc' %]
8
9 <script type="text/javascript">
10 //<![CDATA[
11
12 var search = 1;
13 $(document).ready(function(){
14     $("#info").hide();
15     $("#error").hide();
16
17     [% IF view != "show_results" %]
18         $("#searchresults").hide();
19         search = 0;
20     [% END %]
21
22     // Apply DataTables on the results table
23     dtMemberResults = $("#memberresultst").dataTable($.extend(true, {}, dataTablesDefaults, {
24         'bServerSide': true,
25         'sAjaxSource': "/cgi-bin/koha/svc/members/search",
26         'fnServerData': function(sSource, aoData, fnCallback) {
27             if ( ! search ) {
28                 return;
29             }
30             aoData.push({
31                 'name': 'searchmember',
32                 'value': $("#searchmember_filter").val()
33             },{
34                 'name': 'firstletter',
35                 'value': $("#firstletter_filter").val()
36             },{
37                 'name': 'categorycode',
38                 'value': $("#categorycode_filter").val()
39             },{
40                 'name': 'branchcode',
41                 'value': $("#branchcode_filter").val()
42             },{
43                 'name': 'name_sorton',
44                 'value': 'borrowers.surname borrowers.firstname'
45             },{
46                 'name': 'category_sorton',
47                 'value': 'categories.description',
48             },{
49                 'name': 'branch_sorton',
50                 'value': 'branches.branchname'
51             },{
52                 'name': 'template_path',
53                 'value': '[% json_template %]',
54             },{
55                 'name': 'selection_type',
56                 'value': '[% selection_type %]',
57             }
58             [% IF patrons_with_acq_perm_only %]
59             ,{
60                 'name': 'has_permission',
61                 'value': 'acquisition.order_manage',
62             }
63             [% END %]
64             );
65             $.ajax({
66                 'dataType': 'json',
67                 'type': 'POST',
68                 'url': sSource,
69                 'data': aoData,
70                 'success': function(json){
71                     fnCallback(json);
72                 }
73             });
74         },
75         'aoColumns':[
76             [% FOR column IN columns %]
77                 [% IF column == 'action' %]
78                     { 'mDataProp': 'dt_action', 'bSortable': false, 'sClass': 'actions' }
79                 [% ELSIF column == 'address' %]
80                     { 'mDataProp': 'dt_address', 'bSortable': false }
81                 [% ELSE %]
82                     { 'mDataProp': 'dt_[% column %]' }
83                 [% END %]
84                 [% UNLESS loop.last %],[% END %]
85             [% END %]
86         ],
87         'bAutoWidth': false,
88         [% IF patrons_with_acq_perm_only %]
89             'bPaginate': false,
90         [% ELSE %]
91             'sPaginationType': 'full_numbers',
92             "iDisplayLength": [% Koha.Preference('PatronsPerPage') %],
93         [% END %]
94         'aaSorting': [[[% aaSorting || 0 %], 'asc']],
95         'bFilter': false,
96         'bProcessing': true,
97     }));
98
99     $("#searchform").on('submit', filter);
100     $(".filterByLetter").on("click",function(e){
101         e.preventDefault();
102         filterByFirstLetterSurname($(this).text());
103     });
104     $("body").on("click",".add_user",function(e){
105         e.preventDefault();
106         var borrowernumber = $(this).data("borrowernumber");
107         var firstname = $(this).data("firstname");
108         var surname = $(this).data("surname");
109         add_user( borrowernumber, firstname + " " + surname );
110     });
111
112     $("body").on("click",".select_user",function(e){
113         e.preventDefault();
114         var borrowernumber = $(this).data("borrowernumber");
115         var borrower_data = $("#borrower_data"+borrowernumber).val();
116         select_user( borrowernumber, JSON.parse(borrower_data) );
117     });
118
119 });
120
121 function filter() {
122     search = 1;
123     $("#firstletter_filter").val('');
124     $("#searchresults").show();
125     dtMemberResults.fnDraw();
126     return false;
127 }
128
129 // User has clicked on a letter
130 function filterByFirstLetterSurname(letter) {
131     $("#firstletter_filter").val(letter);
132     search = 1;
133     $("#searchresults").show();
134     dtMemberResults.fnDraw();
135 }
136
137
138     // modify parent window owner element
139     [% IF selection_type == 'add' %]
140         function add_user(borrowernumber, borrowername) {
141             var p = window.opener;
142             // In one place (serials/routing.tt), the page is reload on every add
143             // We have to wait for the page to be there
144             function wait_for_opener () {
145                 if ( ! $(opener.document).find('body').size() ) {
146                     setTimeout(wait_for_opener, 500);
147                 } else {
148                     [%# Note that add_user could sent data instead of borrowername too %]
149                     $("#info").hide();
150                     $("#error").hide();
151                     if ( p.add_user(borrowernumber, borrowername) < 0 ) {
152                         $("#error").html(_("Patron '%s' is already in the list.").format(borrowername));
153                         $("#error").show();
154                     } else {
155                         $("#info").html(_("Patron '%s' added.").format(borrowername));
156                         $("#info").show();
157                     }
158                 }
159             }
160             wait_for_opener();
161         }
162     [% ELSIF selection_type == 'select' %]
163         function select_user(borrowernumber, data) {
164             var p = window.opener;
165             p.select_user(borrowernumber, data);
166             window.close();
167         }
168     [% END %]
169 //]]>
170 </script>
171
172 </head>
173 <body id="common_patron_search" class="common">
174 <div id="patron_search" class="yui-t7">
175   <div id="bd">
176     <div class="yui-g">
177
178         <form id="searchform">
179             <fieldset class="brief">
180                 <h3>Search for patron</h3>
181                 <ol>
182                     <li>
183                         <label for="searchmember_filter">Search:</label>
184                         <input type="text" id="searchmember_filter" value="[% searchmember %]"/>
185                     </li>
186                     <li>
187                         <label for="categorycode_filter">Category:</label>
188                         <select id="categorycode_filter">
189                             <option value="">Any</option>
190                             [% FOREACH category IN categories %]
191                                 <option value="[% category.categorycode %]">[% category.description %]</option>
192                             [% END %]
193                         </select>
194                     </li>
195                     <li>
196                         <label for="branchcode_filter">Library:</label>
197                         <select id="branchcode_filter">
198                             [% SET libraries = Branches.all() %]
199                             [% IF libraries.size != 1 %]
200                                 <option value="">Any</option>
201                             [% END %]
202                             [% FOREACH l IN libraries %]
203                                 <option value="[% l.branchcode %]">[% l.branchname %]</option>
204                             [% END %]
205                         </select>
206                     </li>
207                 </ol>
208                 <fieldset class="action">
209                     <input type="submit" value="Search" />
210                 </fieldset>
211             </fieldset>
212         </form>
213
214         [% IF patrons_with_acq_perm_only %]
215             <div class="hint">Only staff with superlibrarian or acquisitions permissions (or order_manage permission if granular permissions are enabled) are returned in the search results</div>
216         [% END %]
217
218         <div class="browse">
219             Browse by last name:
220             [% FOREACH letter IN alphabet.split(' ') %]
221                 <a href="#" class="filterByLetter">[% letter %]</a>
222             [% END %]
223         </div>
224
225         <div id="info" class="dialog message"></div>
226         <div id="error" class="dialog alert"></div>
227
228         <input type="hidden" id="firstletter_filter" value="" />
229         <div id="searchresults">
230             <table id="memberresultst">
231                 <thead>
232                     <tr>
233                         [% FOR column IN columns %]
234                             [% SWITCH column %]
235                                 [% CASE 'cardnumber' %]<th>Card</th>
236                                 [% CASE 'dateofbirth' %]<th>Date of birth</th>
237                                 [% CASE 'address' %]<th>Address</th>
238                                 [% CASE 'name' %]<th>Name</th>
239                                 [% CASE 'branch' %]<th>Library</th>
240                                 [% CASE 'category' %]<th>Category</th>
241                                 [% CASE 'dateexpiry' %]<th>Expires on</td>
242                                 [% CASE 'borrowernotes' %]<th>Notes</th>
243                                 [% CASE 'action' %]<th>&nbsp;</th>
244                             [% END %]
245                         [% END %]
246                     </tr>
247                   </thead>
248                 <tbody></tbody>
249             </table>
250         </div>
251
252 <div id="closewindow"><a href="#" class="btn btn-default btn-default close">Close</a></div>
253 </div>
254 </div>
255 [% SET popup_window = 1 %]
256 [% INCLUDE 'intranet-bottom.inc' %]