From 3e9989568e171ebcfc73df80c49556e0b663a8ae Mon Sep 17 00:00:00 2001 From: Fridolin Somers Date: Wed, 27 Mar 2019 16:19:29 +0100 Subject: [PATCH] Bug 22595: Items search is mixing inputs Items search is using inputs and selects from search form to create an Ajax call. In this call selects are parsed before inputs. But a custom search field can be used with authorised values and used after a regular search field. In this case the "q" param is not ordered like the "name" param. Test plan : 1) Go to Administration > Item search fields 2) Define a search field with an authorised values category 3) Go to items search 4) Use a regular filter like call number 5) Click on new field 6) Use custom field with an authorised value 7) Perform search => Without patch you get wrong resuts, authorised value is used as value for first field => You can see this by listening traffic in Firebug, look at params "f" and "q" 8) Check some combinaison of select and input filters Signed-off-by: Michal Denar Signed-off-by: Katrin Fischer Signed-off-by: Nick Clemens --- .../prog/en/modules/catalogue/itemsearch.tt | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/itemsearch.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/itemsearch.tt index ab3c027c5c..c7c3668257 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/itemsearch.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/itemsearch.tt @@ -329,16 +329,14 @@ .append(table); var params = []; - $form.find('select').not(':disabled').find('option:selected').each(function () { - var name = $(this).parents('select').first().attr('name'); - var value = $(this).val(); - params.push({ 'name': name, 'value': value }); - }); - $form.find('input[type="text"],input[type="hidden"]').not(':disabled').each(function () { - params.push({ 'name': $(this).attr('name'), 'value': $(this).val() }); - }); - $form.find('input[type="radio"]:checked').each(function() { - params.push({ 'name': $(this).attr('name'), 'value': $(this).val() }); + $form.find('select:not(:disabled) option:selected,input[type="text"]:not(:disabled),input[type="hidden"]:not(:disabled),input[type="radio"]:checked').each(function() { + if ( $(this).prop('tagName').toLowerCase() == 'option' ) { + var name = $(this).parents('select').first().attr('name'); + var value = $(this).val(); + params.push({ 'name': name, 'value': value }); + } else { + params.push({ 'name': $(this).attr('name'), 'value': $(this).val() }); + } }); $('#results').dataTable($.extend(true, {}, dataTablesDefaults, { -- 2.39.5