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

(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/strings.inc (+60 lines)
Line 0 Link Here
1
<script>
2
    var CIRCULATION_RETURNED = _("Checked in");
3
    var CIRCULATION_NOT_RETURNED = _("Unable to check in");
4
    var NOT_RENEWABLE_OVERDUE = _("Not allowed: overdue");
5
    var NOT_RENEWABLE_RESTRICTION = _("Not allowed: patron restricted");
6
    var CIRCULATION_RENEWED_DUE = _("Renewed, due:");
7
    var CIRCULATION_RENEW_FAILED = _("Renew failed:");
8
    var RETURN_CLAIMED = _("Return claimed");
9
    var RETURN_CLAIMED_FAILURE = _("Unable to claim as returned");
10
    var RETURN_CLAIMED_MAKE = _("Claim returned");
11
    var RETURN_CLAIMED_NOTES = _("Notes about return claim");
12
    var NOT_CHECKED_OUT = _("not checked out");
13
    var TOO_MANY_RENEWALS = _("too many renewals");
14
    var ON_RESERVE = _("on hold");
15
    var REASON_UNKNOWN = _("reason unknown");
16
    var TODAYS_CHECKOUTS = _("Today's checkouts");
17
    var PREVIOUS_CHECKOUTS = _("Previous checkouts");
18
    var BY = _("by _AUTHOR_");
19
    var ON_HOLD = _("On hold");
20
    var PLACE_HOLD = _("Place hold");
21
    var NOT_RENEWABLE = _("Not renewable");
22
    var NOT_RENEWABLE_TOO_SOON = _("No renewal before %s");
23
    var NOT_RENEWABLE_AUTO_TOO_SOON = _("Scheduled for automatic renewal");
24
    var NOT_RENEWABLE_AUTO_TOO_LATE = _("Can no longer be auto-renewed - number of checkout days exceeded");
25
    var NOT_RENEWABLE_AUTO_TOO_MUCH_OWEING = _("Automatic renewal failed, patron has unpaid fines");
26
    var NOT_RENEWABLE_AUTO_ACCOUNT_EXPIRED = _("Automatic renewal failed, account expired");
27
    var NOT_RENEWABLE_AUTO_RENEW = _("Scheduled for automatic renewal");
28
    var NOT_RENEWABLE_DENIED = _("Renewal denied by syspref");
29
    var RENEWALS_REMAINING = _("%s of %s renewals remaining");
30
    var HOLD_IS_SUSPENDED = _("Hold is <strong>suspended</strong>");
31
    var UNTIL = _("until %s");
32
    var NEXT_AVAILABLE_ITYPE = _("Next available %s item");
33
    var ITEM_IS_WAITING = _("Item is <strong>waiting</strong>");
34
    var ITEM_IS_WAITING_HERE = _("Item is <strong>waiting here</strong>");
35
    var AT = _("at %s");
36
    var ITEM_IS_IN_TRANSIT = _("Item is <strong>in transit</strong> from %s since %s");
37
    var FROM = _("from");
38
    var NOT_TRANSFERRED_YET = _("Item hasn't been transferred yet from %s");
39
    var NO = _("No");
40
    var YES = _("Yes");
41
    var INHOUSE_USE = _("On-site checkout");
42
    var CANCEL = _("Cancel");
43
    var RESUME = _("Resume");
44
    var SUSPEND = _("Suspend");
45
    var SAVE = _("Save");
46
    var SUSPEND_UNTIL = _("Suspend until:");
47
    var SUSPEND_HOLD_ON = _("Suspend hold on");
48
    var CLEAR_DATE_TO_SUSPEND_INDEFINITELY = _("Clear date to suspend indefinitely");
49
    var SUSPEND_HOLD_ERROR_DATE = _("Unable to suspend hold, invalid date");
50
    var SUSPEND_HOLD_ERROR_NOT_FOUND = _("Unable to suspend hold, hold not found");
51
    var RESUME_HOLD_ERROR_NOT_FOUND = _("Unable to resume, hold not found");
52
    var CURRENT = _(" (current) ");
53
    var MSG_NO_ITEMTYPE = _("No itemtype");
54
    var MSG_CHECKOUTS_BY_ITEMTYPE = _("Number of checkouts by item type");
55
    var PATRON_NOTE = _("Patron note");
56
    var CONFIRM_DELETE_RETURN_CLAIM = _("Are you sure you want to delete this return claim?");
57
    var BROWSER_RETURN_TO_SEARCH = _("Results");
58
    var BROWSER_PREVIOUS = _("Previous");
59
    var BROWSER_NEXT = _("Next");
60
</script>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt (+4 lines)
Lines 992-997 Link Here
992
        [% END %]
992
        [% END %]
993
        var SuspendHoldsIntranet = [% ( Koha.Preference('SuspendHoldsIntranet') ) ? 1 : 0 | html %];
993
        var SuspendHoldsIntranet = [% ( Koha.Preference('SuspendHoldsIntranet') ) ? 1 : 0 | html %];
994
    </script>
994
    </script>
995
    <script>
996
        /* Set values neededd in checkouts.js */
997
        var canEditDueDates = [% Koha.Preference('EditDueDates') | html %];
998
    </script>
995
    [% Asset.js("js/pages/circulation.js") | $raw %]
999
    [% Asset.js("js/pages/circulation.js") | $raw %]
996
    [% Asset.js("js/checkouts.js") | $raw %]
1000
    [% Asset.js("js/checkouts.js") | $raw %]
997
    [% Asset.js("js/holds.js") | $raw %]
1001
    [% Asset.js("js/holds.js") | $raw %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt (+4 lines)
Lines 889-894 Link Here
889
    [% INCLUDE 'str/members-menu.inc' %]
889
    [% INCLUDE 'str/members-menu.inc' %]
890
    [% Asset.js("js/members-menu.js") | $raw %]
890
    [% Asset.js("js/members-menu.js") | $raw %]
891
    [% Asset.js("js/messaging-preference-form.js") | $raw %]
891
    [% Asset.js("js/messaging-preference-form.js") | $raw %]
892
    <script>
893
        /* Set values neededd in checkouts.js */
894
        var canEditDueDates = [% Koha.Preference('EditDueDates') | html %];
895
    </script>
892
    <script>
896
    <script>
893
897
894
        columns_settings_issues_table = [% TablesSettings.GetColumns( 'members', 'moremember', 'issues-table', 'json' ) | $raw %]
898
        columns_settings_issues_table = [% TablesSettings.GetColumns( 'members', 'moremember', 'issues-table', 'json' ) | $raw %]
(-)a/koha-tmpl/intranet-tmpl/prog/js/checkouts.js (-1 / +57 lines)
Lines 306-312 $(document).ready(function() { Link Here
306
                            due = "<span class='overdue'>" + due + "</span>";
306
                            due = "<span class='overdue'>" + due + "</span>";
307
                        }
307
                        }
308
308
309
                        due = "<span id='date_due_" + oObj.itemnumber + "' class='date_due'>" + due + "</span>";
309
                        due = "<div data-issue_id='"+ oObj.issue_id + "' style='white-space:nowrap'><span id='date_due_" + oObj.itemnumber + "' class='date_due'>" + due + "</span>";
310
311
                        if (canEditDueDates) {
312
                            due += " <a href='#' class='edit_due_date_btn btn btn-default btn-xs'><i class='fa fa-pencil'></i> Edit</a></div>";
313
                        }
310
314
311
                        if ( oObj.lost && oObj.claims_returned ) {
315
                        if ( oObj.lost && oObj.claims_returned ) {
312
                            due += "<span class='lost claims_returned'>" + oObj.lost.escapeHtml() + "</span>";
316
                            due += "<span class='lost claims_returned'>" + oObj.lost.escapeHtml() + "</span>";
Lines 1182-1185 $(document).ready(function() { Link Here
1182
1186
1183
    });
1187
    });
1184
1188
1189
    // Allow due date editing if appropriate
1190
    if (canEditDueDates) {
1191
        $(document).on('click', '.edit_due_date_btn', function(e) {
1192
            e.preventDefault();
1193
            var date_display = $(this).siblings('.date_due');
1194
            $('#issues-table .edit_due_date_btn').attr('disabled', '1');
1195
            var current = date_display.text();
1196
            date_display.hide();
1197
            $(this).closest('div').append('<input style="max-width:10em" type="text" id="due_date_select" value="' + current + '"></input>' +
1198
                '<a style="margin-left:1.5em" href="#" class="save_due_date_btn btn btn-default btn-xs"><i class="fa fa-save"></i> ' + SAVE + '</a>');
1199
            $(this).hide();
1200
            $("#due_date_select").datetimepicker({
1201
                onClose: function(dateText, inst) {
1202
                    validate_date(dateText, inst);
1203
                },
1204
                minDate: Date_from_syspref(date_display.text()),
1205
                hour: 23,
1206
                minute: 59
1207
            }).on("change", function(e) {
1208
                if ( ! is_valid_date( $(this).val() ) ) {$(this).val("");}
1209
            });
1210
        });
1211
        $(document).on('click', '.save_due_date_btn', function(e) {
1212
            e.preventDefault();
1213
            var saveBtn = $(this);
1214
            var p = saveBtn.closest('div');
1215
            var checkoutId = p.data('issue_id');
1216
            var due_date = saveBtn.siblings('#due_date_select')[0].value;
1217
            p.append("<img style='margin-left:1.5em' id='due_date_spinner' src='" + interface + "/" + theme + "/img/spinner-small.gif' />");
1218
            saveBtn.hide();
1219
            if (due_date && due_date.length > 0) {
1220
                var dt = DateTime_from_syspref(due_date);
1221
                $.ajax({
1222
                    url: `/api/v1/checkouts/${checkoutId}`,
1223
                    type: 'PUT',
1224
                    data: JSON.stringify({ date_due: dt.toISOString() }),
1225
                    success: function( data ) {
1226
                        var dateFormatted = ISO_to_syspref(data.due_date);
1227
                        saveBtn.siblings('.date_due').text(dateFormatted).show();
1228
                        $('#issues-table .edit_due_date_btn').removeAttr('disabled');
1229
                        p.find('#due_date_select').remove()
1230
                        p.find('.ui-datepicker-trigger').remove()
1231
                        p.find('#due_date_spinner').remove();
1232
                        p.find('.edit_due_date_btn').show();
1233
                        saveBtn.remove();
1234
                    },
1235
                    contentType: "json"
1236
                });
1237
            }
1238
        });
1239
    }
1240
1185
 });
1241
 });
(-)a/svc/checkouts (-1 / +2 lines)
Lines 64-69 print $input->header( -type => 'text/plain', -charset => 'UTF-8' ); Link Here
64
my @parameters;
64
my @parameters;
65
my $sql = '
65
my $sql = '
66
    SELECT
66
    SELECT
67
        issue_id,
67
        issues.issuedate,
68
        issues.issuedate,
68
        issues.date_due,
69
        issues.date_due,
69
        issues.date_due < now() as date_due_overdue,
70
        issues.date_due < now() as date_due_overdue,
Lines 212-217 while ( my $c = $sth->fetchrow_hashref() ) { Link Here
212
    my @subtitles = split(/ \| /, $c->{'subtitle'} // '' );
213
    my @subtitles = split(/ \| /, $c->{'subtitle'} // '' );
213
    my $checkout = {
214
    my $checkout = {
214
        DT_RowId             => $c->{itemnumber} . '-' . $c->{borrowernumber},
215
        DT_RowId             => $c->{itemnumber} . '-' . $c->{borrowernumber},
216
        issue_id             => $c->{issue_id},
215
        title                => $c->{title},
217
        title                => $c->{title},
216
        subtitle             => \@subtitles,
218
        subtitle             => \@subtitles,
217
        medium               => $c->{medium} // '',
219
        medium               => $c->{medium} // '',
218
- 

Return to bug 24608