Bug 19039: Results of virtual shelves (lists) not sortable by date
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / virtualshelves / shelves.tt
1 [% USE raw %]
2 [% USE Asset %]
3 [% USE Koha %]
4 [% USE KohaDates %]
5 [% SET PRIVATE = 1 %]
6 [% SET PUBLIC = 2 %]
7 [% SET footerjs = 1 %]
8 [% INCLUDE 'doc-head-open.inc' %]
9 <title>Koha &rsaquo; [% IF op == 'view' %]Lists &rsaquo; Contents of [% shelf.shelfname | html %][% ELSE %]Lists[% END %][% IF op == 'add_form' %] &rsaquo; Create new list[% END %][% IF op == 'edit_form' %] &rsaquo; Edit list [% shelf.shelfname | html %][% END %]</title>
10 [% INCLUDE 'doc-head-close.inc' %]
11 [% Asset.css("css/datatables.css") | $raw %]
12 <style type="text/css">textarea { width: 100%; }</style>
13
14 [% BLOCK list_permissions %]
15     <li>
16         <label for="allow_changes_from">Allow changes to contents from: </label>
17         <select name="allow_changes_from" id="allow_changes_from" onchange="AdjustRemark()">
18
19             [% IF shelf.allow_change_from_owner %]<option value="0">Nobody</option>[% ELSE %]<option value="0" selected="selected">Nobody</option>[% END %]
20
21             [% IF shelf.allow_change_from_owner && (( !shelf.is_public && !shelf.is_shared ) || !shelf.allow_change_from_others ) %]
22                 <option value="1" selected="selected">Owner only</option>
23             [% ELSE %]
24                 <option value="1">Owner only</option>
25             [% END %]
26
27             [% IF shelf.allow_change_from_others %]<option value="2" selected="selected">Anyone seeing this list</option>[% ELSE %]<option value="2">Anyone seeing this list</option>[% END %]
28
29         </select>
30         &emsp; <span id="anyone_remark" style="display:none;color:red;">The Anyone permission has no actual effect while this list is strictly private.</span>
31     </li>
32 [% END %]
33 </head>
34
35 <body id="lists_shelves" class="lists">
36 [% INCLUDE 'header.inc' %]
37 [% INCLUDE 'cat-search.inc' %]
38
39 <div id="breadcrumbs">
40     <a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo;
41     [% IF op != 'list' %]
42         <a href="/cgi-bin/koha/virtualshelves/shelves.pl">Lists</a>
43     [% ELSE %]
44         Lists
45     [% END %]
46     [% IF shelf AND shelf.is_private %] &rsaquo;
47         [% IF op == 'view' OR op == 'edit_form' %]
48             <a href="/cgi-bin/koha/virtualshelves/shelves.pl?op=list&amp;category=[% PRIVATE | html %]">Your lists</a>
49         [% ELSE %]
50             Your lists
51         [% END %]
52     [% ELSIF shelf AND shelf.is_public %] &rsaquo;
53         [% IF op == 'view' %]
54             <a href="/cgi-bin/koha/virtualshelves/shelves.pl?op=list&amp;category=[% PUBLIC | html %]">Public lists</a>
55         [% ELSE %]
56             Public lists
57         [% END %]
58     [% END %]
59
60 [% IF op == 'view' %]&rsaquo; Contents of <i>[% shelf.shelfname | html %]</i>[% END %][% IF op == 'add_form' %] &rsaquo; Create new list[% END %][% IF op == 'edit_form' %] &rsaquo; Edit list <i>[% shelf.shelfname | html %]</i>[% END %]</div>
61
62 <div id="doc3" class="yui-t2">
63 <div id="bd">
64 <div id="yui-main">
65 <div class="yui-b">
66
67    <div class="yui-g">[% INCLUDE 'virtualshelves-toolbar.inc' %]
68    </div>
69
70 [% FOR m IN messages %]
71     <div class="dialog [% m.type | html %]">
72         [% SWITCH m.code %]
73         [% CASE 'error_on_update' %]
74             <span>An error occurred when updating this list.</span>
75         [% CASE 'error_on_insert' %]
76             <span>An error occurred when creating this list.</span>
77         [% CASE 'error_on_delete' %]
78             <span>An error occurred when deleting this list.</span>
79         [% CASE 'error_on_add_biblio' %]
80             [% IF m.item_barcode %]
81                <span>The item ([% m.item_barcode | html %]) has not been added to the list. Please verify it is not already in the list.</span>
82             [% ELSE %]
83                 <span>The record ([% m.bibnum | html %]) has not been added to the list. Please verify it is not already in the list.</span>
84             [% END %]
85         [% CASE 'success_on_update' %]
86             <span>List updated.</span>
87         [% CASE 'success_on_insert' %]
88             <span>List created.</span>
89         [% CASE 'success_on_delete' %]
90             <span>List deleted.</span>
91         [% CASE 'success_on_add_biblio' %]
92             [% IF m.item_barcode %]
93                 <span>The item ([% m.item_barcode | html %]) has been added to the list.</span>
94             [% ELSE %]
95                 <span>The record ([% m.bibnum | html %]) has been added to the list.</span>
96             [% END %]
97         [% CASE 'success_on_remove_biblios' %]
98             <span>The item has been removed from the list.</span>
99         [% CASE 'does_not_exist' %]
100             <span>This list does not exist.</span>
101         [% CASE 'item_does_not_exist' %]
102             [% IF m.item_barcode %]
103                 <span>The item ([% m.item_barcode | html %]) does not exist.</span>
104             [% ELSE %]
105                 <span>The record ([% m.bibnum | html %]) does not exist.</span>
106             [% END %]
107         [% CASE 'unauthorized_on_view' %]
108             <span>You do not have permission to view this list.</span>
109         [% CASE 'unauthorized_on_update' %]
110             <span>You do not have permission to update this list.</span>
111         [% CASE 'unauthorized_on_delete' %]
112            <span>You do not have permission to delete this list.</span>
113         [% CASE 'unauthorized_on_add_biblio' %]
114             <span>You do not have permission to add a record to this list.</span>
115         [% CASE 'no_biblio_removed' %]
116             <span>No record was removed.</span>
117         [% CASE 'Koha::Exceptions::Virtualshelves::DuplicateObject' %]
118             <span>An error occurred when creating this list. The name [% shelfname | html %] already exists.</span>
119         [% CASE 'Koha::Exceptions::Virtualshelves::UseDbAdminAccount' %]
120             <span>List could not be created. (Do not use the database administrator account.)</span>
121         [% CASE 'DBIx::Class::Exception' %]
122             [% m.msg | html %]
123         [% CASE %]
124             [% m.code | html %] [% m.msg | html %]
125         [% END %]
126     </div>
127 [% END %]
128
129 [% IF op == 'view' %]
130    <div class="yui-g">
131     [% IF itemsloop %]
132
133     <h3>Contents of <i>[% shelf.shelfname | html %]</i></h3>
134     <div class="pages">[% pagination_bar | $raw %]</div>
135     <form action="/cgi-bin/koha/virtualshelves/shelves.pl" id="listform" method="post" class="checkboxed">
136         <input type="hidden" name="op" value="remove_biblios" />
137         <input type="hidden" name="referer" value="view" />
138         <input type="hidden" name="shelfnumber" value="[% shelf.shelfnumber | html %]" />
139
140 [% IF direction == 'asc' %]
141     [% SET new_direction = 'desc' %]
142 [% ELSE %]
143     [% SET direction = 'desc' %]
144     [% SET new_direction = 'asc' %]
145 [% END %]
146
147 <div id="searchheader" class="noprint">
148     [% IF itemsloop %]
149         <div id="selection_ops"><span class="checkall"></span> |
150         <span class="clearall"></span>
151
152         <span class="addto">| </span>
153         &nbsp;
154         [% IF CAN_user_reserveforothers && Koha.Preference('DisplayMultiPlaceHold') %]
155             <div class="btn-group"><button class="btn btn-default btn-xs placehold"><i class="fa fa-sticky-note-o"></i> Place hold</button></div>
156         [% END %]
157         [% IF can_remove_biblios %]
158             <div class="btn-group"><button type="submit" class="btn btn-default btn-xs list-remove"><i class="fa fa-trash"></i> Remove selected</button></div>
159         [% END %]
160         [% IF ( CAN_user_editcatalogue_edit_catalogue ) %]<div class="btn-group"><button type="submit" class="btn btn-default btn-xs merge-items"><i class="fa fa-compress"></i> Merge selected</button></div>[% END %]
161         </div>
162     [% END %]
163 </div>
164
165     <table id="searchresults">
166             <tr>
167                 [% IF ( itemsloop ) %]<th class="checkall">&nbsp;</th>[% END %]
168
169                 [% UNLESS ( item_level_itypes ) %]<th>Item type</th>[% END %]
170                 <th>
171                     <a href="/cgi-bin/koha/virtualshelves/shelves.pl?op=view&amp;shelfnumber=[% shelf.shelfnumber | html %]&amp;sortfield=title&amp;direction=[% IF sortfield != 'title' %]asc[% ELSE %][% new_direction | html %][% END %]">Title</a>
172                     [% IF sortfield == 'title' %]
173                         <img src="[% interface | html %]/[% theme | html %]/img/[% direction | html %].gif" alt="[% direction | html %] sort" />
174                     [% ELSE %]
175                         <img src="[% interface | html %]/[% theme | html %]/img/ascdesc.gif" alt="" />
176                     [% END %]
177                 </th>
178                 <th>
179                     <a href="/cgi-bin/koha/virtualshelves/shelves.pl?op=view&amp;shelfnumber=[% shelf.shelfnumber | html %]&amp;sortfield=author&amp;direction=[% IF sortfield != 'author' %]asc[% ELSE %][% new_direction | html %][% END %]">Author</a>
180                    [% IF sortfield == 'author' %]
181                         <img src="[% interface | html %]/[% theme | html %]/img/[% direction | html %].gif" alt="[% direction | html %] sort" />
182                    [% ELSE %]
183                        <img src="[% interface | html %]/[% theme | html %]/img/ascdesc.gif" alt="" />
184                    [% END %]
185                  </th>
186                 <th>
187                     <a href="/cgi-bin/koha/virtualshelves/shelves.pl?op=view&amp;shelfnumber=[% shelf.shelfnumber %]&amp;sortfield=dateadded&amp;direction=[% IF sortfield != 'dateadded' %]asc[% ELSE %][% new_direction %][% END %]">Date added</a>
188                     [% IF sortfield == 'dateadded' %]
189                         <img src="[% interface %]/[% theme %]/img/[% direction %].gif" alt="[% direction %] sort" />
190                     [% ELSE %]
191                         <img src="[% interface %]/[% theme %]/img/ascdesc.gif" alt="" />
192                     [% END %]
193                 </th>
194                 <th>
195                     <a href="/cgi-bin/koha/virtualshelves/shelves.pl?op=view&amp;shelfnumber=[% shelf.shelfnumber | html %]&amp;sortfield=itemcallnumber&amp;direction=[% IF sortfield != 'itemcallnumber' %]asc[% ELSE %][% new_direction | html %][% END %]">Call number</a>
196                    [% IF sortfield == 'itemcallnumber' %]
197                         <img src="[% interface | html %]/[% theme | html %]/img/[% direction | html %].gif" alt="[% direction | html %] sort" />
198                    [% ELSE %]
199                        <img src="[% interface | html %]/[% theme | html %]/img/ascdesc.gif" alt="" />
200                    [% END %]
201                  </th>
202             </tr>
203         [% FOREACH itemsloo IN itemsloop %]
204                 <tr>
205             [% IF itemsloop %]
206                 <td>
207                     <input type="checkbox" class="selection" value="[% itemsloo.biblionumber | html %]" name="biblionumber" />
208                 </td>
209             [% END %]
210                         [% UNLESS ( item_level_itypes ) %]<td>
211                 [% UNLESS ( noItemTypeImages || !itemsloo.imageurl ) %]<img src="[% itemsloo.imageurl | html %]" alt="[% itemsloo.description | html %]" title="[% itemsloo.description | html %]" />[% END %][% itemsloo.description | html %]
212                         </td>[% END %]
213                         <td>
214                 [% IF ( itemsloo.XSLTBloc ) %]
215                     [% itemsloo.XSLTBloc | $raw %]
216                 [% ELSE %]
217                     [% INCLUDE 'biblio-default-view.inc' biblionumber = itemsloo.biblionumber %]
218                     [% itemsloo.title | html %][% FOREACH subtitl IN itemsloo.subtitle %] [% subtitl.subfield | html %][% END %]</a>
219                 [% END %]
220                     <p class="hold">
221                         [% IF ( itemsloo.notforloan ) %]
222                             <span class="noholdstext">No holds allowed</span>
223                         [% ELSE %]
224                             [% IF ( itemsloo.ITEM_RESULTS.size ) %]
225                                 <a id="reserve_[% itemsloo.biblionumber | html %]" href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% itemsloo.biblionumber | html %]">Holds</a>
226                                 [% IF ( holdfor ) %] <span class="holdforlink">| <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% itemsloo.biblionumber | html %]&amp;findborrower=[% holdfor_cardnumber | html %]">Place hold for [% holdfor_firstname | html %] [% holdfor_surname | html %] ([% holdfor_cardnumber | html %])</a></span>[% END %]
227                             [% ELSE %]
228                                 <span class="noholdstext">No holds allowed</span>
229                             [% END %]
230                         [% END %]
231                         [% IF ( CAN_user_editcatalogue_edit_catalogue ) %]
232                             | <a href="/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=[% itemsloo.biblionumber | html %]">Edit record</a>
233                         [% END %]
234                         [% IF ( CAN_user_editcatalogue_edit_items ) %]
235                             | <a href="/cgi-bin/koha/cataloguing/additem.pl?biblionumber=[% itemsloo.biblionumber | html %]">Edit items</a>
236                         [% END %]
237                     </p>
238             </td>
239             <td>[% itemsloo.author | html %]</td>
240             <td>[% itemsloo.dateadded | $KohaDates%]</td>
241             <td>
242                 <ul>
243                 [% FOREACH result IN itemsloo.ITEM_RESULTS %]
244                     <li>[% result.holdingbranch | html %] [% IF ( result.location_intranet ) %] ([% result.location_intranet | html %]) [% END %]
245                         [% IF ( result.itemcallnumber ) %]
246                             [<a href="/cgi-bin/koha/catalogue/search.pl?idx=callnum&amp;q=%22[% result.itemcallnumber |uri %]%22">[% result.itemcallnumber | html %]</a>]
247                         [% END %]
248                     </li>
249                 [% END %]
250                 </ul>
251             </td>
252                         </tr>
253                 [% END %]<!-- /itemsloop -->
254     </table>
255     <div class="pages">[% pagination_bar | $raw %]</div>
256 </form>
257
258         [% END %]
259    </div>
260 [% END %]
261
262 [% IF op == 'add_form' OR op == 'edit_form' %]
263 <div class="yui-ge">
264     <div class="yui-u first">
265     <form method="post" action="/cgi-bin/koha/virtualshelves/shelves.pl" class="validated">
266         <fieldset class="rows">
267
268         [% IF op == 'add_form' %]
269             <legend>Create a new list</legend>
270             <input type="hidden" name="op" value="add" />
271         [% ELSE %]
272             <legend>Edit list <i>[% shelf.shelfname | html %]</i></legend>
273             <input type="hidden" name="op" value="edit" />
274         [% END %]
275         <input type="hidden" name="referer" value="[% referer | html %]" />
276         <input type="hidden" name="shelfnumber" value="[% shelf.shelfnumber | html %]" />
277         <ol>
278             <li>
279                 <label for="shelfname" class="required">Name: </label><input type="text" id="shelfname" name="shelfname" size="25" value="[% shelf.shelfname | html %]" required="required" class="required" />
280             <span class="required">Required</span>
281             </li>
282             <li>
283                 <span class="label">Owner: </span>
284                 [% IF op == 'add_form' %]
285                     <input type="hidden" name="owner" id="owner" value="[% loggedinusernumber | html %]" />[% loggedinusername | html %]</li>
286                 [% ELSE %]
287                     [% IF owner %]
288                         <input type="hidden" id="owner" name="owner" value="[% owner.borrowernumber | html %]" />[% owner.firstname _ ' ' _ owner.surname | html %]
289                     [% ELSE %]
290                         <input type="hidden" id="owner" name="owner" value="[% loggedinusernumber | html %]" />[% loggedinusername | html %]
291                     [% END %]
292                 [% END %]
293             </li>
294             <li><label for="sortfield" >Sort this list by: </label>
295             <select name="sortfield">
296             [% IF shelf.sortfield == "title" %]<option value="title" selected="selected">Title</option>[% ELSE %]<option value="title">Title</option>[% END %]
297             [% IF shelf.sortfield == "author" %]<option value="author" selected="selected">Author</option>[% ELSE %]<option value="author">Author</option>[% END %]
298             [% IF shelf.sortfield == "copyrightdate" %]<option value="copyrightdate" selected="selected">Copyrightdate</option>[% ELSE %]<option value="copyrightdate">Copyrightdate</option>[% END %]
299             [% IF shelf.sortfield == "itemcallnumber" %]<option value="itemcallnumber" selected="selected">Call number</option>[% ELSE %]<option value="itemcallnumber">Call number</option>[% END %]
300             </select></li>
301             <li><label for="category">Category: </label>
302                 <select id="category" name="category" onchange="AdjustRemark()">
303                 [% IF shelf.is_private %]
304                     <option value="1" selected="selected">Private</option>
305                 [% ELSE %]
306                     <option value="1">Private</option>
307                 [% END %]
308                 [% IF shelf.is_public %]
309                     <option value="2" selected="selected">Public</option>
310                 [% ELSE %]
311                     <option value="2">Public</option>
312                 [% END %]
313                            </select></li>
314
315             [% INCLUDE list_permissions %]
316
317         </ol>
318     </fieldset>
319
320     <fieldset class="action">
321         <input type="submit" value="Save" class="submit" />
322         [% IF referer == 'view' %]
323            <a href="/cgi-bin/koha/virtualshelves/shelves.pl?op=view&amp;shelfnumber=[% shelf.shelfnumber | html %]" class="cancel">Cancel</a>
324        [% ELSE %]
325             [% IF category == PUBLIC %]
326                 <a href="/cgi-bin/koha/virtualshelves/shelves.pl?op=list&amp;category=[% PUBLIC | html %]" class="cancel">Cancel</a>
327             [% ELSE %]
328                 <a href="/cgi-bin/koha/virtualshelves/shelves.pl?op=list&amp;category=[% PRIVATE | html %]" class="cancel">Cancel</a>
329             [% END %]
330         [% END %]
331     </fieldset>
332     </form>
333     </div>
334 </div>
335 [% END %]
336
337 [% IF op == 'list' %]
338     <h2>Lists</h2>
339     <div id="tabs" class="toptabs">
340         <ul>
341             <li id="privateshelves_tab" class="active"><a href="#tab_content">Your lists</a></li>
342             <li id="publicshelves_tab" class="active"><a href="#tab_content">Public lists</a></li>
343         </ul>
344
345         <div id="tab_content">
346             <table id="listresultst">
347                 <thead>
348                     <tr>
349                         <th class="NoVisible">Type</th>
350                         <th>List name</th>
351                         <th>Contents</th>
352                         <th>Type</th>
353                         <th>Owner</th>
354                         <th>Sort by</th>
355                         <th>Creation date</th>
356                         <th>Modification date</th>
357                         <th>Actions</th>
358                     </tr>
359                     <tr class="filters_row">
360                         <th></th>
361                         <th><input class="filter text_filter" id="searchshelfname_filter" placeholder="List name"></th>
362                         <th></th>
363                         <th></th>
364                         <th><input class="filter text_filter" id="searchowner_filter" placeholder="Owner"></th>
365                         <th>
366                             <select class="filter text_filter" id="searchsortby_filter">
367                                 <option value=""></option>
368                                 <option value="title">Title</option>
369                                 <option value="author">Author</option>
370                                 <option value="copyrightdate">Copyrightdate</option>
371                                 <option value="itemcallnumber">Call number</option>
372                             </select>
373                         </th>
374                         <th></th>
375                         <th></th>
376                         <th></th>
377                     </tr>
378                 </thead>
379                 <tbody></tbody>
380             </table>
381         </div>
382     </div>
383 [% END %]
384
385 <form id="hold_form" method="get" action="/cgi-bin/koha/reserve/request.pl">
386     <!-- Value will be set here by placeHold() -->
387     <input id="hold_form_biblios" type="hidden" name="biblionumbers" value="" />
388     <input type="hidden" name="multi_hold" value="1"/>
389 </form>
390
391 </div>
392 </div>
393
394 [% IF ( can_add_biblios ) %]
395 <div class="yui-b">
396   <form action="/cgi-bin/koha/virtualshelves/shelves.pl" method="post">
397     <fieldset class="brief noprint">
398       <h4>Add items</h4>
399       <ol>
400         <li>
401           <label for="barcodes">Barcodes:</label>
402           <textarea name="barcodes" id="barcodes" class="focus" autocomplete="off" rows="5"></textarea>
403           <input type="hidden" name="op" value="add_biblio" />
404           <input type="hidden" name="referer" value="view" />
405           <input type="hidden" name="shelfnumber" value="[% shelf.shelfnumber | html %]" />
406         </li>
407         <li>
408           <label for="biblionumbers">Biblio numbers:</label>
409           <textarea name="biblionumbers" id="biblionumbers" class="focus" autocomplete="off" rows="5"></textarea>
410           <input type="hidden" name="op" value="add_biblio" />
411           <input type="hidden" name="referer" value="view" />
412           <input type="hidden" name="shelfnumber" value="[% shelf.shelfnumber | html %]" />
413         </li>
414       </ol>
415       <fieldset class="action">
416         <input type="submit" value="Add" />
417       </fieldset>
418     </fieldset>
419   </form>
420 </div>
421 [% END %]
422
423 </div>
424
425 [% MACRO jsinclude BLOCK %]
426     [% INCLUDE 'datatables.inc' %]
427     [% Asset.js("lib/jquery/plugins/jquery.dataTables.columnFilter.js") | $raw %]
428     [% IF print %]
429         <script type="text/javascript">
430             $( document ).ready(function() {
431                 window.print();
432                 setTimeout('window.close()', 1);
433             });
434         </script>
435     [% END %]
436
437     [% IF op == 'view' %]
438         [% Asset.js("lib/jquery/plugins/jquery.checkboxes.min.js") | $raw %]
439         [% Asset.js("lib/jquery/plugins/jquery.fixFloat.js") | $raw %]
440     [% END %]
441     <script type="text/javascript">
442         var MSG_NO_ITEM_SELECTED = _("Nothing is selected.");
443         var MSG_REMOVE_FROM_LIST = _("Are you sure you want to remove these items from the list?");
444         var MSG_CONFIRM_DELETE_LIST = _("Are you sure you want to remove this list?");
445
446         [% IF op == 'list' %]
447             $(document).ready(function(){
448                 [% IF category == PUBLIC %]
449                     var type = [% PUBLIC | html %];
450                 [% ELSE %]
451                     var type = [% PRIVATE | html %];
452                 [% END %]
453                 var dtListResults = $("#listresultst").dataTable($.extend(true, {}, dataTablesDefaults, {
454
455                 "aaSorting": [[ 5, "asc" ]],
456                     'bServerSide': true,
457                     'sAjaxSource': "/cgi-bin/koha/svc/virtualshelves/search",
458                     'fnServerData': function(sSource, aoData, fnCallback) {
459                         aoData.push({
460                             'name': 'type',
461                             'value': type,
462                         },{
463                             'name': 'shelfname',
464                             'value': $("#searchshelfname_filter").val(),
465                         },{
466                             'name': 'owner',
467                             'value': $("#searchowner_filter").val(),
468                         },{
469                             'name': 'sortby',
470                             'value': $("#searchsortby_filter").val(),
471                         },{
472                             'name': 'template_path',
473                             'value': 'virtualshelves/tables/shelves_results.tt',
474                         });
475                         $.ajax({
476                             'dataType': 'json',
477                             'type': 'POST',
478                             'url': sSource,
479                             'data': aoData,
480                             'success': function(json){
481                                 fnCallback(json);
482                             }
483                         });
484                     },
485                     'aoColumns':[
486                         { 'mDataProp': 'dt_type' },
487                         { 'mDataProp': 'dt_shelfname' },
488                         { 'mDataProp': 'dt_count' },
489                         { 'mDataProp': 'dt_is_shared' },
490                         { 'mDataProp': 'dt_owner' },
491                         { 'mDataProp': 'dt_sortby' },
492                         { 'mDataProp': 'dt_created_on' },
493                         { 'mDataProp': 'dt_modification_time' },
494                         { 'mDataProp': 'dt_action', 'bSortable': false, 'sClass': 'actions' }
495                     ],
496                     "aoColumnDefs": [
497                         { "bVisible": false, "aTargets": [ 'NoVisible' ] }
498                     ],
499                     'bAutoWidth': false,
500                     'sPaginationType': 'full_numbers',
501                     'bFilter': false,
502                     "bProcessing": true,
503                     "bSortCellsTop": true
504                 }));
505
506                 dtListResults.fnAddFilters("filter", 750);
507
508                 var tabs = $("#tabs").tabs({
509                     [% IF category == PUBLIC %]
510                         active: 1,
511                     [% ELSE %]
512                         active: 0,
513                     [% END %]
514                     activate: function(e, ui) {
515                         var active = tabs.tabs("option", "active" );
516                         if ( active == 0 ) {
517                             type = [% PRIVATE | html %];
518                             dtListResults.fnDraw();
519                         } else if ( active == 1 ) {
520                             type = [% PUBLIC | html %];
521                             dtListResults.fnDraw();
522                         }
523                     }
524                 });
525                 $("body").on("click", ".deleteshelf", function(){
526                     return confirmDelete(MSG_CONFIRM_DELETE_LIST);
527                 });
528             });
529         [% END %]
530
531         [% IF shelf AND op == 'view' %]
532             $(document).ready(function(){
533                 [% IF ( itemsloop ) %]$('#searchheader').fixFloat();[% END %]
534                 $("span.clearall").html("<a id=\"CheckNone\" href=\"/cgi-bin/koha/shelves.pl\"><i class=\"fa fa-remove\"></i>"+_(" Clear all")+"<\/a>");
535                 $("span.checkall").html("<a id=\"CheckAll\" href=\"/cgi-bin/koha/shelves.pl\"><i class=\"fa fa-check\"></i>"+_(" Select all")+"<\/a>");
536                 $("#CheckAll").click(function(){
537                     $(".checkboxed").checkCheckboxes();
538                     return false;
539                 });
540                 $("#CheckNone").click(function(){
541                     $(".checkboxed").unCheckCheckboxes();
542                     return false;
543                 });
544                 $(".placehold").on("click",function(e){
545                     placeHold();
546                     e.preventDefault();
547                 });
548                 $(".addtocart").show();
549                 var param1 = "| <label for=\"addto\">"+_("Add to:")+"<\/label><select name=\"addto\" id=\"addto\"><option value=\"\"><\/option>";
550                 [% IF ( intranetbookbag ) %]
551                      param1 += "<option value=\"addtocart\">"+_("Cart")+"<\/option>";
552                 [% END %]
553                 [% IF Koha.Preference('virtualshelves') %]
554                     [% IF add_to_some_private_shelves.count %]
555                         param1 += "<optgroup label=\""+_("Your lists:")+"\">";
556                         [% SET number_of_private_shelves = 0 %]
557                         [% FOREACH s IN add_to_some_private_shelves %]
558                             [% IF shelfnumber != s.shelfnumber %]
559                                 param1 += "<option id=\"s[% s.shelfnumber | html %]\" value=\"addtolist\">[% s.shelfname | html %]<\/option>";
560                                 [% SET number_of_private_shelves = number_of_private_shelves + 1 %]
561                                 [% IF number_of_private_shelves == 10 %][% LAST | html %][% END %]
562                             [% END %]
563                         [% END %]
564                         param1 += "<\/optgroup>";
565                     [% END %]
566                     [% IF add_to_some_public_shelves.count %]
567                         param1 += "<optgroup label=\""+_("Public lists:")+"\">";
568                         [% SET number_of_public_shelves = 0 %]
569                         [% FOREACH s IN add_to_some_public_shelves %]
570                             [% IF shelfnumber != s.shelfnumber %]
571                                 param1 += "<option id=\"s[% s.shelfnumber | html %]\" value=\"addtolist\">[% s.shelfname | html %]<\/option>";
572                                 [% SET number_of_public_shelves = number_of_public_shelves + 1 %]
573                                 [% IF number_of_public_shelves == 10 %][% LAST | html %][% END %]
574                             [% END %]
575                         [% END %]
576                         param1 += "<\/optgroup>";
577                     [% END %]
578                     [% IF add_to_some_private_shelves.count > 10 or add_to_some_public_shelves.count > 10 %]
579                         param1 += "<option value=\"morelists\">[ "+_("More lists")+" ]<\/option>";
580                     [% END %]
581                     param1 +="<option value=\"newlist\">"+_("[ New list ]")+"<\/option>"
582                 [% END %]
583                 param1 += "<\/select> <button id=\"cartsubmit\" type=\"submit\" class=\"btn btn-default btn-xs\">"+_("Save")+"</button>";
584                 $("span.addto").html(param1);
585                 $("#cartsubmit").on("click",function(e){
586                     cartList();
587                     e.preventDefault();
588                 });
589                 $("#addto").change(function(){
590                     cartList();
591                 });
592                 $(".addto").find("input:submit").click(function(e){
593                     e.preventDefault();
594                     cartList();
595                 });
596                 $("#selection_ops").show();
597                 $(".merge-items").on("click",function(e){
598                     e.preventDefault();
599                     MergeItems();
600                 });
601                 $("#listform").on("submit",function(e){
602
603                 });
604                 $(".list-remove").on("click",function(e){
605                     if($(".selection").filter(":checked").length > 0){
606                         return confirm(MSG_REMOVE_FROM_LIST);
607                     } else {
608                         alert(MSG_NO_ITEM_SELECTED);
609                         e.preventDefault();
610                     }
611                 });
612             });
613         [% END %]
614
615         [% IF shelf AND op == 'edit_form' %]
616             $(document).ready(function(){
617                 AdjustRemark();
618             });
619         [% END %]
620
621         /**
622          * This function checks if the adequate number of records are checked for merging
623          */
624         function MergeItems() {
625             var checkboxes = $("input:checkbox:checked");
626             if (checkboxes.length < 2) {
627                 alert(_("At least two records must be selected for merging."));
628             } else {
629                 var params = [];
630                 $(checkboxes).each(function() {
631                     params.push('biblionumber=' + $(this).val());
632                 });
633                 var url = '/cgi-bin/koha/cataloguing/merge.pl?' + params.join('&');
634                 location.href = url;
635             }
636             return false;
637         }
638
639         /**
640          * This function checks all checkboxes if all are empty,
641          * or unchecks all if any already checked.
642          */
643         function CheckAll(){
644             var checkboxes = document.getElementsByTagName('input');
645             var nbCheckbox = checkboxes.length;
646             var check = areAllChecked();
647             for(var i=0;i<nbCheckbox;i++){
648                 if(checkboxes[i].getAttribute('type') == "checkbox" ){
649                     checkboxes[i].checked = (check) ? 0 : 1;
650                 }
651             }
652         }
653         /**
654          * This function returns true if ALL checkboxes are checked
655          */
656         function areAllChecked(){
657             var checkboxes = document.getElementsByTagName('input');
658             var nbCheckbox = checkboxes.length;
659             for(var i=0;i<nbCheckbox;i++){
660                 if(checkboxes[i].getAttribute('type') == "checkbox" ){
661                     if(checkboxes[i].checked == 0){
662                         return false;
663                     }
664                 }
665             }
666             return true;
667         }
668
669         function placeHold () {
670             var checkedItems = $(".selection:checked");
671             if ($(checkedItems).size() == 0) {
672                 alert(MSG_NO_ITEM_SELECTED);
673                 return false;
674             }
675             var bibs = "";
676             $(checkedItems).each(function() {
677                 bibs += $(this).val() + "/";
678             });
679             $("#hold_form_biblios").val(bibs);
680             $("#hold_form").submit();
681             return false;
682         }
683
684         function cartList(){
685             var checkboxes = $("#searchresults").find(":checkbox");
686             var vshelf = vShelfAdd(checkboxes);
687             if($("#addto").find("option:selected").attr("value") == "addtolist"){
688                 var shelfnumber = $("#addto").find("option:selected").attr("id").replace("s","");
689                 if (vshelf) {
690                      openWindow('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?shelfnumber='+shelfnumber+'&confirm=1&' + vshelf,'popup',500,500);
691                 }
692                 return false;
693             } else if($("#addto").find("option:selected").attr("value") == "newlist"){
694                 if (vshelf) {
695                     openWindow('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?newshelf=1&' + vshelf,'popup',500,500);
696                 }
697                 return false;
698             } else if($("#addto").find("option:selected").attr("value") == "morelists"){
699                 if (vshelf) {
700                     openWindow('/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?' + vshelf,'popup',500,500);
701                 }
702                 return false;
703             }
704             if($("#addto").find("option:selected").attr("value") == "addtocart"){
705                 addMultiple(checkboxes);
706                 return false;
707             }
708         }
709
710         function AdjustRemark() {
711             var category = $("#category").val();
712             var perms = $("#allow_changes_from").val();
713
714             if( perms < 2 ) {
715                 $("#anyone_remark").hide();
716             } else if( category==1 ) {
717                 // If we move to Private (without shares), show Anyone remark
718                 // Note: the number of shares is not tested real-time
719                 [% IF !shelf.is_shared %]
720                     $("#anyone_remark").show();
721                 [% ELSE %]
722                     $("#anyone_remark").hide();
723                 [% END %]
724             } else { // category==2
725                 $("#anyone_remark").hide();
726             }
727         }
728         [% IF op == 'view' %]
729
730             function sendList(){
731                 open(CGIBIN+'virtualshelves/sendshelf.pl?shelfid=[% shelf.shelfnumber | html %]','win_form','scrollbars=no,resizable=no,height=300,width=450,top=50,left=100');
732              }
733
734              $(document).ready(function() {
735                 $("#sendlist").click(function(){
736                     sendList();
737                     return false;
738                 });
739                 $("#deleteshelf").click(function(e){
740                     if(confirm(_("Are you sure you want to delete this list?"))){
741                         return true;
742                     } else {
743                         e.preventDefault();
744                     }
745                 });
746              });
747
748         [% END %]
749     </script>
750 [% END %]
751
752 [% INCLUDE 'intranet-bottom.inc' %]