From 3761b02ce8e69e4552ce763316d1e091458a5298 Mon Sep 17 00:00:00 2001 From: Rocky Duan Date: Thu, 23 Aug 2012 15:12:02 -0700 Subject: [PATCH] hide reply button after closing thread --- .../django_comment_client/base/views.py | 6 +++++- lms/djangoapps/django_comment_client/utils.py | 19 +++++++++++-------- .../coffee/src/discussion/content.coffee | 5 ++++- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/lms/djangoapps/django_comment_client/base/views.py b/lms/djangoapps/django_comment_client/base/views.py index dd9da857c6..d1e428ef9c 100644 --- a/lms/djangoapps/django_comment_client/base/views.py +++ b/lms/djangoapps/django_comment_client/base/views.py @@ -156,7 +156,11 @@ def openclose_thread(request, course_id, thread_id): thread = cc.Thread.find(thread_id) thread.closed = request.POST.get('closed', 'false').lower() == 'true' thread.save() - return JsonResponse(thread.to_dict()) + thread = thread.to_dict() + return JsonResponse({ + 'content': thread, + 'ability': utils.get_ability(course_id, thread, request.user), + }) @require_POST @login_required diff --git a/lms/djangoapps/django_comment_client/utils.py b/lms/djangoapps/django_comment_client/utils.py index fded387462..4908ee91b5 100644 --- a/lms/djangoapps/django_comment_client/utils.py +++ b/lms/djangoapps/django_comment_client/utils.py @@ -164,6 +164,16 @@ class QueryCountDebugMiddleware(object): logging.info('%s queries run, total %s seconds' % (len(connection.queries), total_time)) return response +def get_ability(course_id, content, user): + return { + 'editable': check_permissions_by_view(user, course_id, content, "update_thread" if content['type'] == 'thread' else "update_comment"), + 'can_reply': check_permissions_by_view(user, course_id, content, "create_comment" if content['type'] == 'thread' else "create_sub_comment"), + 'can_endorse': check_permissions_by_view(user, course_id, content, "endorse_comment") if content['type'] == 'comment' else False, + 'can_delete': check_permissions_by_view(user, course_id, content, "delete_thread" if content['type'] == 'thread' else "delete_comment"), + 'can_openclose': check_permissions_by_view(user, course_id, content, "openclose_thread") if content['type'] == 'thread' else False, + 'can_vote': check_permissions_by_view(user, course_id, content, "vote_for_thread" if content['type'] == 'thread' else "vote_for_comment"), + } + def get_annotated_content_info(course_id, content, user, user_info): voted = '' if content['id'] in user_info['upvoted_ids']: @@ -173,14 +183,7 @@ def get_annotated_content_info(course_id, content, user, user_info): return { 'voted': voted, 'subscribed': content['id'] in user_info['subscribed_thread_ids'], - 'ability': { - 'editable': check_permissions_by_view(user, course_id, content, "update_thread" if content['type'] == 'thread' else "update_comment"), - 'can_reply': check_permissions_by_view(user, course_id, content, "create_comment" if content['type'] == 'thread' else "create_sub_comment"), - 'can_endorse': check_permissions_by_view(user, course_id, content, "endorse_comment") if content['type'] == 'comment' else False, - 'can_delete': check_permissions_by_view(user, course_id, content, "delete_thread" if content['type'] == 'thread' else "delete_comment"), - 'can_openclose': check_permissions_by_view(user, course_id, content, "openclose_thread") if content['type'] == 'thread' else False, - 'can_vote': check_permissions_by_view(user, course_id, content, "vote_for_thread" if content['type'] == 'thread' else "vote_for_comment"), - }, + 'ability': get_ability(course_id, content, user), } def get_annotated_content_infos(course_id, thread, user, user_info): diff --git a/lms/static/coffee/src/discussion/content.coffee b/lms/static/coffee/src/discussion/content.coffee index 8ae22ccf73..d94f79ac25 100644 --- a/lms/static/coffee/src/discussion/content.coffee +++ b/lms/static/coffee/src/discussion/content.coffee @@ -90,7 +90,9 @@ if Backbone? ability: (ability) -> for action, elemSelector of @model.actions if not ability[action] - @$(elemSelector).parent().remove() + @$(elemSelector).parent().hide() + else + @$(elemSelector).parent().show() $discussionContent: -> @_discussionContent ||= @$el.children(".discussion-content") @@ -271,6 +273,7 @@ if Backbone? data: data success: (response, textStatus) => @model.set('closed', not closed) + @model.set('ability', response.ability) edit: (event) -> @$(".discussion-content-wrapper").hide()