View | Details | Raw Unified | Return to bug 12550
Collapse All | Expand All

(-)a/installer/data/mysql/sysprefs.sql (+2 lines)
Lines 82-87 INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` Link Here
82
('CatalogModuleRelink','0',NULL,'If OFF the linker will never replace the authids that are set in the cataloging module.','YesNo'),
82
('CatalogModuleRelink','0',NULL,'If OFF the linker will never replace the authids that are set in the cataloging module.','YesNo'),
83
('CataloguingLog','1',NULL,'If ON, log edit/create/delete actions on bibliographic data. WARNING: this feature is very resource consuming.','YesNo'),
83
('CataloguingLog','1',NULL,'If ON, log edit/create/delete actions on bibliographic data. WARNING: this feature is very resource consuming.','YesNo'),
84
('checkdigit','none','none|katipo','If ON, enable checks on patron cardnumber: none or \"Katipo\" style checks','Choice'),
84
('checkdigit','none','none|katipo','If ON, enable checks on patron cardnumber: none or \"Katipo\" style checks','Choice'),
85
('CheckoutsTableSecondsToLoadCirculation', '0', NULL, 'Number of seconds to delay the loading of the checkouts table for circulation.', 'Integer'), 
86
('CheckoutsTableSecondsToLoadPatronDetails', '0', NULL, 'Number of seconds to delay the loading of the checkouts table for patron details.', 'Integer'),
85
('CircAutocompl','1',NULL,'If ON, autocompletion is enabled for the Circulation input','YesNo'),
87
('CircAutocompl','1',NULL,'If ON, autocompletion is enabled for the Circulation input','YesNo'),
86
('CircAutoPrintQuickSlip','qslip',NULL,'Choose what should happen when an empty barcode field is submitted in circulation: Display a print quick slip window, Display a print slip window or Clear the screen.','Choice'),
88
('CircAutoPrintQuickSlip','qslip',NULL,'Choose what should happen when an empty barcode field is submitted in circulation: Display a print quick slip window, Display a print slip window or Clear the screen.','Choice'),
87
('CircControl','ItemHomeLibrary','PickupLibrary|PatronLibrary|ItemHomeLibrary','Specify the agency that controls the circulation and fines policy','Choice'),
89
('CircControl','ItemHomeLibrary','PickupLibrary|PatronLibrary|ItemHomeLibrary','Specify the agency that controls the circulation and fines policy','Choice'),
(-)a/installer/data/mysql/updatedatabase.pl (+12 lines)
Lines 8570-8575 if ( CheckVersion($DBversion) ) { Link Here
8570
    SetVersion($DBversion);
8570
    SetVersion($DBversion);
8571
}
8571
}
8572
8572
8573
$DBversion = "3.17.00.XXX";
8574
if ( CheckVersion($DBversion) ) {
8575
    $dbh->do(q{
8576
        INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES 
8577
            ('CheckoutsTableSecondsToLoadCirculation', '0', NULL, 'Number of seconds to delay the loading of the checkouts table for circulation.', 'Integer'), 
8578
            ('CheckoutsTableSecondsToLoadPatronDetails', '0', NULL, 'Number of seconds to delay the loading of the checkouts table for patron details.', 'Integer');
8579
    });
8580
8581
    print "Upgrade to $DBversion done (Bug 12550 - Add ability to delay loading of patron's checkouts in circulation and patron details)\n";
8582
    SetVersion($DBversion);
8583
}
8584
8573
=head1 FUNCTIONS
8585
=head1 FUNCTIONS
8574
8586
8575
=head2 TableExists($table)
8587
=head2 TableExists($table)
(-)a/koha-tmpl/intranet-tmpl/prog/en/js/checkouts.js (-190 / +225 lines)
Lines 126-344 $(document).ready(function() { Link Here
126
126
127
    var ymd = $.datepicker.formatDate('yy-mm-dd', new Date());
127
    var ymd = $.datepicker.formatDate('yy-mm-dd', new Date());
128
128
129
    var issuesTable;
129
    // Don't bother loading table if there are no checkouts to show
130
    var drawn = 0;
130
    if ( issues_count ) {
131
    issuesTable = $("#issues-table").dataTable({
131
        var issuesTable;
132
        "oLanguage": {
132
133
            "sEmptyTable" : MSG_DT_LOADING_RECORDS,
133
        if ( checkouts_table_seconds_to_load ) {
134
        },
134
            $('#issues-table').hide();
135
        "bAutoWidth": false,
135
            $('#issues-table-actions').hide();
136
        "sDom": "<'row-fluid'<'span6'><'span6'>r>t<'row-fluid'>t",
136
            $('#issues-table-load-now-button').click(function(){
137
        "aoColumns": [
137
                LoadIssuesTableNow();
138
            {
138
                return false;
139
                "mDataProp": function( oObj ) {
139
            });
140
                    if ( oObj.issued_today ) {
140
            var loadIssuesTableInterval = setInterval(function(){ CountdownIssuesTableLoading(); }, 1000);
141
                        return "<strong>" + TODAYS_CHECKOUTS + "</strong>";
141
        } else {
142
                    } else {
142
            $('#issues-table-loading-message').hide();
143
                        return "<strong>" + PREVIOUS_CHECKOUTS + "</strong>";
143
            LoadIssuesTable();
144
                    }
144
        }
145
                }
145
    }
146
            },
146
    
147
            {
147
    function CountdownIssuesTableLoading(){
148
                "mDataProp": "date_due",
148
        if ( checkouts_table_seconds_to_load ) {
149
                "bVisible": false,
149
            $('#issues-table-loading-count').text( checkouts_table_seconds_to_load );
150
            checkouts_table_seconds_to_load--;
151
        } else {
152
            LoadIssuesTableNow();
153
        }
154
    }
155
156
    function LoadIssuesTableNow() {
157
        clearInterval(loadIssuesTableInterval);
158
        $('#issues-table-loading-message').hide();
159
        $('#issues-table').show();
160
        $('#issues-table-actions').show();
161
        LoadIssuesTable();
162
    }
163
164
    function LoadIssuesTable() {
165
        issuesTable = $("#issues-table").dataTable({
166
            "oLanguage": {
167
                "sEmptyTable" : MSG_DT_LOADING_RECORDS,
150
            },
168
            },
151
            {
169
            "bAutoWidth": false,
152
                "iDataSort": 1, // Sort on hidden unformatted date due column
170
            "sDom": "<'row-fluid'<'span6'><'span6'>r>t<'row-fluid'>t",
153
                "mDataProp": function( oObj ) {
171
            "aoColumns": [
154
                    var today = new Date();
172
                {
155
                    var due = new Date( oObj.date_due );
173
                    "mDataProp": function( oObj ) {
156
                    if ( today > due ) {
174
                        if ( oObj.issued_today ) {
157
                        return "<span class='overdue'>" + oObj.date_due_formatted + "</span>";
175
                            return "<strong>" + TODAYS_CHECKOUTS + "</strong>";
158
                    } else {
176
                        } else {
159
                        return oObj.date_due_formatted;
177
                            return "<strong>" + PREVIOUS_CHECKOUTS + "</strong>";
178
                        }
160
                    }
179
                    }
161
                }
180
                },
162
            },
181
                {
163
            {
182
                    "mDataProp": "date_due",
164
                "mDataProp": function ( oObj ) {
183
                    "bVisible": false,
165
                    title = "<span class='strong'><a href='/cgi-bin/koha/catalogue/detail.pl?biblionumber="
184
                },
166
                          + oObj.biblionumber
185
                {
167
                          + "'>"
186
                    "iDataSort": 1, // Sort on hidden unformatted date due column
168
                          + oObj.title;
187
                    "mDataProp": function( oObj ) {
169
188
                        var today = new Date();
170
                    $.each(oObj.subtitle, function( index, value ) {
189
                        var due = new Date( oObj.date_due );
171
                              title += " " + value.subfield;
190
                        if ( today > due ) {
172
                    });
191
                            return "<span class='overdue'>" + oObj.date_due_formatted + "</span>";
192
                        } else {
193
                            return oObj.date_due_formatted;
194
                        }
195
                    }
196
                },
197
                {
198
                    "mDataProp": function ( oObj ) {
199
                        title = "<span class='strong'><a href='/cgi-bin/koha/catalogue/detail.pl?biblionumber="
200
                              + oObj.biblionumber
201
                              + "'>"
202
                              + oObj.title;
173
203
174
                    title += "</a></span>";
204
                        $.each(oObj.subtitle, function( index, value ) {
205
                                  title += " " + value.subfield;
206
                        });
175
207
176
                    if ( oObj.author ) {
208
                        title += "</a></span>";
177
                        title += " " + BY.replace( "_AUTHOR_",  " " + oObj.author );
178
                    }
179
209
180
                    if ( oObj.itemnotes ) {
210
                        if ( oObj.author ) {
181
                        var span_class = "";
211
                            title += " " + BY.replace( "_AUTHOR_",  " " + oObj.author );
182
                        if ( $.datepicker.formatDate('yy-mm-dd', new Date(oObj.issuedate) ) == ymd ) {
183
                            span_class = "circ-hlt";
184
                        }
212
                        }
185
                        title += " - <span class='" + span_class + "'>" + oObj.itemnotes + "</span>"
186
                    }
187
213
188
                    title += " "
214
                        if ( oObj.itemnotes ) {
189
                          + "<a href='/cgi-bin/koha/catalogue/moredetail.pl?biblionumber="
215
                            var span_class = "";
190
                          + oObj.biblionumber
216
                            if ( $.datepicker.formatDate('yy-mm-dd', new Date(oObj.issuedate) ) == ymd ) {
191
                          + "&itemnumber="
217
                                span_class = "circ-hlt";
192
                          + oObj.itemnumber
218
                            }
193
                          + "#"
219
                            title += " - <span class='" + span_class + "'>" + oObj.itemnotes + "</span>"
194
                          + oObj.itemnumber
220
                        }
195
                          + "'>"
196
                          + oObj.barcode
197
                          + "</a>";
198
199
                    return title;
200
                }
201
            },
202
            { "mDataProp": "itemtype" },
203
            { "mDataProp": "issuedate_formatted" },
204
            { "mDataProp": "branchname" },
205
            { "mDataProp": "itemcallnumber" },
206
            {
207
                "mDataProp": function ( oObj ) {
208
                    if ( ! oObj.charge ) oObj.charge = 0;
209
                    return parseFloat(oObj.charge).toFixed(2);
210
                }
211
            },
212
            {
213
                "mDataProp": function ( oObj ) {
214
                    if ( ! oObj.price ) oObj.price = 0;
215
                    return parseFloat(oObj.price).toFixed(2);
216
                }
217
            },
218
            {
219
                "bSortable": false,
220
                "mDataProp": function ( oObj ) {
221
                    var content = "";
222
                    var span_style = "";
223
                    var span_class = "";
224
225
                    content += "<span>";
226
                    content += "<span style='padding: 0 1em;'>" + oObj.renewals_count + "</span>";
227
228
                    if ( oObj.can_renew ) {
229
                        // Do nothing
230
                    } else if ( oObj.can_renew_error == "on_reserve" ) {
231
                        content += "<span class='renewals-disabled'>"
232
                                + "<a href='/cgi-bin/koha/reserve/request.pl?biblionumber=" + oObj.biblionumber + "'>" + ON_HOLD + "</a>"
233
                                + "</span>";
234
235
                        span_style = "display: none";
236
                        span_class = "renewals-allowed";
237
                    } else if ( oObj.can_renew_error == "too_many" ) {
238
                        content += "<span class='renewals-disabled'>"
239
                                + NOT_RENEWABLE
240
                                + "</span>";
241
242
                        span_style = "display: none";
243
                        span_class = "renewals-allowed";
244
                    } else if ( oObj.can_renew_error == "too_soon" ) {
245
                        content += "<span class='renewals-disabled'>"
246
                                + NOT_RENEWABLE_TOO_SOON.format( oObj.can_renew_date )
247
                                + "</span>";
248
249
                        span_style = "display: none";
250
                        span_class = "renewals-allowed";
251
                    } else {
252
                        content += "<span class='renewals-disabled'>"
253
                                + oObj.can_renew_error
254
                                + "</span>";
255
221
256
                        span_style = "display: none";
222
                        title += " "
257
                        span_class = "renewals-allowed";
223
                              + "<a href='/cgi-bin/koha/catalogue/moredetail.pl?biblionumber="
224
                              + oObj.biblionumber
225
                              + "&itemnumber="
226
                              + oObj.itemnumber
227
                              + "#"
228
                              + oObj.itemnumber
229
                              + "'>"
230
                              + oObj.barcode
231
                              + "</a>";
232
233
                        return title;
234
                    }
235
                },
236
                { "mDataProp": "itemtype" },
237
                { "mDataProp": "issuedate_formatted" },
238
                { "mDataProp": "branchname" },
239
                { "mDataProp": "itemcallnumber" },
240
                {
241
                    "mDataProp": function ( oObj ) {
242
                        if ( ! oObj.charge ) oObj.charge = 0;
243
                        return parseFloat(oObj.charge).toFixed(2);
244
                    }
245
                },
246
                {
247
                    "mDataProp": function ( oObj ) {
248
                        if ( ! oObj.price ) oObj.price = 0;
249
                        return parseFloat(oObj.price).toFixed(2);
258
                    }
250
                    }
251
                },
252
                {
253
                    "bSortable": false,
254
                    "mDataProp": function ( oObj ) {
255
                        var content = "";
256
                        var span_style = "";
257
                        var span_class = "";
259
258
260
                    content += "<span class='" + span_class + "' style='" + span_style + "'>"
259
                        content += "<span>";
261
                            +  "<input type='checkbox' class='renew' id='renew_" + oObj.itemnumber + "' name='renew' value='" + oObj.itemnumber +"'/>"
260
                        content += "<span style='padding: 0 1em;'>" + oObj.renewals_count + "</span>";
262
                            +  "</span>";
261
262
                        if ( oObj.can_renew ) {
263
                            // Do nothing
264
                        } else if ( oObj.can_renew_error == "on_reserve" ) {
265
                            content += "<span class='renewals-disabled'>"
266
                                    + "<a href='/cgi-bin/koha/reserve/request.pl?biblionumber=" + oObj.biblionumber + "'>" + ON_HOLD + "</a>"
267
                                    + "</span>";
268
269
                            span_style = "display: none";
270
                            span_class = "renewals-allowed";
271
                        } else if ( oObj.can_renew_error == "too_many" ) {
272
                            content += "<span class='renewals-disabled'>"
273
                                    + NOT_RENEWABLE
274
                                    + "</span>";
275
276
                            span_style = "display: none";
277
                            span_class = "renewals-allowed";
278
                        } else if ( oObj.can_renew_error == "too_soon" ) {
279
                            content += "<span class='renewals-disabled'>"
280
                                    + NOT_RENEWABLE_TOO_SOON.format( oObj.can_renew_date )
281
                                    + "</span>";
282
283
                            span_style = "display: none";
284
                            span_class = "renewals-allowed";
285
                        } else {
286
                            content += "<span class='renewals-disabled'>"
287
                                    + oObj.can_renew_error
288
                                    + "</span>";
289
290
                            span_style = "display: none";
291
                            span_class = "renewals-allowed";
292
                        }
263
293
264
                    if ( oObj.renewals_remaining ) {
294
                        content += "<span class='" + span_class + "' style='" + span_style + "'>"
265
                        content += "<span class='renewals'>("
295
                                +  "<input type='checkbox' class='renew' id='renew_" + oObj.itemnumber + "' name='renew' value='" + oObj.itemnumber +"'/>"
266
                                + RENEWALS_REMAINING.format( oObj.renewals_remaining, oObj.renewals_allowed )
296
                                +  "</span>";
267
                                + ")</span>";
268
                    }
269
297
270
                    content += "</span>";
298
                        if ( oObj.renewals_remaining ) {
299
                            content += "<span class='renewals'>("
300
                                    + RENEWALS_REMAINING.format( oObj.renewals_remaining, oObj.renewals_allowed )
301
                                    + ")</span>";
302
                        }
303
304
                        content += "</span>";
271
305
272
306
273
                    return content;
307
                        return content;
308
                    }
309
                },
310
                {
311
                    "bSortable": false,
312
                    "mDataProp": function ( oObj ) {
313
                        if ( oObj.can_renew_error == "on_reserve" ) {
314
                            return "<a href='/cgi-bin/koha/reserve/request.pl?biblionumber=" + oObj.biblionumber + "'>" + ON_HOLD + "</a>";
315
                        } else {
316
                            return "<input type='checkbox' class='checkin' id='checkin_" + oObj.itemnumber + "' name='checkin' value='" + oObj.itemnumber +"'></input>";
317
                        }
318
                    }
319
                },
320
                {
321
                    "bVisible": exports_enabled ? true : false,
322
                    "bSortable": false,
323
                    "mDataProp": function ( oObj ) {
324
                        return "<input type='checkbox' class='export' id='export_" + oObj.biblionumber + "' name='biblionumbers' value='" + oObj.biblionumber + "' />";
325
                    }
326
                }
327
            ],
328
            "fnFooterCallback": function ( nRow, aaData, iStart, iEnd, aiDisplay ) {
329
                var total_charge = 0;
330
                var total_price = 0;
331
                for ( var i=0; i < aaData.length; i++ ) {
332
                    total_charge += aaData[i]['charge'] * 1;
333
                    total_price  += aaData[i]['price'] * 1;
274
                }
334
                }
335
                var nCells = nRow.getElementsByTagName('td');
336
                nCells[1].innerHTML = total_charge.toFixed(2);
337
                nCells[2].innerHTML = total_price.toFixed(2);
275
            },
338
            },
276
            {
339
            "bPaginate": false,
277
                "bSortable": false,
340
            "bProcessing": true,
278
                "mDataProp": function ( oObj ) {
341
            "bServerSide": false,
279
                    if ( oObj.can_renew_error == "on_reserve" ) {
342
            "sAjaxSource": '/cgi-bin/koha/svc/checkouts',
280
                        return "<a href='/cgi-bin/koha/reserve/request.pl?biblionumber=" + oObj.biblionumber + "'>" + ON_HOLD + "</a>";
343
            "fnServerData": function ( sSource, aoData, fnCallback ) {
281
                    } else {
344
                aoData.push( { "name": "borrowernumber", "value": borrowernumber } );
282
                        return "<input type='checkbox' class='checkin' id='checkin_" + oObj.itemnumber + "' name='checkin' value='" + oObj.itemnumber +"'></input>";
345
346
                $.getJSON( sSource, aoData, function (json) {
347
                    fnCallback(json)
348
                } );
349
            },
350
            "fnInitComplete": function(oSettings) {
351
                // Disable rowGrouping plugin after first use
352
                // so any sorting on the table doesn't use it
353
                var oSettings = issuesTable.fnSettings();
354
355
                for (f = 0; f < oSettings.aoDrawCallback.length; f++) {
356
                    if (oSettings.aoDrawCallback[f].sName == 'fnRowGrouping') {
357
                        oSettings.aoDrawCallback.splice(f, 1);
358
                        break;
283
                    }
359
                    }
284
                }
360
                }
361
362
                oSettings.aaSortingFixed = null;
285
            },
363
            },
364
        }).rowGrouping(
286
            {
365
            {
287
                "bVisible": exports_enabled ? true : false,
366
                iGroupingOrderByColumnIndex: 0,
288
                "bSortable": false,
367
                sGroupingColumnSortDirection: "desc"
289
                "mDataProp": function ( oObj ) {
290
                    return "<input type='checkbox' class='export' id='export_" + oObj.biblionumber + "' name='biblionumbers' value='" + oObj.biblionumber + "' />";
291
                }
292
            }
293
        ],
294
        "fnFooterCallback": function ( nRow, aaData, iStart, iEnd, aiDisplay ) {
295
            var total_charge = 0;
296
            var total_price = 0;
297
            for ( var i=0; i < aaData.length; i++ ) {
298
                total_charge += aaData[i]['charge'] * 1;
299
                total_price  += aaData[i]['price'] * 1;
300
            }
301
            var nCells = nRow.getElementsByTagName('td');
302
            nCells[1].innerHTML = total_charge.toFixed(2);
303
            nCells[2].innerHTML = total_price.toFixed(2);
304
        },
305
        "bPaginate": false,
306
        "bProcessing": true,
307
        "bServerSide": false,
308
        "sAjaxSource": '/cgi-bin/koha/svc/checkouts',
309
        "fnServerData": function ( sSource, aoData, fnCallback ) {
310
            aoData.push( { "name": "borrowernumber", "value": borrowernumber } );
311
312
            $.getJSON( sSource, aoData, function (json) {
313
                fnCallback(json)
314
            } );
315
        },
316
        "fnInitComplete": function(oSettings) {
317
            // Disable rowGrouping plugin after first use
318
            // so any sorting on the table doesn't use it
319
            var oSettings = issuesTable.fnSettings();
320
321
            for (f = 0; f < oSettings.aoDrawCallback.length; f++) {
322
                if (oSettings.aoDrawCallback[f].sName == 'fnRowGrouping') {
323
                    oSettings.aoDrawCallback.splice(f, 1);
324
                    break;
325
                }
326
            }
368
            }
369
        );
327
370
328
            oSettings.aaSortingFixed = null;
371
        if ( $("#issues-table").length ) {
329
        },
372
            $("#issues-table_processing").position({
330
    }).rowGrouping(
373
                of: $( "#issues-table" ),
331
        {
374
                collision: "none"
332
            iGroupingOrderByColumnIndex: 0,
375
            });
333
            sGroupingColumnSortDirection: "desc"
334
        }
376
        }
335
    );
336
337
    if ( $("#issues-table").length ) {
338
        $("#issues-table_processing").position({
339
            of: $( "#issues-table" ),
340
            collision: "none"
341
        });
342
    }
377
    }
343
378
344
    // Don't load relatives' issues table unless it is clicked on
379
    // Don't load relatives' issues table unless it is clicked on
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref (+8 lines)
Lines 138-140 Patrons: Link Here
138
         - pref: CardnumberLength
138
         - pref: CardnumberLength
139
         - "characters long. The length can be a single number to specify an exact length, a range separated by a comma (i.e., 'Min,Max'), or a maximum with no minimum (i.e., ',Max')."
139
         - "characters long. The length can be a single number to specify an exact length, a range separated by a comma (i.e., 'Min,Max'), or a maximum with no minimum (i.e., ',Max')."
140
         - "If 'cardnumber' is included in the BorrowerMandatoryField list, the minimum length, if not specified here, defaults to one."
140
         - "If 'cardnumber' is included in the BorrowerMandatoryField list, the minimum length, if not specified here, defaults to one."
141
     -
142
         - Wait
143
         - pref: CheckoutsTableSecondsToLoadCirculation
144
           class: integer
145
         - seconds before loading the patron's checkouts table when checking out items to a patron and
146
         - pref: CheckoutsTableSecondsToLoadPatronDetails
147
           class: integer
148
         - seconds when viewing a patron's details.
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt (-1 / +12 lines)
Lines 1-3 Link Here
1
[% USE Koha %]
1
[% USE Branches %]
2
[% USE Branches %]
2
[% USE KohaDates %]
3
[% USE KohaDates %]
3
[% IF ( export_remove_fields OR export_with_csv_profile ) %]
4
[% IF ( export_remove_fields OR export_with_csv_profile ) %]
Lines 33-38 var borrowernumber = "[% borrowernumber %]"; Link Here
33
var branchcode = "[% branch %]";
34
var branchcode = "[% branch %]";
34
var exports_enabled = "[% exports_enabled %]";
35
var exports_enabled = "[% exports_enabled %]";
35
var AllowRenewalLimitOverride = [% CAN_user_circulate_override_renewals && AllowRenewalLimitOverride %];
36
var AllowRenewalLimitOverride = [% CAN_user_circulate_override_renewals && AllowRenewalLimitOverride %];
37
var issues_count = [% issuecount %];
38
[%- SET CheckoutsTableSecondsToLoad = Koha.Preference('CheckoutsTableSecondsToLoadCirculation') -%]
39
var checkouts_table_seconds_to_load = [% CheckoutsTableSecondsToLoad ? CheckoutsTableSecondsToLoad - 1 : 0 %];
36
var relatives_borrowernumbers = new Array();
40
var relatives_borrowernumbers = new Array();
37
[% FOREACH b IN relatives_borrowernumbers %]
41
[% FOREACH b IN relatives_borrowernumbers %]
38
    relatives_borrowernumbers.push("[% b %]");
42
    relatives_borrowernumbers.push("[% b %]");
Lines 680-685 No patron matched <span class="ex">[% message %]</span> Link Here
680
<!-- SUMMARY : TODAY & PREVIOUS ISSUES -->
684
<!-- SUMMARY : TODAY & PREVIOUS ISSUES -->
681
<div id="checkouts">
685
<div id="checkouts">
682
    [% IF ( issuecount ) %]
686
    [% IF ( issuecount ) %]
687
        <div id="issues-table-loading-message">
688
            <p>
689
                <a id="issues-table-load-now-button" href="#" class="btn"><i class="icon-download"></i> Load now</a>
690
                Loading in <span id="issues-table-loading-count">[% Koha.Preference('CheckoutsTableSecondsToLoadCirculation') %]</span> seconds...
691
            </p>
692
        </div>
693
683
        <table id="issues-table">
694
        <table id="issues-table">
684
            <thead>
695
            <thead>
685
                <tr>
696
                <tr>
Lines 701-707 No patron matched <span class="ex">[% message %]</span> Link Here
701
            [% INCLUDE 'checkouts-table-footer.inc' %]
712
            [% INCLUDE 'checkouts-table-footer.inc' %]
702
        </table>
713
        </table>
703
714
704
        <fieldset class="action">
715
        <fieldset id="issues-table-actions" class="action">
705
            [% IF ( CAN_user_circulate_override_renewals ) %]
716
            [% IF ( CAN_user_circulate_override_renewals ) %]
706
                [% IF ( AllowRenewalLimitOverride ) %]
717
                [% IF ( AllowRenewalLimitOverride ) %]
707
                    <label for="override_limit">Override renewal limit:</label>
718
                    <label for="override_limit">Override renewal limit:</label>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt (-29 / +41 lines)
Lines 1-3 Link Here
1
[% USE Koha %]
1
[% USE KohaDates %]
2
[% USE KohaDates %]
2
[% INCLUDE 'doc-head-open.inc' %]
3
[% INCLUDE 'doc-head-open.inc' %]
3
<title>Koha &rsaquo; Patrons &rsaquo;
4
<title>Koha &rsaquo; Patrons &rsaquo;
Lines 27-32 var borrowernumber = "[% borrowernumber %]"; Link Here
27
var branchcode = "[% branch %]";
28
var branchcode = "[% branch %]";
28
var exports_enabled = "[% exports_enabled %]";
29
var exports_enabled = "[% exports_enabled %]";
29
var AllowRenewalLimitOverride = [% CAN_user_circulate_override_renewals && AllowRenewalLimitOverride %];
30
var AllowRenewalLimitOverride = [% CAN_user_circulate_override_renewals && AllowRenewalLimitOverride %];
31
var issues_count = [% issuecount %];
32
[%- SET CheckoutsTableSecondsToLoad = Koha.Preference('CheckoutsTableSecondsToLoadPatronDetails') -%]
33
var checkouts_table_seconds_to_load = [% CheckoutsTableSecondsToLoad ? CheckoutsTableSecondsToLoad - 1 : 0 %];
30
var relatives_borrowernumbers = new Array();
34
var relatives_borrowernumbers = new Array();
31
[% FOREACH b IN relatives_borrowernumbers %]
35
[% FOREACH b IN relatives_borrowernumbers %]
32
    relatives_borrowernumbers.push("[% b %]");
36
    relatives_borrowernumbers.push("[% b %]");
Lines 408-413 function validate1(date) { Link Here
408
412
409
    <div id="checkouts">
413
    <div id="checkouts">
410
        [% IF ( issuecount ) %]
414
        [% IF ( issuecount ) %]
415
            <div id="issues-table-loading-message">
416
                <p>
417
                    <a id="issues-table-load-now-button" href="#" class="btn"><i class="icon-download"></i> Load now</a>
418
                    Loading in <span id="issues-table-loading-count">[% Koha.Preference('CheckoutsTableSecondsToLoadPatronDetails') %]</span> seconds...
419
                </p>
420
            </div>
421
411
            <form name="issues" action="/cgi-bin/koha/tools/export.pl" method="post" class="checkboxed">
422
            <form name="issues" action="/cgi-bin/koha/tools/export.pl" method="post" class="checkboxed">
412
                <table id="issues-table" style="width: 100% !Important;">
423
                <table id="issues-table" style="width: 100% !Important;">
413
                    <thead>
424
                    <thead>
Lines 431-466 function validate1(date) { Link Here
431
                </table>
442
                </table>
432
443
433
                [% IF ( issuecount ) %]
444
                [% IF ( issuecount ) %]
434
                    <fieldset class="action">
445
                    <div id="issues-table-actions">
435
                        [% IF ( CAN_user_circulate_override_renewals ) %]
446
                        <fieldset class="action">
436
                            [% IF ( AllowRenewalLimitOverride ) %]
447
                            [% IF ( CAN_user_circulate_override_renewals ) %]
437
                                <label for="override_limit">Override renewal limit:</label>
448
                                [% IF ( AllowRenewalLimitOverride ) %]
438
                                <input type="checkbox" name="override_limit" id="override_limit" value="1" />
449
                                    <label for="override_limit">Override renewal limit:</label>
439
                            [% END %]
450
                                    <input type="checkbox" name="override_limit" id="override_limit" value="1" />
440
                        [% END %]
441
                        <button class="btn" id="RenewCheckinChecked"><i class="icon-check"></i> Renew or return checked items</button>
442
                        <button class="btn" id="RenewAll"><i class="icon-book"></i> Renew all</button>
443
                    </fieldset>
444
445
                    [% IF ( exports_enabled ) %]
446
                        <fieldset>
447
                            <label for="export_formats"><b>Export checkouts using format:</b></label>
448
                            <select name="export_formats" id="export_formats">
449
                                <option value="iso2709_995">ISO2709 with items</option>
450
                                <option value="iso2709">ISO2709 without items</option>
451
                                [% IF ( export_with_csv_profile ) %]
452
                                    <option value="csv">CSV</option>
453
                                [% END %]
451
                                [% END %]
454
                            </select>
452
                            [% END %]
455
453
                            <button class="btn" id="RenewCheckinChecked"><i class="icon-check"></i> Renew or return checked items</button>
456
                           <label for="export_remove_fields">Don't export fields:</label> <input type="text" id="export_remove_fields" name="export_remove_fields" value="[% export_remove_fields %]" title="Use for iso2709 exports" />
454
                            <button class="btn" id="RenewAll"><i class="icon-book"></i> Renew all</button>
457
                            <input type="hidden" name="op" value="export" />
458
                            <input type="hidden" id="export_format" name="format" value="iso2709" />
459
                            <input type="hidden" id="dont_export_item" name="dont_export_item" value="0" />
460
                            <input type="hidden" id="record_type" name="record_type" value="bibs" />
461
                            <button class="btn btn-small" id="export_submit"><i class="icon-download-alt"></i> Export</button>
462
                        </fieldset>
455
                        </fieldset>
463
                    [% END %]
456
457
                        [% IF ( exports_enabled ) %]
458
                            <fieldset>
459
                                <label for="export_formats"><b>Export checkouts using format:</b></label>
460
                                <select name="export_formats" id="export_formats">
461
                                    <option value="iso2709_995">ISO2709 with items</option>
462
                                    <option value="iso2709">ISO2709 without items</option>
463
                                    [% IF ( export_with_csv_profile ) %]
464
                                        <option value="csv">CSV</option>
465
                                    [% END %]
466
                                </select>
467
468
                               <label for="export_remove_fields">Don't export fields:</label> <input type="text" id="export_remove_fields" name="export_remove_fields" value="[% export_remove_fields %]" title="Use for iso2709 exports" />
469
                                <input type="hidden" name="op" value="export" />
470
                                <input type="hidden" id="export_format" name="format" value="iso2709" />
471
                                <input type="hidden" id="dont_export_item" name="dont_export_item" value="0" />
472
                                <input type="hidden" id="record_type" name="record_type" value="bibs" />
473
                                <button class="btn btn-small" id="export_submit"><i class="icon-download-alt"></i> Export</button>
474
                            </fieldset>
475
                        [% END %]
476
                    </div>
464
                [% END %]
477
                [% END %]
465
            </form>
478
            </form>
466
        [% ELSE %]
479
        [% ELSE %]
467
- 

Return to bug 12550