basic tag autocomplete

This commit is contained in:
Rocky Duan
2012-07-29 17:32:00 -04:00
parent b92a180d25
commit 8e3251c915
7 changed files with 32 additions and 7 deletions

View File

@@ -258,16 +258,26 @@
}
if (jQuery.Autocompleter !== undefined) {
onSelectCallback = settings.autocomplete.onItemSelect;
settings.autocomplete.onItemSelect = function() {
console.log("here");
$(data.real_input).addTag($(data.fake_input).val(), {focus: true, unique: (settings.unique)});
$(data.fake_input).resetAutosize(settings);
if (onSelectCallback) {
onSelectCallback();
}
}
$(data.fake_input).autocomplete(settings.autocomplete_url, settings.autocomplete);
$(data.fake_input).bind('result',data,function(event,data,formatted) {
if (data) {
$('#'+id).addTag(data[0] + "",{focus:true,unique:(settings.unique)});
}
});
});
} else if (jQuery.ui.autocomplete !== undefined) {
$(data.fake_input).autocomplete(autocomplete_options);
$(data.fake_input).bind('autocompleteselect',data,function(event,ui) {
$(event.data.real_input).addTag(ui.item.value,{focus:true,unique:(settings.unique)});
return false;
});
}
@@ -299,7 +309,6 @@
return false;
} else if (event.data.autosize) {
$(event.data.fake_input).doAutosize(settings);
}
});
//Delete last tag on backspace

View File

@@ -4,6 +4,7 @@ import django_comment_client.base.views
urlpatterns = patterns('django_comment_client.base.views',
url(r'upload$', 'upload', name='upload'),
url(r'threads/tags/autocomplete$', 'tags_autocomplete', name='tags_autocomplete'),
url(r'threads/(?P<thread_id>[\w\-]+)/update$', 'update_thread', name='update_thread'),
url(r'threads/(?P<thread_id>[\w\-]+)/reply$', 'create_comment', name='create_comment'),
url(r'threads/(?P<thread_id>[\w\-]+)/delete', 'delete_thread', name='delete_thread'),

View File

@@ -188,7 +188,6 @@ def unfollow(request, course_id, followed_user_id):
response = comment_client.unfollow(user_id, followed_user_id)
return JsonResponse(response)
@login_required
@require_GET
def search(request, course_id):
text = request.GET.get('text', None)
@@ -201,6 +200,14 @@ def search(request, course_id):
})
return JsonResponse(response)
@require_GET
def tags_autocomplete(request, course_id):
value = request.GET.get('q', None)
results = []
if value:
results = comment_client.tags_autocomplete(value)
return JsonResponse(results)
@csrf.csrf_exempt
@login_required
@require_POST

View File

@@ -14,6 +14,9 @@ def get_threads(commentable_id, recursive=False, *args, **kwargs):
def get_threads_tags(*args, **kwargs):
return _perform_request('get', _url_for_threads_tags(), {}, *args, **kwargs)
def tags_autocomplete(value, *args, **kwargs):
return _perform_request('get', _url_for_threads_tags_autocomplete(), {'value': value}, *args, **kwargs)
def create_thread(commentable_id, attributes, *args, **kwargs):
return _perform_request('post', _url_for_threads(commentable_id), attributes, *args, **kwargs)
@@ -132,3 +135,6 @@ def _url_for_search_threads():
def _url_for_threads_tags():
return "{prefix}/threads/tags".format(prefix=PREFIX)
def _url_for_threads_tags_autocomplete():
return "{prefix}/threads/tags/autocomplete".format(prefix=PREFIX)

View File

@@ -45,6 +45,7 @@ Discussion =
downvote_comment : "/courses/#{$$course_id}/discussion/comments/#{param}/downvote"
upload : "/courses/#{$$course_id}/discussion/upload"
search : "/courses/#{$$course_id}/discussion/forum/search"
tags_autocomplete : "/courses/#{$$course_id}/discussion/threads/tags/autocomplete"
}[name]
handleAnchorAndReload: (response) ->
@@ -128,7 +129,9 @@ Discussion =
if $$tags?
$local(".new-post-tags").tagsInput
autocomplete: $$tags
autocomplete_url: Discussion.urlFor('tags_autocomplete')
autocomplete:
remoteDataType: 'json'
interactive: true
defaultText: "add a tag"
height: "30px"

View File

@@ -32,8 +32,10 @@
<script type="text/javascript" src="${static.url('js/vendor/Markdown.Converter.js')}"></script>
<script type="text/javascript" src="${static.url('js/vendor/Markdown.Sanitizer.js')}"></script>
<script type="text/javascript" src="${static.url('js/vendor/Markdown.Editor.js')}"></script>
<script type="text/javascript" src="${static.url('js/vendor/jquery.autocomplete.js')}"></script>
<script type="text/javascript" src="${static.url('js/vendor/jquery.tagsinput.js')}"></script>
<link href="${static.url('css/vendor/jquery.tagsinput.css')}" rel="stylesheet" type="text/css">
<link href="${static.url('css/vendor/jquery.autocomplete.css')}" rel="stylesheet" type="text/css">
</%block>
<%include file="../course_navigation.html" args="active_page='discussion'" />

View File

@@ -3,8 +3,6 @@
<%! from dateutil.parser import parse %>
<%! import urllib %>
<%def name="render_thread(course_id, thread, edit_thread=False, show_comments=False)">
<%
if show_comments:
@@ -93,7 +91,6 @@
<a class="discussion-link discussion-watch-thread" href="javascript:void(0)">Watch</a>
</%def>
<%def name="render_vote(content)">
<%
upvote = "&#x2C4;"