basic tag autocomplete
This commit is contained in:
13
common/static/js/vendor/jquery.tagsinput.js
vendored
13
common/static/js/vendor/jquery.tagsinput.js
vendored
@@ -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
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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'" />
|
||||
|
||||
@@ -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 = "˄"
|
||||
|
||||
Reference in New Issue
Block a user