From 7cb72342bb184527cae9fe059557b3ba42c8bb89 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Wed, 29 Jan 2014 12:53:49 -0800 Subject: [PATCH] CRM-10760 - Autocomplte - Convert quicksearch bar to use jQuery.ui + CRM.api --- js/Common.js | 5 +++ templates/CRM/common/Navigation.tpl | 49 ++++++++++++++++------------- 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/js/Common.js b/js/Common.js index 4dc1b47074..322bd8e8dc 100644 --- a/js/Common.js +++ b/js/Common.js @@ -843,6 +843,11 @@ CRM.validate = CRM.validate || { catch (e) {} }); + /** + * Temporary stub to get around name conflict with legacy jQuery.autocomplete plugin + */ + $.widget('civi.crmAutocomplete', $.ui.autocomplete, {}); + $(function () { // Trigger crmLoad on initial content for consistency. It will also be triggered for ajax-loaded content. $('.crm-container').trigger('crmLoad'); diff --git a/templates/CRM/common/Navigation.tpl b/templates/CRM/common/Navigation.tpl index 265215a9bf..148dfe0f97 100644 --- a/templates/CRM/common/Navigation.tpl +++ b/templates/CRM/common/Navigation.tpl @@ -88,29 +88,34 @@ $('#civicrm-menu').ready(function() { $(this).attr("tabIndex",i+2); }); - var contactUrl = {/literal}"{crmURL p='civicrm/ajax/rest' q='className=CRM_Contact_Page_AJAX&fnName=getContactList&json=1&context=navigation' h=0 }"{literal}; - $('#sort_name_navigation').autocomplete(contactUrl, { - width: 200, - selectFirst: false, - minChars: 1, - matchContains: true, - delay: 400, - max: {/literal}{crmSetting name="search_autocomplete_count" group="Search Preferences"}{literal}, - extraParams:{ - fieldName:function () { - return $('input[name=quickSearchField]:checked').val(); + $('#sort_name_navigation') + .crmAutocomplete({ + source: function(request, response) { + var + option = $('input[name=quickSearchField]:checked'), + params = { + name: request.term, + field_name: option.val(), + table_name: option.attr("data-tablename") + }; + CRM.api3('contact', 'getquick', params).done(function(result) { + var ret = []; + if (result.values) { + $.each(result.values, function(k, v) { + ret.push({value: v.id, label: v.data}); + }) + } + response(ret); + }) }, - tableName:function () { - return $('input[name=quickSearchField]:checked').attr("data-tablename"); - } - } - }).result(function(event, data, formatted) { - document.location = CRM.url('civicrm/contact/view', {reset: 1, cid: data[1]}); + select: function (event, ui) { + document.location = CRM.url('civicrm/contact/view', {reset: 1, cid: ui.item.value}); return false; - }); - $('#sort_name_navigation').keydown(function() { - $.Menu.closeAll(); - }); + } + }) + .keydown(function() { + $.Menu.closeAll(); + }); $('.crm-hidemenu').click(function() { $.Menu.closeAll(); $('#civicrm-menu').slideUp(); @@ -131,7 +136,7 @@ $('#civicrm-menu').ready(function() { if (value === 'first_name' || value === 'last_name') { value = 'sort_name'; } - $('#sort_name_navigation').attr({name: value, placeholder: label}).flushCache().focus(); + $('#sort_name_navigation').attr({name: value, placeholder: label}).focus(); }); // check if there is only one contact and redirect to view page $('#id_search_block').on('submit', function() { -- 2.25.1