aboutsummaryrefslogtreecommitdiffstats
path: root/app/views
diff options
context:
space:
mode:
Diffstat (limited to 'app/views')
-rw-r--r--app/views/refinery/blog/admin/posts/_form.html.erb2
-rw-r--r--app/views/refinery/shared/admin/_autocomplete.html.erb45
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 %>