
trs at bestpractical
Aug 8, 2013, 1:25 PM
Post #1 of 1
(12 views)
Permalink
|
|
rt branch, 4.2/autocomplete-bind-on-demand, created. rt-4.1.19-7-g0f4e331
|
|
The branch, 4.2/autocomplete-bind-on-demand has been created at 0f4e3314acd927b2955e39e1645dc7f9b916f5ec (commit) - Log ----------------------------------------------------------------- commit f4fd1f2e8c800acf4f60b5f567dc8d26fc680ed7 Author: Thomas Sibley <trs [at] bestpractical> Date: Thu Aug 8 13:21:39 2013 -0700 Add a CSS autocomplete class for Tickets … and a note to the regex so that it isn't missed in the future. This should have been part of 6375cfb. diff --git a/share/static/js/autocomplete.js b/share/static/js/autocomplete.js index 21099c3..3524a66 100644 --- a/share/static/js/autocomplete.js +++ b/share/static/js/autocomplete.js @@ -2,7 +2,8 @@ jQuery(function() { var cssClassMap = { Users: 'user', - Groups: 'group' + Groups: 'group', + Tickets: 'tickets' }; jQuery("input[data-autocomplete]").each(function(){ @@ -10,7 +11,7 @@ jQuery(function() { var what = input.attr("data-autocomplete"); var wants = input.attr("data-autocomplete-return"); - if (!what || !what.match(/^(Users|Groups|Tickets)$/)) + if (!what || !what.match(/^(Users|Groups|Tickets)$/)) // Did you update cssClassMap above? return; var queryargs = []; commit 0f4e3314acd927b2955e39e1645dc7f9b916f5ec Author: Thomas Sibley <trs [at] bestpractical> Date: Thu Aug 8 13:23:09 2013 -0700 Bestow the name of RT.Autocomplete.bind to the autocomplete registration function Dynamically added elements can have autocomplete inputs properly bound by calling: RT.Autocomplete.bind($containing_element) after they're added to the DOM. At some point we may want to do this automatically, but for now manual binding is enough rope. diff --git a/share/static/js/autocomplete.js b/share/static/js/autocomplete.js index 3524a66..3742a23 100644 --- a/share/static/js/autocomplete.js +++ b/share/static/js/autocomplete.js @@ -1,12 +1,14 @@ -jQuery(function() { +if (!window.RT) window.RT = {} +if (!window.RT.Autocomplete) window.RT.Autocomplete = {} +window.RT.Autocomplete.bind = function(from) { var cssClassMap = { Users: 'user', Groups: 'group', Tickets: 'tickets' }; - jQuery("input[data-autocomplete]").each(function(){ + jQuery("input[data-autocomplete]", from).each(function(){ var input = jQuery(this); var what = input.attr("data-autocomplete"); var wants = input.attr("data-autocomplete-return"); @@ -14,6 +16,10 @@ jQuery(function() { if (!what || !what.match(/^(Users|Groups|Tickets)$/)) // Did you update cssClassMap above? return; + // Don't re-bind the autocompleter + if (input.data("ui-autocomplete")) + return; + var queryargs = []; var options = { source: RT.Config.WebHomePath + "/Helpers/Autocomplete/" + what @@ -79,4 +85,5 @@ jQuery(function() { .appendTo( ul ); }; }); -}); +}; +jQuery(function(){ RT.Autocomplete.bind(document) }); -----------------------------------------------------------------------
|