Bug 11317: Add id and class attributes to body
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / serials / serials-search.tt
1 [% USE Asset %]
2 [% USE AuthorisedValues %]
3 [% USE Branches %]
4 [% USE CGI %]
5 [% USE KohaDates %]
6 [% SET footerjs = 1 %]
7 [% INCLUDE 'doc-head-open.inc' %]
8 <title>Koha &rsaquo; Serials [% biblionumber %]</title>
9 [% INCLUDE 'doc-head-close.inc' %]
10 [% Asset.css("css/datatables.css") %]
11 <style type="text/css">input.dt-filter { width : 100%; font-size : 85%; }</style>
12 </head>
13
14 <body id="ser_serials-home" class="ser">
15 [% INCLUDE 'header.inc' %]
16 [% INCLUDE 'serials-search.inc' %]
17
18 <div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; [% IF ( done_searched ) %]<a href="/cgi-bin/koha/serials/serials-home.pl">Serials</a> &rsaquo; Search results[% ELSE %]Serials [% END %] </div>
19
20 [% url_params = [] %]
21 [% FOREACH param IN CGI.params.pairs %]
22     [% escaped_value = BLOCK %][% param.value | uri %][% END %]
23     [% url_params.push(param.key _ '=' _ escaped_value) %]
24 [% END %]
25 [% SET referrer = '/cgi-bin/koha/serials/serials-search.pl?' %]
26 [% referrer = BLOCK %][% referrer | url %][% url_params.join("&amp;") |uri %][% END %]
27 [% SET edit_action_link = '/cgi-bin/koha/serials/subscription-batchedit.pl?referrer=' _ referrer %]
28
29 [% BLOCK subscriptions_table %]
30   <form method="post">
31
32     [% IF closed %]
33         [% SET tab = 'closed' %]
34     [% ELSE %]
35         [% SET tab = 'opened' %]
36     [% END %]
37     [% IF CAN_user_serials_edit_subscription %]
38         <div class="actions">
39             <a class="select-all" href="#" data-tab="[% tab %]"><i class="fa fa-check"></i> Select all</a>
40             |
41             <a class="clear-all" href="#" data-tab="[% tab %]"><i class="fa fa-remove"></i> Clear all</a>
42             <span class="itemselection_actions">
43                 | Actions:
44                 <a class="itemselection_action_modify"><i class="fa fa-pencil"></i> Edit selected serials</a>
45             </span>
46         </div>
47     [% END %]
48     <table>
49       <thead>
50         <tr>
51             <th></th>
52             <th>ISSN</th>
53             <th class="anti-the">Title</th>
54             <th>Notes</th>
55             <th>Library</th>
56             <th>Location</th>
57             <th>Call number</th>
58             [% UNLESS closed %]
59                 <th class="title-string">Expiration date</th>
60             [% END %]
61             [% FOR field IN additional_fields_for_subscription %]
62               <th>[% field.name %]</th>
63             [% END %]
64             <th class="NoSort">Actions</th>
65         </tr>
66       </thead>
67       <tfoot>
68         <tr>
69           <td></td>
70           <td><input type="text" class="dt-filter" data-column_num="0" placeholder="Search ISSN" /></td>
71           <td><input type="text" class="dt-filter" data-column_num="1" placeholder="Search title" /></td>
72           <td><input type="text" class="dt-filter" data-column_num="2" placeholder="Search notes" /></td>
73           <td><input type="text" class="dt-filter" data-column_num="3" placeholder="Search library" /></td>
74           <td><input type="text" class="dt-filter" data-column_num="4" placeholder="Search location" /></td>
75           <td><input type="text" class="dt-filter" data-column_num="5" placeholder="Search callnumber" /></td>
76           [% UNLESS closed %]
77               <td><input type="text" class="dt-filter" data-column_num="6" placeholder="Search expiration date" /></td>
78           [% END %]
79           [% FOR field IN additional_fields_for_subscription %]
80             <td><input type="text" class="dt-filter" data-column_num="[% loop.count + 6 %]" placeholder="Search [% field.name %]" /></td>
81           [% END %]
82           <td></td>
83         </tr>
84       </tfoot>
85       <tbody>
86         [% FOREACH subscription IN subscriptions %]
87         [% UNLESS subscription.cannotdisplay %]
88           <tr>
89             <td>
90                 [% UNLESS subscription.cannotedit %]
91                     <input type="checkbox" name="subscriptionid" value="[% subscription.subscriptionid %]" />
92                 [% ELSE %]
93                     <input type="checkbox" name="subscriptionid" value="[% subscription.subscriptionid %]" disabled="disabled" title="You cannot edit this subscription" />
94                 [% END %]
95             </td>
96             <td>
97             [% IF ( subscription.issn ) %][% subscription.issn %]
98             [% END %]
99             </td>
100             <td><a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% subscription.subscriptionid %]" class="button" title="subscription detail">[% subscription.title |html %]</a>
101             </td>
102             <td>[% IF ( subscription.publicnotes ) %][% subscription.publicnotes %][% END %]
103             [% IF ( subscription.internalnotes ) %]([% subscription.internalnotes %])[% END %]
104             </td>
105             <td>
106               [% IF ( subscription.branchcode ) %][% Branches.GetName( subscription.branchcode ) %][% END %]
107             </td>
108             <td>
109               [% IF ( subscription.location ) %][% AuthorisedValues.GetByCode( 'LOC', subscription.location ) %][% END %]
110             </td>
111             <td>
112               [% IF ( subscription.callnumber ) %][% subscription.callnumber %][% END %]
113             </td>
114             [% UNLESS closed %]
115                 <td>
116                     [% IF ( subscription.enddate ) %]
117                         <span title="[% subscription.enddate %]">[% subscription.enddate | $KohaDates %]</span>
118                     [% ELSE %]
119                         <span title="0000-00-00"></span>
120                     [% END %]
121                 </td>
122             [% END %]
123
124             [% FOR field IN additional_fields_for_subscription %]
125               [% IF field.authorised_value_category %]
126                 <td>[% AuthorisedValues.GetByCode( field.authorised_value_category, subscription.additional_fields.${field.name} ) %]</td>
127               [% ELSE %]
128                 <td>[% subscription.additional_fields.${field.name} %]</td>
129               [% END %]
130             [% END %]
131
132             <td>
133                 <div class="dropdown">
134                     [% IF closed %]
135                         <a class="btn btn-default btn-xs dropdown-toggle" id="closedsubactions[% subscription.subscriptionid %]" role="button" data-toggle="dropdown" href="#">
136                            Actions <b class="caret"></b>
137                         </a>
138                         <ul class="dropdown-menu pull-right" role="menu" aria-labelledby="closedsubactions[% subscription.subscriptionid %]">
139
140                             [% IF ( routing && CAN_user_serials_routing ) %]
141                                 [% UNLESS ( subscription.cannotedit ) %]
142                                     <li>
143                                         <a href="/cgi-bin/koha/serials/serials-search.pl?subscriptionid=[% subscription.subscriptionid %]&amp;op=reopen&amp;routing=[% subscription.routing %]&amp;searched=1&amp;title_filter=[% title_filter | uri %]&amp;ISSN_filter=[% ISSN_filter | uri %]&amp;EAN_filter=[% EAN_filter | uri %]&amp;published_filter=[% publisher_filter | uri %]&amp;bookseller_filter=[% bookseller_filter | uri %]&amp;branch_filter=[% branch_filter | uri %]" id="reopensub"> <i class="fa fa-repeat"></i> Reopen</a>
144                                     </li>
145                                 [% END %]
146                             [% END # IF ( routing && CAN_user_serials_routing ) %]
147
148                             <li>
149                                 <a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]"><i class="fa fa-list-alt"></i> Issue history</a>
150                             </li>
151
152                         </ul>
153                     [% ELSE %]
154                         <div class="btn-group">
155                             [% IF ( CAN_user_serials_receive_serials ) %]
156                                 [%# There should be no space between these two buttons, it would render badly %]
157                                 <a class="btn btn-default btn-xs" role="button"
158                                    href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&amp;serstatus=1,3,7"><i
159                                    class="fa fa-inbox"></i> Serial receive</a><a
160                                    class="btn btn-default btn-xs dropdown-toggle" id="subactions[% subscription.subscriptionid %]" role="button"
161                                    data-toggle="dropdown" href="#"><b class="caret"></b></a>
162                             [% ELSE %]
163                                 <a class="btn btn-default btn-xs dropdown-toggle" id="subactions[% subscription.subscriptionid %]" role="button" data-toggle="dropdown" href="#">Actions <b class="caret"></b></a>
164                             [% END %]
165                         <ul class="dropdown-menu pull-right" role="menu" aria-labelledby="subactions[% subscription.subscriptionid %]">
166
167                             [% IF ( routing && CAN_user_serials_routing ) %]
168                                 [% IF ( subscription.cannotedit ) %]
169                                 [% ELSE %]
170                                     [% IF ( subscription.routingedit ) %]
171                                         <li>
172                                             <a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscription.subscriptionid %]"><i class="fa fa-pencil"></i> Edit routing list ([% subscription.routingedit %])</a>
173                                         </li>
174                                     [% ELSE %]
175                                         <li>
176                                             <a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscription.subscriptionid %]&amp;op=new"> <i class="fa fa-plus"></i> New routing list</a>
177                                         </li>
178                                     [% END %]
179                                 [% END %]
180                             [% END # IF ( routing && CAN_user_serials_routing ) %]
181
182                             <li>
183                                 <a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]"><i class="fa fa-list-alt"></i> Issue history</a>
184                             </li>
185                         </ul>
186                         </div>
187                     [% END %]
188                 </div>
189             </td>
190
191           </tr>
192           [% END %]
193         [% END %]
194       </tbody>
195     </table>
196   </form>
197 [% END %]
198
199 <div id="doc3" class="yui-t2">
200   <div id="bd">
201     <div id="yui-main">
202       <div class="yui-b">
203       [% INCLUDE 'serials-toolbar.inc' %]
204
205       [% IF ( done_searched ) %]
206         <h2>Serials subscriptions ([% total %] found)</h2>
207       [% ELSE %]
208         <h2>Serials subscriptions search</h2>
209       [% END %]
210
211       [% UNLESS ( done_searched ) %]
212       <div id="advsearch" style="padding-bottom:3em;">
213         <form action="/cgi-bin/koha/serials/serials-search.pl" method="get">
214           <fieldset class="rows">
215           <legend>Search subscriptions</legend>
216               <ol>
217                 <li>
218                   <label for="issn">ISSN:</label>
219                   <input type="text" id="issn" name="ISSN_filter" value="[% ISSN_filter | html %]" />
220                 </li>
221                 <li>
222                   <label for="title">Title:</label>
223                   <input type="text" id="title" name="title_filter" value="[% title_filter | html %]" />
224                 </li>
225                 [% IF ( marcflavour == "UNIMARC" ) %]
226                 <li>
227                   <label for="ean">EAN:</label>
228                   <input type="text" id="ean" name="EAN_filter" value="[% EAN_filter | html %]" />
229                 </li>
230                 [% END %]
231                 <li>
232                   <label for="callnumber">Call number:</label>
233                   <input type="text" id="callnumber" name="callnumber_filter" value="[% callnumber_filter | html %]" />
234                 </li>
235                 <li>
236                   <label for="publisher">Publisher:</label>
237                   <input type="text" id="publisher" name="publisher_filter" value="[% publisher_filter | html %]" />
238                 </li>
239                 <li>
240                   <label for="bookseller">Vendor:</label>
241                   <input type="text" id="bookseller" name="bookseller_filter" value="[% bookseller_filter | html %]" />
242                 </li>
243                 <li>
244                   <label for="branch">Library:</label>
245                   <select id="branch" name="branch_filter">
246                     <option value="">All</option>
247                     [%# FIXME Should not we filter the libraries? %]
248                     [% PROCESS options_for_libraries libraries => Branches.all( selected => branch_filter, unfiltered => 1 ) %]
249                   </select>
250                 </li>
251                 <li>
252                   <label for="location">Location:</label>
253                   [% PROCESS 'av-build-dropbox.inc' name="location_filter", category="LOC", default=location_filter, all=1 %]
254                 </li>
255                 <li>
256                   <label for="to">Expires before:</label>
257                   <input type="text" id="to" name="expiration_date_filter" value="[% expiration_date_filter | $KohaDates %]" size="10" maxlength="10" class="datepickerto" />
258                 </li>
259                 [% FOR field IN additional_fields_for_subscription %]
260                   <li>
261                     <label for="additional_field_[% field.id %]"> [% field.name %]: </label>
262                     [% IF field.authorised_value_choices %]
263                       <select id="additional_field_[% field.id %]" name="additional_field_[% field.id %]_filter">
264                         <option value="">All</option>
265                         [% FOREACH av IN field.authorised_value_choices %]
266                           <option value="[% av.authorised_value %]">[% av.lib %]</option>
267                         [% END %]
268                       </select>
269                     [% ELSE %]
270                       <input id="additional_field_[% field.id %]" type="text" value="[% additional_fields.${field.name} %]" name="additional_field_[% field.id %]_filter" />
271                     [% END %]
272                   </li>
273                 [% END %]
274               </ol>
275               <input type="hidden" name="searched" value="1" />
276               <fieldset class="action">
277                 <input type="submit" value="Search" />
278               </fieldset>
279           </fieldset>
280         </form>
281       </div>
282       [% END %]
283       [% IF ( done_searched ) %]
284         [% IF ( total ) %]
285           <div id="serialstabs" class="toptabs" style="clear:both;">
286             <ul class="ui-tabs-nav">
287               <li><a href="#opened">Open ([% openedsubscriptions.size || 0 %])</a></li>
288               <li><a href="#closed">Closed ([% closedsubscriptions.size || 0 %])</a></li>
289             </ul>
290             <div id="opened">
291               [% IF openedsubscriptions %]
292                   [% INCLUDE subscriptions_table subscriptions = openedsubscriptions %]
293               [% ELSE %]
294                 <div class="dialog message">
295                   <p>Your search returned no open subscriptions.</p>
296                 </div>
297               [% END %]
298             </div>
299             <div id="closed">
300               [% IF closedsubscriptions %]
301                 [% INCLUDE subscriptions_table subscriptions = closedsubscriptions closed = 1 %]
302               [% ELSE %]
303                 <div class="dialog message">
304                   <p>Your search returned no closed subscriptions.</p>
305                 </div>
306               [% END %]
307             </div>
308           </div>
309         [% ELSE %]
310             <div class="dialog message">
311               <p>Your search returned no results.</p>
312             </div>
313         [% END %]
314       [% END %]
315     </div>
316   </div>
317
318   <div class="yui-b">
319     [% INCLUDE 'serials-menu.inc' %]
320     [% IF ( done_searched ) %]
321     <div id="advsearch">
322         <form action="/cgi-bin/koha/serials/serials-search.pl" method="get">
323           <fieldset class="brief">
324             <h4>Search subscriptions</h4>
325               <ol>
326                 <li>
327                   <label for="issn">ISSN:</label>
328                   <input type="text" id="issn" name="ISSN_filter" value="[% ISSN_filter | html %]" />
329                 </li>
330                 <li>
331                   <label for="title">Title:</label>
332                   <input type="text" id="title" name="title_filter" value="[% title_filter | html %]" />
333                 </li>
334                 [% IF ( marcflavour == "UNIMARC" ) %]
335                 <li>
336                   <label for="ean">EAN:</label>
337                   <input type="text" id="ean" name="EAN_filter" value="[% EAN_filter | html %]" />
338                 </li>
339                 [% END %]
340                 <li>
341                   <label for="callnumber">Call number:</label>
342                   <input type="text" id="callnumber" name="callnumber_filter" value="[% callnumber_filter | html %]" />
343                 </li>
344                 <li>
345                   <label for="publisher">Publisher:</label>
346                   <input type="text" id="publisher" name="publisher_filter" value="[% publisher_filter | html %]" />
347                 </li>
348                 <li>
349                   <label for="bookseller">Vendor:</label>
350                   <input type="text" id="bookseller" name="bookseller_filter" value="[% bookseller_filter | html %]" />
351                 </li>
352                 <li>
353                   <label for="branch">Library:</label>
354                   <select id="branch" name="branch_filter">
355                     <option value="">All</option>
356                     [%# FIXME Should not we filter the libraries? %]
357                     [% PROCESS options_for_libraries libraries => Branches.all( selected => branch_filter, unfiltered => 1 ) %]
358                   </select>
359                 </li>
360                 <li>
361                   <label for="location">Location:</label>
362                   [% PROCESS 'av-build-dropbox.inc' name="location_filter", category="LOC", default=location_filter, all=1 %]
363                 </li>
364                 <li>
365                   <label for="to">Expires before:</label>
366                   <input type="text" id="to" name="expiration_date_filter" value="[% expiration_date_filter | $KohaDates %]" size="10" maxlength="10" class="datepickerto" />
367                 </li>
368
369                 [% FOR field IN additional_fields_for_subscription %]
370                   <li>
371                     <label for="additional_field_[% field.id %]ID"> [% field.name %]: </label>
372                     [% IF field.authorised_value_choices %]
373                       <select id="additional_field_[% field.id %]" name="additional_field_[% field.id %]_filter">
374                         <option value="">All</option>
375                         [% FOREACH av IN field.authorised_value_choices %]
376                           [% IF av.authorised_value == additional_field_filters.${field.name}.value %]
377                             <option value="[% av.authorised_value %]" selected="selected">[% av.lib %]</option>
378                           [% ELSE %]
379                             <option value="[% av.authorised_value %]">[% av.lib %]</option>
380                           [% END %]
381                         [% END %]
382                       </select>
383                     [% ELSE %]
384                       <input id="additional_field_[% field.id %]" type="text" value="[% additional_field_filters.${field.name}.value %]" name="additional_field_[% field.id %]_filter" />
385                     [% END %]
386                   </li>
387                 [% END %]
388               </ol>
389               <input type="hidden" name="searched" value="1" />
390               <fieldset class="action">
391                 <input type="submit" value="Search" />
392               </fieldset>
393             </div>
394           </fieldset>
395         </form>
396       [% END %]
397   </div>
398 </div>
399
400 [% MACRO jsinclude BLOCK %]
401     [% INCLUDE 'calendar.inc' %]
402     [% INCLUDE 'datatables.inc' %]
403     <script type="text/javascript">
404         var subscriptionid = "[% subscriptionid %]";
405         var MSG_CLOSE_SUBSCRIPTION = _("Are you sure you want to close this subscription?");
406         var MSG_REOPEN_SUBSCRIPTION = _("Are you sure you want to reopen this subscription?");
407         var CONFIRM_DELETE_SUBSCRIPTION = _("Are you sure you want to delete this subscription?");
408     </script>
409     [% Asset.js("js/serials-toolbar.js") %]
410     <script type="text/javascript">
411
412             function itemSelectionBuildEditLink(div) {
413                 var subscription_ids = new Array();
414                 $("input[name='subscriptionid'][type='checkbox']:checked", div).each(function() {
415                     subscription_ids.push($(this).val());
416                 });
417                 if (subscription_ids.length > 0) {
418                     var url = "[% edit_action_link %]";
419                     url += '&subscriptionid=' + subscription_ids.join('&subscriptionid=');
420                     $('a.itemselection_action_modify').attr('href', url);
421                 } else {
422                     return false;
423                 }
424                 return true;
425             }
426
427             function itemSelectionBuildActionLinks(tab) {
428                 var div = $("#" + tab);
429                 var modify_link_ok = itemSelectionBuildEditLink(div);
430                 if (modify_link_ok) {
431                     $('.itemselection_actions', div).show();
432                 } else {
433                     $('.itemselection_actions', div).hide();
434                 }
435             }
436
437         $(document).ready(function() {
438             var osrlt = $("#opened table").dataTable($.extend(true, {}, dataTablesDefaults, {
439                 "sPaginationType": "four_button",
440                 "aoColumnDefs": [
441                     { 'bSortable': false, "bSearchable": false, 'aTargets': [ 'NoSort' ] },
442                     { "sType": "title-string", "aTargets" : [ "title-string" ] },
443                     { 'sType': "anti-the", 'aTargets' : [ 'anti-the'] }
444                 ]
445             }));
446
447             var csrlt = $("#closed table").dataTable($.extend(true, {}, dataTablesDefaults, {
448                 // FIXME sort function of additional_fields!
449                 "sPaginationType": "four_button",
450                 "aoColumnDefs": [
451                     { 'bSortable': false, 'aTargets': [ 'NoSort' ] },
452                     { 'sType': "anti-the", 'aTargets' : [ 'anti-the'] }
453                 ]
454             }));
455
456             osrlt.fnAddFilters("dt-filter", 750);
457             csrlt.fnAddFilters("dt-filter", 750);
458
459             $('#serialstabs').tabs();
460             $("#reopensub").click(function(){
461                 return confirm(_("Are you sure you want to reopen this subscription?"));
462             });
463
464             $('.select-all, .clear-all').on('click', function(e) {
465                 e.preventDefault();
466                 var checkboxes = $(this).parents('form').find('input[type="checkbox"]');
467                 checkboxes.prop('checked', $(this).hasClass('select-all'));
468                 var tab = $(this).data("tab");
469                 itemSelectionBuildActionLinks(tab);
470             });
471
472             itemSelectionBuildActionLinks("opened");
473             itemSelectionBuildActionLinks("closed");
474             $("input[name='subscriptionid'][type='checkbox']").change(function() {
475                 var div = $(this).parents('form').parent().attr("id");
476                 itemSelectionBuildActionLinks(div);
477             });
478
479         });
480     </script>
481 [% END %]
482
483 [% INCLUDE 'intranet-bottom.inc' %]