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

(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/modals/place_booking.inc (+6 lines)
Lines 25-30 Link Here
25
                                </select>
25
                                </select>
26
                                <div class="hint">Enter patron card number or partial name</div>
26
                                <div class="hint">Enter patron card number or partial name</div>
27
                            </li>
27
                            </li>
28
                            <li>
29
                                <label class="required" for="booking_pickup">Pickup at:</label>
30
                                <select name="booking_pickup" id="pickup_library_id" required="required" disabled="true"></select>
31
                                <span class="required">Required</span>
32
                            </li>
33
                            <li>
28
                            <label for="booking_item_id">Item: </label>
34
                            <label for="booking_item_id">Item: </label>
29
                                <select name="booking_item_id" id="booking_item_id" disabled="true">
35
                                <select name="booking_item_id" id="booking_item_id" disabled="true">
30
                                    <option value="0">Any item</option>
36
                                    <option value="0">Any item</option>
(-)a/koha-tmpl/intranet-tmpl/prog/js/modals/place_booking.js (-3 / +85 lines)
Lines 111-116 $("#placeBookingModal").on("show.bs.modal", function (e) { Link Here
111
111
112
    $("#booking_patron_id").on("select2:select", function (e) {
112
    $("#booking_patron_id").on("select2:select", function (e) {
113
        booking_patron = e.params.data;
113
        booking_patron = e.params.data;
114
        $("#pickup_library_id").prop("disabled", false);
115
    });
116
117
    // Pickup location select2
118
    let pickup_url = "/api/v1/biblios/" + biblionumber + "/pickup_locations";
119
    $("#pickup_library_id").kohaSelect({
120
        dropdownParent: $(".modal-content", "#placeBookingModal"),
121
        width: "50%",
122
        dropdownAutoWidth: true,
123
        allowClear: false,
124
        ajax: {
125
            url: pickup_url,
126
            delay: 300, // wait 300 milliseconds before triggering the request
127
            cache: true,
128
            dataType: "json",
129
            data: function (params) {
130
                var search_term = params.term === undefined ? "" : params.term;
131
                var query = {
132
                    q: JSON.stringify({
133
                        name: { "-like": "%" + search_term + "%" },
134
                    }),
135
                    _order_by: "name",
136
                    _page: params.page,
137
                };
138
                query["patron_id"] = booking_patron.patron_id;
139
                return query;
140
            },
141
            processResults: function (data) {
142
                var results = [];
143
                data.results.forEach(function (pickup_location) {
144
                    results.push({
145
                        id: pickup_location.library_id.escapeHtml(),
146
                        text: pickup_location.name.escapeHtml(),
147
                        needs_override: pickup_location.needs_override,
148
                        pickup_items: pickup_location.pickup_items,
149
                    });
150
                });
151
                return {
152
                    results: results,
153
                    pagination: { more: data.pagination.more },
154
                };
155
            },
156
        },
157
        templateResult: function (state) {
158
            var $text;
159
            if (state.needs_override === true) {
160
                $text = $(
161
                    "<span>" +
162
                        state.text +
163
                        '</span> <span style="float:right;" title="' +
164
                        __(
165
                            "This pickup location is not allowed according to circulation rules"
166
                        ) +
167
                        '"><i class="fa fa-exclamation-circle" aria-hidden="true"></i></span>'
168
                );
169
            } else {
170
                $text = $("<span>" + state.text + "</span>");
171
            }
172
            return $text;
173
        },
114
    });
174
    });
115
175
116
    // Adopt periodPicker
176
    // Adopt periodPicker
Lines 388-393 $("#placeBookingModal").on("show.bs.modal", function (e) { Link Here
388
                    periodPicker.redraw();
448
                    periodPicker.redraw();
389
                });
449
                });
390
450
451
                // Setup listener for pickup location select2
452
                $("#pickup_library_id").on("select2:select", function (e) {
453
                    let valid_items = e.params.data.pickup_items;
454
455
                    // Disable items not available at the pickup location
456
                    $("#booking_item_id > option").each(function () {
457
                        let option = $(this);
458
                        let item_id = option.val();
459
                        if (valid_items.includes(parseInt(item_id))) {
460
                            option.prop("disabled", false);
461
                        } else {
462
                            option.prop("disabled", true);
463
                        }
464
                    });
465
                    $("#booking_item_id").trigger("change.select2");
466
                });
467
391
                // Set onChange for flatpickr
468
                // Set onChange for flatpickr
392
                let changeExists = periodPicker.config.onChange.filter(
469
                let changeExists = periodPicker.config.onChange.filter(
393
                    f => f.name === "periodChange"
470
                    f => f.name === "periodChange"
Lines 566-571 $("#placeBookingForm").on("submit", function (e) { Link Here
566
643
567
    let start_date = $("#booking_start_date").val();
644
    let start_date = $("#booking_start_date").val();
568
    let end_date = $("#booking_end_date").val();
645
    let end_date = $("#booking_end_date").val();
646
    let pickup_library_id = $("#pickup_library_id").val();
647
    let biblio_id = $("#booking_biblio_id").val();
569
    let item_id = $("#booking_item_id").val();
648
    let item_id = $("#booking_item_id").val();
570
649
571
    if (!booking_id) {
650
    if (!booking_id) {
Lines 574-580 $("#placeBookingForm").on("submit", function (e) { Link Here
574
            JSON.stringify({
653
            JSON.stringify({
575
                start_date: start_date,
654
                start_date: start_date,
576
                end_date: end_date,
655
                end_date: end_date,
577
                biblio_id: $("#booking_biblio_id").val(),
656
                pickup_library_id: pickup_library_id,
657
                biblio_id: biblio_id,
578
                item_id: item_id != 0 ? item_id : null,
658
                item_id: item_id != 0 ? item_id : null,
579
                patron_id: $("#booking_patron_id").find(":selected").val(),
659
                patron_id: $("#booking_patron_id").find(":selected").val(),
580
            })
660
            })
Lines 634-640 $("#placeBookingForm").on("submit", function (e) { Link Here
634
                booking_id: booking_id,
714
                booking_id: booking_id,
635
                start_date: start_date,
715
                start_date: start_date,
636
                end_date: end_date,
716
                end_date: end_date,
637
                biblio_id: $("#booking_biblio_id").val(),
717
                pickup_library_id: pickup_library_id,
718
                biblio_id: biblio_id,
638
                item_id: item_id != 0 ? item_id : null,
719
                item_id: item_id != 0 ? item_id : null,
639
                patron_id: $("#booking_patron_id").find(":selected").val(),
720
                patron_id: $("#booking_patron_id").find(":selected").val(),
640
            }),
721
            }),
Lines 692-697 $("#placeBookingModal").on("hidden.bs.modal", function (e) { Link Here
692
    $("#booking_patron_id").val(null).trigger("change");
773
    $("#booking_patron_id").val(null).trigger("change");
693
    $("#booking_patron_id").empty();
774
    $("#booking_patron_id").empty();
694
    $("#booking_item_id").val(0).trigger("change");
775
    $("#booking_item_id").val(0).trigger("change");
776
    $("#pickup_library_id").val(null).trigger("change");
777
    $("#pickup_library_id").empty();
695
    $("#period").get(0)._flatpickr.clear();
778
    $("#period").get(0)._flatpickr.clear();
696
    $("#booking_start_date").val("");
779
    $("#booking_start_date").val("");
697
    $("#booking_end_date").val("");
780
    $("#booking_end_date").val("");
698
- 

Return to bug 36120