From deb3888a84bd9341bc12d0019fddf8b1e2d90229 Mon Sep 17 00:00:00 2001 From: Kevin Chugh Date: Thu, 6 Dec 2012 14:13:54 -0500 Subject: [PATCH] thread response flagging --- lms/djangoapps/django_comment_client/base/urls.py | 4 ++-- .../django_comment_client/base/views.py | 4 ++-- lms/lib/comment_client/comment.py | 14 +++++++------- lms/static/coffee/src/discussion/utils.coffee | 2 ++ .../views/discussion_thread_show_view.coffee | 14 ++------------ .../views/response_comment_show_view.coffee | 13 ++++++++++++- .../views/thread_response_show_view.coffee | 15 +++++++++++++++ 7 files changed, 42 insertions(+), 24 deletions(-) diff --git a/lms/djangoapps/django_comment_client/base/urls.py b/lms/djangoapps/django_comment_client/base/urls.py index 1a0498b1ce..d54b6ad0c9 100644 --- a/lms/djangoapps/django_comment_client/base/urls.py +++ b/lms/djangoapps/django_comment_client/base/urls.py @@ -25,8 +25,8 @@ urlpatterns = patterns('django_comment_client.base.views', url(r'comments/(?P[\w\-]+)/upvote$', 'vote_for_comment', {'value': 'up'}, name='upvote_comment'), url(r'comments/(?P[\w\-]+)/downvote$', 'vote_for_comment', {'value': 'down'}, name='downvote_comment'), url(r'comments/(?P[\w\-]+)/unvote$', 'undo_vote_for_comment', name='undo_vote_for_comment'), - url(r'threads/(?P[\w\-]+)/flagAbuse$', 'flag_abuse_for_comment', name='flag_abuse_for_comment'), - url(r'threads/(?P[\w\-]+)/unFlagAbuse$', 'un_flag_abuse_for_comment', name='un_flag_abuse_for_comment'), + url(r'comments/(?P[\w\-]+)/flagAbuse$', 'flag_abuse_for_comment', name='flag_abuse_for_comment'), + url(r'comments/(?P[\w\-]+)/unFlagAbuse$', 'un_flag_abuse_for_comment', name='un_flag_abuse_for_comment'), url(r'(?P[\w\-]+)/threads/create$', 'create_thread', name='create_thread'), # TODO should we search within the board? diff --git a/lms/djangoapps/django_comment_client/base/views.py b/lms/djangoapps/django_comment_client/base/views.py index 2582a78169..fc5d5376c1 100644 --- a/lms/djangoapps/django_comment_client/base/views.py +++ b/lms/djangoapps/django_comment_client/base/views.py @@ -252,13 +252,13 @@ def un_flag_abuse_for_thread(request, course_id, thread_id): def flag_abuse_for_comment(request, course_id, comment_id): user = cc.User.from_django_user(request.user) - comment = cc.Comment.find(thread_id) + comment = cc.Comment.find(comment_id) comment.flagAbuse(user,comment) return JsonResponse(utils.safe_content(comment.to_dict())) def un_flag_abuse_for_comment(request, course_id, comment_id): user = cc.User.from_django_user(request.user) - comment = cc.Comment.find(thread_id) + comment = cc.Comment.find(comment_id) comment.unFlagAbuse(user,comment) return JsonResponse(utils.safe_content(comment.to_dict())) diff --git a/lms/lib/comment_client/comment.py b/lms/lib/comment_client/comment.py index ed0cfcd8c5..923714bf75 100644 --- a/lms/lib/comment_client/comment.py +++ b/lms/lib/comment_client/comment.py @@ -41,22 +41,22 @@ class Comment(models.Model): else: return super(Comment, cls).url(action, params) - def flagAbuse(self, user, voteable, value): + def flagAbuse(self, user, voteable): if voteable.type == 'thread': url = _url_for_flag_abuse_thread(voteable.id) elif voteable.type == 'comment': - url = _url_for_flag_comment(voteable.id) + url = _url_for_flag_abuse_comment(voteable.id) else: raise CommentClientError("Can only flag/unflag threads or comments") params = {'user_id': user.id} request = perform_request('put', url, params) voteable.update_attributes(request) - def unFlagAbuse(self, user, voteable, value): + def unFlagAbuse(self, user, voteable): if voteable.type == 'thread': url = _url_for_unflag_abuse_thread(voteable.id) elif voteable.type == 'comment': - url = _url_for_unflag_comment(voteable.id) + url = _url_for_unflag_abuse_comment(voteable.id) else: raise CommentClientError("Can flag/unflag for threads or comments") params = {'user_id': user.id} @@ -70,7 +70,7 @@ def _url_for_comment(comment_id): return "{prefix}/comments/{comment_id}".format(prefix=settings.PREFIX, comment_id=comment_id) def _url_for_flag_abuse_comment(comment_id): - return "{prefix}/threads/{comment_id}/abuse_flags".format(prefix=settings.PREFIX, thread_id=thread_id) + return "{prefix}/comments/{comment_id}/abuse_flags".format(prefix=settings.PREFIX, comment_id=comment_id) -def _url_for_unflag_abuse_thread(comment_id): - return "{prefix}/threads/{comment_id}/abuse_unflags".format(prefix=settings.PREFIX, thread_id=thread_id) +def _url_for_unflag_abuse_comment(comment_id): + return "{prefix}/comments/{comment_id}/abuse_unflags".format(prefix=settings.PREFIX, comment_id=comment_id) diff --git a/lms/static/coffee/src/discussion/utils.coffee b/lms/static/coffee/src/discussion/utils.coffee index 4a4d9be648..28e985bf1d 100644 --- a/lms/static/coffee/src/discussion/utils.coffee +++ b/lms/static/coffee/src/discussion/utils.coffee @@ -50,6 +50,8 @@ class @DiscussionUtil delete_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/delete" flagAbuse_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/flagAbuse" unFlagAbuse_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/unFlagAbuse" + flagAbuse_comment : "/courses/#{$$course_id}/discussion/comments/#{param}/flagAbuse" + unFlagAbuse_comment : "/courses/#{$$course_id}/discussion/comments/#{param}/unFlagAbuse" upvote_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/upvote" downvote_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/downvote" undo_vote_for_thread : "/courses/#{$$course_id}/discussion/threads/#{param}/unvote" diff --git a/lms/static/coffee/src/discussion/views/discussion_thread_show_view.coffee b/lms/static/coffee/src/discussion/views/discussion_thread_show_view.coffee index e33a7d4942..69298ec684 100644 --- a/lms/static/coffee/src/discussion/views/discussion_thread_show_view.coffee +++ b/lms/static/coffee/src/discussion/views/discussion_thread_show_view.coffee @@ -72,17 +72,7 @@ if Backbone? toggleFollowing: (event) -> $elem = $(event.target) - url = nullunFollow: -> - url = @model.urlFor("unFlagAbuse") - DiscussionUtil.safeAjax - $elem: @$(".discussion-flag-abuse") - url: url - type: "POST" - success: (response, textStatus) => - if textStatus == 'success' - temp_array = _.clone(@model.get('abuse_flaggers')); - temp_array.pop(window.user.id) - @model.set('abuse_flaggers', temp_array) + url = null if not @model.get('subscribed') @model.follow() url = @model.urlFor("follow") @@ -92,7 +82,7 @@ if Backbone? DiscussionUtil.safeAjax $elem: $elem url: url - type: "POST" + type: "POST" vote: -> window.user.vote(@model) diff --git a/lms/static/coffee/src/discussion/views/response_comment_show_view.coffee b/lms/static/coffee/src/discussion/views/response_comment_show_view.coffee index 7e0a628c4f..6fc2d4b5f5 100644 --- a/lms/static/coffee/src/discussion/views/response_comment_show_view.coffee +++ b/lms/static/coffee/src/discussion/views/response_comment_show_view.coffee @@ -1,5 +1,8 @@ if Backbone? class @ResponseCommentShowView extends DiscussionContentView + + events: + "click .discussion-flag-abuse": "toggleFlagAbuse" tagName: "li" @@ -36,4 +39,12 @@ if Backbone? @$el.find("a.profile-link").after('Community  TA') - + renderFlagged: => + if window.user.id in @model.get("abuse_flaggers") + @$("[data-role=thread-flag]").addClass("flagged") + @$("[data-role=thread-flag]").removeClass("notflagged") + else + @$("[data-role=thread-flag]").removeClass("flagged") + @$("[data-role=thread-flag]").addClass("notflagged") + + diff --git a/lms/static/coffee/src/discussion/views/thread_response_show_view.coffee b/lms/static/coffee/src/discussion/views/thread_response_show_view.coffee index 4049bdeaa6..c38ee2300c 100644 --- a/lms/static/coffee/src/discussion/views/thread_response_show_view.coffee +++ b/lms/static/coffee/src/discussion/views/thread_response_show_view.coffee @@ -24,6 +24,7 @@ if Backbone? if window.user.voted(@model) @$(".vote-btn").addClass("is-cast") @renderAttrs() + @renderFlagged() @$el.find(".posted-details").timeago() @convertMath() @markAsStaff() @@ -94,3 +95,17 @@ if Backbone? url: url data: data type: "POST" + + + renderFlagged: => + if window.user.id in @model.get("abuse_flaggers") + @$("[data-role=thread-flag]").addClass("flagged") + @$("[data-role=thread-flag]").removeClass("notflagged") + @$(".discussion-flag-abuse .flag-label").html("Misuse Reported") + else + @$("[data-role=thread-flag]").removeClass("flagged") + @$("[data-role=thread-flag]").addClass("notflagged") + @$(".discussion-flag-abuse .flag-label").html("Report Misuse") + + updateModelDetails: => + @renderFlagged() \ No newline at end of file