diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc index a5159b0150..1e687f8ab7 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc @@ -29,7 +29,6 @@ [% INCLUDE 'js-date-format.inc' %] [% INCLUDE 'js-patron-get-age.inc' %] [% INCLUDE 'js-patron-format-address.inc' %] -[% Asset.js("js/patron-autocomplete.js") | $raw %] [% INCLUDE 'validator-strings.inc' %] [% IF ( IntranetUserJS ) %] diff --git a/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js b/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js deleted file mode 100644 index cff6a257fd..0000000000 --- a/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js +++ /dev/null @@ -1,134 +0,0 @@ -function patron_autocomplete(node, options) { - let link_to; - let url_params; - let on_select_callback; - let leading_wildcard = defaultPatronSearchMethod === 'contains' ? '%' : ''; - if ( options ) { - if ( options['link-to'] ) { - link_to = options['link-to']; - } - if ( options['url-params'] ) { - url_params = options['url-params']; - } - if ( options['on-select-callback'] ) { - on_select_callback = options['on-select-callback']; - } - } - return node.autocomplete({ - source: function( request, response ) { - let q = [] - - // Add each pattern in search term for each search field - let pattern_subquery_and = []; - request.term.split(/[\s,]+/) - .filter(function(s){ return s.length }) - .forEach(function(pattern,i){ - let pattern_subquery_or = []; - defaultPatronSearchFields.split(',').forEach(function(field,i){ - pattern_subquery_or.push( - { ["me." + field]: { 'like': leading_wildcard + pattern + '%' } } - ); - }); - pattern_subquery_and.push(pattern_subquery_or); - }); - q.push({ "-and": pattern_subquery_and }); - - // Add full search term for each search field - let term_subquery_or = []; - defaultPatronSearchFields.split(',').forEach(function (field, i) { - term_subquery_or.push( - { ["me." + field]: { 'like': leading_wildcard + request.term + '%' } } - ); - }); - q.push({ "-or": term_subquery_or }); - - let params = { - '_page': 1, - '_per_page': 10, - 'q': JSON.stringify(q), - '_order_by': '+me.surname,+me.firstname', - }; - $.ajax({ - data: params, - type: 'GET', - url: '/api/v1/patrons', - headers: { - "x-koha-embed": "library" - }, - success: function(data) { - return response(data); - }, - error: function(e) { - if ( e.state() != 'rejected' ) { - alert( __("An error occurred. Check the logs") ); - } - return response(); - } - }); - }, - minLength: 3, - select: function( event, ui ) { - if ( ui.item.link ) { - window.location.href = ui.item.link; - } else if ( on_select_callback ) { - return on_select_callback(event, ui); - } - }, - focus: function( event, ui ) { - event.preventDefault(); // Don't replace the text field - }, - }) - .data( "ui-autocomplete" ) - ._renderItem = function( ul, item ) { - if ( link_to ) { - item.link = link_to == 'circ' - ? "/cgi-bin/koha/circ/circulation.pl" - : link_to == 'reserve' - ? "/cgi-bin/koha/reserve/request.pl" - : "/cgi-bin/koha/members/moremember.pl"; - item.link += ( url_params ? '?' + url_params + '&' : "?" ) + 'borrowernumber=' + item.patron_id; - } else { - item.link = null; - } - - var cardnumber = ""; - if( item.cardnumber != "" ){ - // Display card number in parentheses if it exists - cardnumber = " (" + item.cardnumber + ") "; - } - if( item.library_id == loggedInLibrary ){ - loggedInClass = "ac-currentlibrary"; - } else { - loggedInClass = ""; - } - return $( "
  • " ) - .addClass( loggedInClass ) - .data( "ui-autocomplete-item", item ) - .append( - "" - + ( item.link ? "" : "" ) - + ( item.surname ? item.surname.escapeHtml() : "" ) + ", " - + ( item.firstname ? item.firstname.escapeHtml() : "" ) - + cardnumber.escapeHtml() - + " " - + ( item.date_of_birth - ? $date(item.date_of_birth) - + " (" - + $get_age(item.date_of_birth) - + " " - + __("years") - + ")," - : "" - ) + " " - + $format_address(item, { no_line_break: true, include_li: false }) + " " - + ( !singleBranchMode - ? - "" - + item.library.name.escapeHtml() - + "" - : "" ) - + "" - + "" ) - .appendTo( ul ); - }; -} diff --git a/koha-tmpl/intranet-tmpl/prog/js/staff-global.js b/koha-tmpl/intranet-tmpl/prog/js/staff-global.js index c4890ae20e..04219caa40 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/staff-global.js +++ b/koha-tmpl/intranet-tmpl/prog/js/staff-global.js @@ -398,3 +398,138 @@ function saveOrClearSimpleSearchParams() { localStorage.setItem('cat_search_pulldown_selection', pulldown_selection ); localStorage.setItem('searchbox_value', searchbox_value ); } + +function patron_autocomplete(node, options) { + let link_to; + let url_params; + let on_select_callback; + let leading_wildcard = defaultPatronSearchMethod === 'contains' ? '%' : ''; + if (options) { + if (options['link-to']) { + link_to = options['link-to']; + } + if (options['url-params']) { + url_params = options['url-params']; + } + if (options['on-select-callback']) { + on_select_callback = options['on-select-callback']; + } + } + return node.autocomplete({ + source: function (request, response) { + let q = [] + + // Add each pattern in search term for each search field + let pattern_subquery_and = []; + request.term.split(/[\s,]+/) + .filter(function (s) { return s.length }) + .forEach(function (pattern, i) { + let pattern_subquery_or = []; + defaultPatronSearchFields.split(',').forEach(function (field, i) { + pattern_subquery_or.push( + { ["me." + field]: { 'like': leading_wildcard + pattern + '%' } } + ); + }); + pattern_subquery_and.push(pattern_subquery_or); + }); + q.push({ "-and": pattern_subquery_and }); + + // Add full search term for each search field + let term_subquery_or = []; + defaultPatronSearchFields.split(',').forEach(function (field, i) { + term_subquery_or.push( + { ["me." + field]: { 'like': leading_wildcard + request.term + '%' } } + ); + }); + q.push({ "-or": term_subquery_or }); + + let params = { + '_page': 1, + '_per_page': 10, + 'q': JSON.stringify(q), + '_order_by': '+me.surname,+me.firstname', + }; + $.ajax({ + data: params, + type: 'GET', + url: '/api/v1/patrons', + headers: { + "x-koha-embed": "library" + }, + success: function (data) { + return response(data); + }, + error: function (e) { + if (e.state() != 'rejected') { + alert(__("An error occurred. Check the logs")); + } + return response(); + } + }); + }, + minLength: 3, + select: function (event, ui) { + if (ui.item.link) { + window.location.href = ui.item.link; + } else if (on_select_callback) { + return on_select_callback(event, ui); + } + }, + focus: function (event, ui) { + event.preventDefault(); // Don't replace the text field + }, + }) + .data("ui-autocomplete") + ._renderItem = function (ul, item) { + if (link_to) { + item.link = link_to == 'circ' + ? "/cgi-bin/koha/circ/circulation.pl" + : link_to == 'reserve' + ? "/cgi-bin/koha/reserve/request.pl" + : "/cgi-bin/koha/members/moremember.pl"; + item.link += (url_params ? '?' + url_params + '&' : "?") + 'borrowernumber=' + item.patron_id; + } else { + item.link = null; + } + + var cardnumber = ""; + if (item.cardnumber != "") { + // Display card number in parentheses if it exists + cardnumber = " (" + item.cardnumber + ") "; + } + if (item.library_id == loggedInLibrary) { + loggedInClass = "ac-currentlibrary"; + } else { + loggedInClass = ""; + } + return $("
  • ") + .addClass(loggedInClass) + .data("ui-autocomplete-item", item) + .append( + "" + + (item.link ? "" : "") + + (item.surname ? item.surname.escapeHtml() : "") + ", " + + (item.firstname ? item.firstname.escapeHtml() : "") + + cardnumber.escapeHtml() + + " " + + (item.date_of_birth + ? $date(item.date_of_birth) + + " (" + + $get_age(item.date_of_birth) + + " " + + __("years") + + ")," + : "" + ) + " " + + $format_address(item, { no_line_break: true, include_li: false }) + " " + + (!singleBranchMode + ? + "" + + item.library.name.escapeHtml() + + "" + : "") + + "" + + "") + .appendTo(ul); + }; +}