diff --git a/lms/djangoapps/django_comment_client/base/views.py b/lms/djangoapps/django_comment_client/base/views.py index 5b020b7601..61ab28df76 100644 --- a/lms/djangoapps/django_comment_client/base/views.py +++ b/lms/djangoapps/django_comment_client/base/views.py @@ -298,10 +298,13 @@ def search_similar_threads(request, course_id, commentable_id): 'text': text, 'commentable_id': commentable_id, } - result = cc.search_similar_threads(course_id, recursive=False, query_params=query_params) - return JsonResponse(result) + threads = cc.search_similar_threads(course_id, recursive=False, query_params=query_params) else: - return JsonResponse([]) + theads = [] + context = { 'threads': map(utils.extend_content, threads) } + return JsonResponse({ + 'html': render_to_string('discussion/_similar_posts.html', context) + }) @require_GET def tags_autocomplete(request, course_id): diff --git a/lms/djangoapps/django_comment_client/helpers.py b/lms/djangoapps/django_comment_client/helpers.py index 779ae3c9ee..e793be27b5 100644 --- a/lms/djangoapps/django_comment_client/helpers.py +++ b/lms/djangoapps/django_comment_client/helpers.py @@ -33,24 +33,10 @@ def include_mustache_templates(): file_contents = map(read_file, filter(valid_file_name, os.listdir(mustache_dir))) return '\n'.join(map(wrap_in_tag, map(strip_file_name, file_contents))) -def permalink(content): - if content['type'] == 'thread': - return reverse('django_comment_client.forum.views.single_thread', - args=[content['course_id'], content['commentable_id'], content['id']]) - else: - return reverse('django_comment_client.forum.views.single_thread', - args=[content['course_id'], content['commentable_id'], content['thread_id']]) + '#' + content['id'] - def render_content(content, additional_context={}): - content_info = { - 'displayed_title': content.get('highlighted_title') or content.get('title', ''), - 'displayed_body': content.get('highlighted_body') or content.get('body', ''), - 'raw_tags': ','.join(content.get('tags', [])), - 'permalink': permalink(content), - } context = { - 'content': merge_dict(content, content_info), + 'content': extend_content(content), content['type']: True, } context = merge_dict(context, additional_context) diff --git a/lms/djangoapps/django_comment_client/utils.py b/lms/djangoapps/django_comment_client/utils.py index 9e2f9c8a03..11403bbaed 100644 --- a/lms/djangoapps/django_comment_client/utils.py +++ b/lms/djangoapps/django_comment_client/utils.py @@ -197,3 +197,20 @@ def url_for_tags(course_id, tags): def render_mustache(template_name, dictionary, *args, **kwargs): template = middleware.lookup['main'].get_template(template_name).source return pystache.render(template, dictionary) + +def permalink(content): + if content['type'] == 'thread': + return reverse('django_comment_client.forum.views.single_thread', + args=[content['course_id'], content['commentable_id'], content['id']]) + else: + return reverse('django_comment_client.forum.views.single_thread', + args=[content['course_id'], content['commentable_id'], content['thread_id']]) + '#' + content['id'] + +def extend_content(content): + content_info = { + 'displayed_title': content.get('highlighted_title') or content.get('title', ''), + 'displayed_body': content.get('highlighted_body') or content.get('body', ''), + 'raw_tags': ','.join(content.get('tags', [])), + 'permalink': permalink(content), + } + return merge_dict(content, content_info) diff --git a/lms/static/coffee/src/discussion/discussion.coffee b/lms/static/coffee/src/discussion/discussion.coffee index 336a440739..364df1d12c 100644 --- a/lms/static/coffee/src/discussion/discussion.coffee +++ b/lms/static/coffee/src/discussion/discussion.coffee @@ -61,17 +61,16 @@ if Backbone? $elem = $(event.target) url = DiscussionUtil.urlFor 'search_similar_threads', @model.id data = { text: @$(".new-post-title").val() } - DiscussionUtil.get $elem, url, data, (response, textStatus) => - $similarPosts.empty() - if $.type(response) == "array" and response.length + DiscussionUtil.safeAjax + $elem: $elem + url: url + data: data + dataType: 'json' + success: (response, textStatus) => + $wrapper.html(response.html) $wrapper.show() - for thread in response - $similarPost = $("").addClass("similar-post") - .html(thread["title"]) - .attr("href", "javascript:void(0)") #TODO - .appendTo($similarPosts) - else - $wrapper.hide() + $wrapper.find(".hide-similar-posts").click => + $wrapper.hide() else $wrapper.hide() $title.attr("prev-text", text) @@ -131,7 +130,7 @@ if Backbone? @$(".new-post-similar-posts").empty() @$(".new-post-similar-posts-wrapper").hide() - @$(".new-post-title").val("") + @$(".new-post-title").val("").attr("prev-text", "") DiscussionUtil.setWmdContent @$el, $.proxy(@$, @), "new-post-body", "" @$(".new-post-tags").val("") @$(".new-post-tags").importTags("") diff --git a/lms/templates/discussion/_similar_posts.html b/lms/templates/discussion/_similar_posts.html new file mode 100644 index 0000000000..f68964acec --- /dev/null +++ b/lms/templates/discussion/_similar_posts.html @@ -0,0 +1,9 @@ +% if len(threads) > 0: + Similar Posts: + +