diff options
Diffstat (limited to 'app/views')
-rw-r--r-- | app/views/refinery/blog/admin/posts/_form.html.erb | 2 | ||||
-rw-r--r-- | app/views/refinery/shared/admin/_autocomplete.html.erb | 45 |
2 files changed, 46 insertions, 1 deletions
diff --git a/app/views/refinery/blog/admin/posts/_form.html.erb b/app/views/refinery/blog/admin/posts/_form.html.erb index f9666ba..b2a31e1 100644 --- a/app/views/refinery/blog/admin/posts/_form.html.erb +++ b/app/views/refinery/blog/admin/posts/_form.html.erb @@ -112,5 +112,5 @@ <% content_for :stylesheets, stylesheet_link_tag('refinery/blog/backend') %> <% content_for :javascripts, javascript_include_tag('refinery/blog/backend') %> <%= render 'refinery/shared/admin/autocomplete', - :dom_id => '#blog_post_tag_list', + :dom_id => '#post_tag_list', :url => refinery.tags_blog_admin_posts_url %> diff --git a/app/views/refinery/shared/admin/_autocomplete.html.erb b/app/views/refinery/shared/admin/_autocomplete.html.erb index 97d4ac8..1131f89 100644 --- a/app/views/refinery/shared/admin/_autocomplete.html.erb +++ b/app/views/refinery/shared/admin/_autocomplete.html.erb @@ -1 +1,46 @@ <% content_for :stylesheets, stylesheet_link_tag("refinery/blog/ui-lightness/jquery-ui-1.8.13.custom") %> +<% content_for :javascripts do %> +<script> + function split(val) { + return val.split(/,\s*/); + } + function extractLast(term) { + return split(term).pop(); + } + $(document).ready(function(){ + $('<%= dom_id %>').bind("keydown", function(event) { + if (event.keyCode === $.ui.keyCode.TAB && $(this).data("autocomplete").menu.active) { + event.preventDefault() + } + }).autocomplete({ + source: function(request, response) { + $.getJSON("<%= url %>", { + term: extractLast(request.term) + }, response); + }, + search: function() { + // custom minLength + var term = extractLast(this.value); + if (term.length < 2) { + return false; + } + }, + focus: function() { + // prevent value inserted on focus + return false; + }, + select: function(event, ui) { + var terms = split(this.value); + // remove the current input + terms.pop(); + // add the selected item + terms.push(ui.item.value); + // add placeholder to get the comma-and-space at the end + terms.push(""); + this.value = terms.join(", "); + return false; + } + }); + }) +</script> +<% end %> |