changeset 1137:6abcecd3d277

Fix user autocomplete on private messages.
author Brian Neal <bgneal@gmail.com>
date Sun, 23 Oct 2016 12:00:04 -0500
parents ba1df459f3a8
children 0e93eaa323e7
files messages/forms.py sg101/static/js/v3/user_autocomplete.js sg101/templates/messages/compose.html
diffstat 3 files changed, 44 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/messages/forms.py	Thu Oct 13 19:47:21 2016 -0500
+++ b/messages/forms.py	Sun Oct 23 12:00:04 2016 -0500
@@ -13,7 +13,6 @@
 from core.html import ImageCheckError
 from core.html import image_check
 from core.markup import site_markup
-from core.widgets import AutoCompleteUserInput
 import messages
 from messages.models import Flag, Message, Options
 
@@ -28,9 +27,9 @@
     """
     receiver = forms.CharField(label='To',
             max_length=30,
-            widget=AutoCompleteUserInput())
-    subject = forms.CharField(max_length=120, widget=forms.TextInput(attrs={'size': 52}))
-    message = forms.CharField(widget=forms.Textarea(attrs={'class': 'markItUp smileyTarget'}))
+            widget=forms.TextInput(attrs={'class': 'sg101-user-autocomplete'}))
+    subject = forms.CharField(max_length=120)
+    message = forms.CharField(widget=forms.Textarea)
     attach_signature = forms.BooleanField(label='Attach Signature?', required=False)
     parent_id = forms.IntegerField(required=False, widget=forms.HiddenInput)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sg101/static/js/v3/user_autocomplete.js	Sun Oct 23 12:00:04 2016 -0500
@@ -0,0 +1,36 @@
+$(function() {
+    var cache = {};
+    var cacheSize = 0;
+    $(".sg101-user-autocomplete").autocomplete({
+        delay: 400,
+        minLength: 1,
+        source: function(request, response) {
+            if (cache[request.term]) {
+               response(cache[request.term]);
+               return;
+            }
+            $.ajax({
+                url: "/core/ajax/users/",
+                type: "GET",
+                data: {
+                    q: request.term,
+                    limit: 15
+                },
+                dataType: "json",
+                success: function(data, textStatus) {
+                    if (cacheSize >= 32) {
+                       cache = {};
+                       cacheSize = 0;
+                    }
+                    cache[request.term] = data;
+                    ++cacheSize;
+                    response(data);
+                },
+                error: function(xhr, textStatus, ex) {
+                    alert('Oops, an error occurred. ' + xhr.statusText + ' - ' +
+                      xhr.responseText);
+                }
+            });
+        }
+    });
+});
--- a/sg101/templates/messages/compose.html	Thu Oct 13 19:47:21 2016 -0500
+++ b/sg101/templates/messages/compose.html	Sun Oct 23 12:00:04 2016 -0500
@@ -2,6 +2,9 @@
 {% load core_tags %}
 {% load script_tags %}
 {% load static from staticfiles %}
+{% block custom_css %}
+{% css_tags 'jquery-ui' %}
+{% endblock %}
 {% block messages_content %}
 <h3>Compose Private Message</h3>
 <p>Use this form to send a new private message to another user.</p>
@@ -42,5 +45,7 @@
 {% include 'core/v3/post_box_modals.html' %}
 {% endblock %}
 {% block custom_js %}
+{% js_tags 'jquery-ui' %}
+<script src="{% static "js/v3/user_autocomplete.js" %}"></script>
 <script src="{% static "js/v3/post_box.js" %}"></script>
 {% endblock %}