Koha/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basketheader.tt
Nick Clemens f9cd9cca6a Bug 34509: Use select2 to load vendors on basket creation
This patch moves the dropdown to use select2 and avoids loading all
vendors at page load.

To test:
 1 - Create some extra vendors in your system, ideally over 20
 2 - Search for a vendor in acquisitions
 3 - Click 'New->basket'
 4 - Note the dropdown of all vendors
 5 - Choose a vendor and create a basket
 6 - Apply patch
 7 - Repeat
 8 - Note only a partial list of vendors is loaded
 9 - Search in the dropdown and confirm vendors are returned
10 - Select a vendor and create the basket

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
(cherry picked from commit 77ee1ca743)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
2023-08-29 11:43:05 -10:00

210 lines
8.9 KiB
Text

[% USE raw %]
[% USE Asset %]
[% USE Branches %]
[% USE Koha %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title>
[% IF ( add_form ) %]
[% IF ( basketno ) %]Edit basket '[% basketname | html %]'
[% ELSE %]Add a basket to [% booksellername | html %]
[% END %]
[% END %] &rsaquo; Acquisitions &rsaquo; Koha
</title>
[% INCLUDE 'doc-head-close.inc' %]
</head>
<body id="acq_basketheader" class="acq">
[% WRAPPER 'header.inc' %]
[% INCLUDE 'acquisitions-search.inc' %]
[% END %]
[% WRAPPER 'sub-header.inc' %]
[% WRAPPER breadcrumbs %]
[% WRAPPER breadcrumb_item %]
<a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a>
[% END %]
[% WRAPPER breadcrumb_item %]
<a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% booksellerid | uri %]">[% booksellername | html %]</a>
[% END %]
[% IF ( add_form ) %]
[% IF ( basketno ) %]
[% WRAPPER breadcrumb_item bc_active= 1%]
<span>Edit basket '[% basketname | html %]'</span>
[% END %]
[% ELSE %]
[% WRAPPER breadcrumb_item bc_active= 1%]
<span>Add a basket to [% booksellername | html %]</span>
[% END %]
[% END %]
[% END %]
[% END #/ WRAPPER breadcrumbs %]
[% END #/ WRAPPER sub-header.inc %]
<div class="main container-fluid">
<div class="row">
<div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">
[% IF ( add_form ) %]
[% IF ( basketno ) %]
<h1>Edit basket [% basketname | html %]</h1>
[% ELSE %]<h1>Add a basket to [% booksellername | html %]</h1>
[% END %]
<form name="Aform" action="[% script_name | html %]" method="post" class="validated">
<input type="hidden" name="booksellerid" value="[% booksellerid | html %]" />
<fieldset class="rows">
<ol>
[% IF ( basketno ) %]
<li>
<input type="hidden" name="basketno" value="[% basketno | html %]" />
<input type="hidden" name="is_an_edit" value="1" />
</li>
[% END %]
<li>
<label for="basketname" class="required">Basket name: </label>
<input type="text" name="basketname" id="basketname" size="40" maxlength="80" value="[% basketname | html %]" required="required" class="focus required" />
<span class="required">Required</span>
</li>
<li>
<label for="billingplace">Billing place: </label>
<select name="billingplace" id="billingplace">
<option value="">--</option>
[% PROCESS options_for_libraries libraries => Branches.all( selected => billingplace ) %]
</select>
</li>
<li>
<label for="deliveryplace">Delivery place: </label>
<select name="deliveryplace" id="deliveryplace">
<option value="">--</option>
[% PROCESS options_for_libraries libraries => Branches.all( selected => deliveryplace ) %]
</select>
</li>
<li>
<label for="basketbooksellerid">Vendor: </label>
<select name="basketbooksellerid" id="basketbooksellerid">
<option value="[% booksellerid | html %]" selected="selected">Current vendor ([% booksellername | html %])</option>
</select>
</li>
<li>
<label for="basketnote">Internal note: </label>
<textarea name="basketnote" id="basketnote" rows="5" cols="40">[% basketnote |html %]</textarea>
</li>
<li>
<label for="basketbooksellernote">Vendor note: </label>
<textarea name="basketbooksellernote" id="basketbooksellernote" rows="5" cols="40">[% basketbooksellernote |html %]</textarea>
</li>
[% IF ( contractloop ) %]
<li><label for="basketcontractnumber">Contract: </label>
<select id="basketcontractnumber" name="basketcontractnumber">
<option value=""></option>
[% FOREACH contractloo IN contractloop %]
[% IF ( contractloo.selected ) %]
<option value="[% contractloo.contractnumber | html %]" selected="selected">[% contractloo.contractname | html %]</option>
[% ELSE %]
<option value="[% contractloo.contractnumber | html %]">[% contractloo.contractname | html %]</option>
[% END %]
[% END %]
</select>
</li>
[% END %]
<li>
<label for="is_standing">Orders are standing:</label>
[% IF is_standing %]
<input type="checkbox" id="is_standing" name="is_standing" checked="checked" />
[% ELSE %]
<input type="checkbox" id="is_standing" name="is_standing"/>
[% END %]
<div class="hint">Standing orders do not close when received.</div>
</li>
[% IF basketno %]
<input type="hidden" name="create_items" value="[% create_items | html %]" />
[% ELSE %]
<li>
<label for="create_items">Create items when:</label>
<select name="create_items" id="create_items">
[% SWITCH Koha.Preference('AcqCreateItem') %]
[% CASE 'receiving' %]<option value="">use default (receiving an order)</option>
[% CASE 'cataloguing' %]<option value="">use default (cataloging the record)</option>
[% CASE %]<option value="">use default (placing an order)</option>
[% END %]
<option value="ordering">placing an order</option>
<option value="receiving">receiving an order</option>
<option value="cataloguing">cataloging the record</option>
</select>
</li>
[% END %]
</ol>
</fieldset>
[% IF available_additional_fields.count %]
[% INCLUDE 'additional-fields-entry.inc' available=available_additional_fields values=additional_field_values %]
[% END %]
<fieldset class="action">
<input type="hidden" name="op" value="add_validate" />
<input type="submit" class="btn btn-primary" value="Save" />
[% IF ( basketno ) %]
<a class="cancel" href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basketno | html %]">Cancel</a>
[% ELSE %]
<a class="cancel" href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% booksellerid | html %]">Cancel</a>
[% END %]
</fieldset>
</form>
[% END %]
</div>
</div>
[% MACRO jsinclude BLOCK %]
[% Asset.js("js/acquisitions-menu.js") | $raw %]
[% Asset.js("js/acq.js") | $raw %]
[% INCLUDE 'select2.inc' %]
<script>
$(document).ready(function() {
function display_vendor(vendor) {
var $text;
$text = $('<span>'+vendor.text+'</span>');
return $text;
};
$("#basketbooksellerid").kohaSelect({
width: '50%',
allowClear: false,
ajax: {
url: '/api/v1/acquisitions/vendors',
delay: 300, // wait 300 milliseconds before triggering the request
cache: true,
dataType: 'json',
data: function (params) {
var search_term = (params.term === undefined) ? '' : params.term;
var query = {
"q": JSON.stringify({"name":{"-like":'%'+search_term+'%'}}),
"_order_by": "name",
"_page": params.page
};
return query;
},
processResults: function (data) {
var results = [];
data.results.forEach( function ( vendor ) {
results.push(
{
"id": vendor.id,
"text": vendor.name.escapeHtml()
}
);
});
return { "results": results, "pagination": { "more": data.pagination.more } };
}
},
templateResult: display_vendor,
templateSelection: display_vendor
});
});
</script>
[% END %]
[% INCLUDE 'intranet-bottom.inc' %]