diff --git a/lms/djangoapps/django_comment_client/forum/views.py b/lms/djangoapps/django_comment_client/forum/views.py index 0a94603267..d878d55238 100644 --- a/lms/djangoapps/django_comment_client/forum/views.py +++ b/lms/djangoapps/django_comment_client/forum/views.py @@ -78,9 +78,23 @@ def forum_form_discussion(request, course_id, discussion_id): def render_single_thread(request, course_id, thread_id): + def get_annotated_content_info(thread, user_id): + infos = {} + def _annotate(content): + infos[str(content['id'])] = { + 'editable': str(content['user_id']) == str(user_id), # TODO may relax this to instructors + } + for child in content['children']: + _annotate(child) + _annotate(thread) + return infos + + thread = comment_client.get_thread(thread_id, recursive=True) + context = { - 'thread': comment_client.get_thread(thread_id, recursive=True), + 'thread': thread, 'user_info': comment_client.get_user_info(request.user.id, raw=True), + 'annotated_content_info': json.dumps(get_annotated_content_info(thread=thread, user_id=request.user.id)), 'tags': comment_client.get_threads_tags(raw=True), 'course_id': course_id, } diff --git a/lms/static/coffee/src/discussion.coffee b/lms/static/coffee/src/discussion.coffee index 479c8f69dc..f655d020a4 100644 --- a/lms/static/coffee/src/discussion.coffee +++ b/lms/static/coffee/src/discussion.coffee @@ -197,7 +197,7 @@ Discussion = else view = { id: id - showWatchCheckbox: $discussionContent.parent(".thread").attr("_id") not in $$user_info.subscribed_thread_ids + showWatchCheckbox: $discussionContent.parents(".thread").attr("_id") not in $$user_info.subscribed_thread_ids } $discussionContent.append Mustache.render Discussion.replyTemplate, view Markdown.makeWmdEditor $local(".reply-body"), "-reply-body-#{id}", Discussion.urlFor('upload') @@ -339,6 +339,11 @@ Discussion = raw_text = $local(".content-body").html() converter = Markdown.getMathCompatibleConverter() $local(".content-body").html(converter.makeHtml(raw_text)) + id = $content.attr("_id") + if not ($$annotated_content_info[id] || [])['editable'] + $local(".discussion-edit").remove() + + bindDiscussionEvents: (discussion) -> $discussion = $(discussion) diff --git a/lms/templates/discussion/single_thread.html b/lms/templates/discussion/single_thread.html index a3d57b867c..7157bd2296 100644 --- a/lms/templates/discussion/single_thread.html +++ b/lms/templates/discussion/single_thread.html @@ -14,4 +14,5 @@ var $$user_info = JSON.parse('${user_info | escape_quotes}'); var $$course_id = "${course_id}"; var $$tags = JSON.parse("${tags | escape_quotes}"); + var $$annotated_content_info = JSON.parse("${annotated_content_info | escape_quotes}");