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
                                    [% END %]
25
                                    [% END %]
26
                                </select>
26
                                </select>
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/place_booking_modal.js (-3 / +79 lines)
Lines 108-113 $('#placeBookingModal').on('show.bs.modal', function(e) { Link Here
108
108
109
    $('#booking_patron_id').on('select2:select', function (e) {
109
    $('#booking_patron_id').on('select2:select', function (e) {
110
        booking_patron = e.params.data;
110
        booking_patron = e.params.data;
111
        $("#pickup_library_id").prop("disabled", false);
112
    });
113
114
    // Pickup location select2
115
    let pickup_url = '/api/v1/biblios/' + biblionumber + '/pickup_locations';
116
    $("#pickup_library_id").kohaSelect({
117
        dropdownParent: $(".modal-content", "#placeBookingModal"),
118
        width: '50%',
119
        dropdownAutoWidth: true,
120
        allowClear: false,
121
        ajax: {
122
            url: pickup_url,
123
            delay: 300, // wait 300 milliseconds before triggering the request
124
            cache: true,
125
            dataType: 'json',
126
            data: function (params) {
127
                var search_term = (params.term === undefined) ? '' : params.term;
128
                var query = {
129
                    "q": JSON.stringify({"name":{"-like":'%'+search_term+'%'}}),
130
                    "_order_by": "name",
131
                    "_page": params.page
132
                };
133
                query["patron_id"] = booking_patron.patron_id;
134
                return query;
135
            },
136
            processResults: function (data) {
137
                var results = [];
138
                data.results.forEach( function ( pickup_location ) {
139
                    results.push(
140
                        {
141
                            "id": pickup_location.library_id.escapeHtml(),
142
                            "text": pickup_location.name.escapeHtml(),
143
                            "needs_override": pickup_location.needs_override,
144
                            "pickup_items": pickup_location.pickup_items,
145
                        }
146
                    );
147
                });
148
                return { "results": results, "pagination": { "more": data.pagination.more } };
149
            }
150
        },
151
        templateResult: function (state) {
152
            var $text;
153
            if ( state.needs_override === true ) {
154
                $text = $(
155
                    '<span>' + state.text + '</span> <span style="float:right;" title="' +
156
                    __("This pickup location is not allowed according to circulation rules") +
157
                    '"><i class="fa fa-exclamation-circle" aria-hidden="true"></i></span>'
158
                );
159
            }
160
            else {
161
                $text = $('<span>'+state.text+'</span>');
162
            }
163
            return $text;
164
        },
111
    });
165
    });
112
166
113
    // Adopt periodPicker
167
    // Adopt periodPicker
Lines 310-315 $('#placeBookingModal').on('show.bs.modal', function(e) { Link Here
310
                    periodPicker.redraw();
364
                    periodPicker.redraw();
311
                });
365
                });
312
366
367
                // Setup listener for pickup location select2
368
                $('#pickup_library_id').on('select2:select', function(e) {
369
                    let valid_items = e.params.data.pickup_items;
370
371
                    // Disable items not available at the pickup location
372
                    $("#booking_item_id > option").each(function() {
373
                        let option = $(this);
374
                        let item_id = option.val();
375
                        if (valid_items.includes(parseInt(item_id))) {
376
                            option.prop('disabled',false);
377
                        } else {
378
                            option.prop('disabled',true);
379
                        }
380
                    });
381
                    $('#booking_item_id').trigger('change.select2');
382
                });
383
313
                // Set onChange for flatpickr
384
                // Set onChange for flatpickr
314
                let changeExists = periodPicker.config.onChange.filter(f => f.name ==='periodChange');
385
                let changeExists = periodPicker.config.onChange.filter(f => f.name ==='periodChange');
315
                if(changeExists.length === 0) {
386
                if(changeExists.length === 0) {
Lines 446-451 $("#placeBookingForm").on('submit', function(e) { Link Here
446
517
447
    let start_date = $('#booking_start_date').val();
518
    let start_date = $('#booking_start_date').val();
448
    let end_date = $('#booking_end_date').val();
519
    let end_date = $('#booking_end_date').val();
520
    let pickup_library_id = $('#pickup_library_id').val();
521
    let biblio_id = $('#booking_biblio_id').val();
449
    let item_id = $('#booking_item_id').val();
522
    let item_id = $('#booking_item_id').val();
450
523
451
    if (!booking_id) {
524
    if (!booking_id) {
Lines 454-460 $("#placeBookingForm").on('submit', function(e) { Link Here
454
            JSON.stringify({
527
            JSON.stringify({
455
                "start_date": start_date,
528
                "start_date": start_date,
456
                "end_date": end_date,
529
                "end_date": end_date,
457
                "biblio_id": $('#booking_biblio_id').val(),
530
                "pickup_library_id": pickup_library_id,
531
                "biblio_id": biblio_id,
458
                "item_id": item_id != 0 ? item_id : null,
532
                "item_id": item_id != 0 ? item_id : null,
459
                "patron_id": $('#booking_patron_id').find(':selected').val()
533
                "patron_id": $('#booking_patron_id').find(':selected').val()
460
            })
534
            })
Lines 505-511 $("#placeBookingForm").on('submit', function(e) { Link Here
505
                "booking_id": booking_id,
579
                "booking_id": booking_id,
506
                "start_date": start_date,
580
                "start_date": start_date,
507
                "end_date": end_date,
581
                "end_date": end_date,
508
                "biblio_id": $('#booking_biblio_id').val(),
582
                "pickup_library_id": pickup_library_id,
583
                "biblio_id": biblio_id,
509
                "item_id": item_id != 0 ? item_id : null,
584
                "item_id": item_id != 0 ? item_id : null,
510
                "patron_id": $('#booking_patron_id').find(':selected').val()
585
                "patron_id": $('#booking_patron_id').find(':selected').val()
511
            })
586
            })
Lines 554-559 $('#placeBookingModal').on('hidden.bs.modal', function (e) { Link Here
554
    $('#booking_patron_id').val(null).trigger('change');
629
    $('#booking_patron_id').val(null).trigger('change');
555
    $('#booking_patron_id').empty();
630
    $('#booking_patron_id').empty();
556
    $('#booking_item_id').val(0).trigger('change');
631
    $('#booking_item_id').val(0).trigger('change');
632
    $('#pickup_library_id').val(null).trigger('change');
633
    $('#pickup_library_id').empty();
557
    $('#period').get(0)._flatpickr.clear();
634
    $('#period').get(0)._flatpickr.clear();
558
    $('#booking_start_date').val('');
635
    $('#booking_start_date').val('');
559
    $('#booking_end_date').val('');
636
    $('#booking_end_date').val('');
560
- 

Return to bug 36120