1 $(document).ready(function() {
4 // Don't load holds table unless it is clicked on
5 $("#holds-tab").on( "click", function(){ load_holds_table() } );
7 // If the holds tab is preselected on load, we need to load the table
8 if ( $("#holds-tab").parent().hasClass('ui-state-active') ) { load_holds_table() }
10 function load_holds_table() {
11 var holds = new Array();
13 holdsTable = $("#holds-table").dataTable({
18 "mDataProp": "reservedate_formatted"
21 "mDataProp": function ( oObj ) {
22 title = "<a href='/cgi-bin/koha/reserve/request.pl?biblionumber="
27 $.each(oObj.subtitle, function( index, value ) {
28 title += " " + value.subfield;
34 title += " " + BY.replace( "_AUTHOR_", oObj.author );
37 if ( oObj.itemnotes ) {
39 if ( $.datepicker.formatDate('yy-mm-dd', new Date(oObj.issuedate) ) == ymd ) {
40 span_class = "circ-hlt";
42 title += " - <span class='" + span_class + "'>" + oObj.itemnotes + "</span>"
49 "mDataProp": function( oObj ) {
50 return oObj.itemcallnumber || "";
54 "mDataProp": function( oObj ) {
57 if ( oObj.suspend == 1 ) {
58 data += "<p>" + HOLD_IS_SUSPENDED;
59 if ( oObj.suspend_until ) {
60 data += " " + UNTIL.format( oObj.suspend_until_formatted );
67 if ( oObj.found == "W" ) {
69 if ( oObj.waiting_here ) {
70 data += ITEM_IS_WAITING_HERE;
72 data += ITEM_IS_WAITING;
73 data += " " + AT.format( oObj.waiting_at );
76 } else if ( oObj.transferred ) {
77 data += ITEM_IS_IN_TRANSIT.format( oObj.from_branch, oObj.date_sent );
78 } else if ( oObj.not_transferred ) {
79 data += NOT_TRANSFERRED_YET.format( oObj.not_transferred_by );
83 data += " <a href='/cgi-bin/koha/catalogue/detail.pl?biblionumber="
98 "mDataProp": function( oObj ) {
99 return oObj.branchcode || "";
102 { "mDataProp": "expirationdate_formatted" },
104 "mDataProp": function( oObj ) {
105 if ( oObj.priority && parseInt( oObj.priority ) && parseInt( oObj.priority ) > 0 ) {
106 return oObj.priority;
114 "mDataProp": function( oObj ) {
115 return "<select name='rank-request'>"
116 + "<option value='n'>" + NO + "</option>"
117 + "<option value='del'>" + YES + "</option>"
119 + "<input type='hidden' name='biblionumber' value='" + oObj.biblionumber + "'>"
120 + "<input type='hidden' name='borrowernumber' value='" + borrowernumber + "'>"
121 + "<input type='hidden' name='reserve_id' value='" + oObj.reserve_id + "'>";
126 "mDataProp": function( oObj ) {
127 holds[oObj.reserve_id] = oObj; //Store holds for later use
131 } else if ( oObj.suspend == 1 ) {
132 return "<a class='hold-resume btn btn-link' id='resume" + oObj.reserve_id + "' style='display: inline; white-space: nowrap;'>"
133 + "<i class='icon-play'></i> " + RESUME + "</a>";
135 return "<a class='hold-suspend btn btn-link' id='suspend" + oObj.reserve_id + "' style='display: inline; white-space: nowrap;'>"
136 + "<i class='icon-pause'></i> " + SUSPEND + "</a>";
143 "bServerSide": false,
145 "url": '/cgi-bin/koha/svc/holds',
146 "data": function ( d ) {
147 d.borrowernumber = borrowernumber;
152 $('#holds-table').on( 'draw.dt', function () {
153 $(".hold-suspend").on( "click", function() {
154 var id = $(this).attr("id").replace("suspend", "");
155 var hold = holds[id];
156 $("#suspend-modal-title").html( hold.title );
157 $("#suspend-modal-reserve_id").val( hold.reserve_id );
158 $('#suspend-modal').modal('show');
161 $(".hold-resume").on( "click", function() {
162 var id = $(this).attr("id").replace("resume", "");
163 var hold = holds[id];
164 $.post('/cgi-bin/koha/svc/hold/resume', { "reserve_id": hold.reserve_id }, function( data ){
165 if ( data.success ) {
166 holdsTable.api().ajax.reload();
168 if ( data.error == "HOLD_NOT_FOUND" ) {
169 alert ( RESUME_HOLD_ERROR_NOT_FOUND );
170 holdsTable.api().ajax.reload();
177 if ( $("#holds-table").length ) {
178 $("#holds-table_processing").position({
179 of: $( "#holds-table" ),
187 <div id='suspend-modal' class='modal hide fade' tabindex='-1' role='dialog' aria-hidden='true'>\
188 <form id='suspend-modal-form' class='form-inline'>\
189 <div class='modal-header'>\
190 <button type='button' class='closebtn' data-dismiss='modal' aria-hidden='true'>×</button>\
191 <h3 id='suspend-modal-label'>" + SUSPEND_HOLD_ON + " <i><span id='suspend-modal-title'></span></i></h3>\
194 <div class='modal-body'>\
195 <input type='hidden' id='suspend-modal-reserve_id' name='reserve_id' />\
197 <label for='suspend-modal-until'>Suspend until:</label>\
198 <input name='suspend_until' id='suspend-modal-until' class='suspend-until' size='10' />\
200 <p/><a class='btn btn-link' id='suspend-modal-clear-date' >" + CLEAR_DATE_TO_SUSPEND_INDEFINITELY + "</a></p>\
204 <div class='modal-footer'>\
205 <button id='suspend-modal-submit' class='btn btn-primary' type='submit' name='submit'>" + SUSPEND + "</button>\
206 <a href='#' data-dismiss='modal' aria-hidden='true' class='cancel'>" + CANCEL + "</a>\
212 $("#suspend-modal-until").datepicker({ minDate: 1 }); // Require that "until date" be in the future
213 $("#suspend-modal-clear-date").on( "click", function() { $("#suspend-modal-until").val(""); } );
215 $("#suspend-modal-submit").on( "click", function( e ) {
217 $.post('/cgi-bin/koha/svc/hold/suspend', $('#suspend-modal-form').serialize(), function( data ){
218 $('#suspend-modal').modal('hide');
219 if ( data.success ) {
220 holdsTable.api().ajax.reload();
222 if ( data.error == "INVALID_DATE" ) {
223 alert( SUSPEND_HOLD_ERROR_DATE );
225 else if ( data.error == "HOLD_NOT_FOUND" ) {
226 alert ( SUSPEND_HOLD_ERROR_NOT_FOUND );
227 holdsTable.api().ajax.reload();