From 8e745c233b0fed56a81c988af0638edd8a589479 Mon Sep 17 00:00:00 2001 From: Jeff Balogh Date: Mon, 28 Jun 2010 18:05:26 -0700 Subject: [PATCH] show indicators that a review is flagged --- apps/reviews/templates/reviews/review.html | 15 ++++++++++++--- apps/reviews/views.py | 7 +++++++ media/js/zamboni/reviews.js | 13 ++++++++----- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/apps/reviews/templates/reviews/review.html b/apps/reviews/templates/reviews/review.html index 7d651ebcc9..b6cce6904b 100644 --- a/apps/reviews/templates/reviews/review.html +++ b/apps/reviews/templates/reviews/review.html @@ -1,7 +1,12 @@ {% set outdated = (review.version_id and review.version_id != addon._current_version_id) %} {% set is_reply = review.reply_to_id is not none %} -
+{% if flags %} + {% set is_flagged = flags[review.id] %} +{% endif %} +
{{ review.title }}
{% if not is_reply %}{{ review.rating|stars }}{% endif %}
@@ -37,8 +42,12 @@ {% endif %} {% if request.user.is_authenticated() %}
    -
  • - {{ _('Report this review') }}
  • + {% if is_flagged %} +
  • {{ _('Flagged for review') }}
  • + {% else %} +
  • + {{ _('Report this review') }}
  • + {% endif %} {% if perms.is_author or perms.is_admin %}
  • {{ _('Reply to review') }}
  • {% endif %} diff --git a/apps/reviews/views.py b/apps/reviews/views.py index f1026a79f6..a046dded03 100644 --- a/apps/reviews/views.py +++ b/apps/reviews/views.py @@ -47,6 +47,7 @@ def review_list(request, addon_id, review_id=None, user_id=None): 'can_delete': acl.action_allowed(request, 'Editors', 'DeleteReview'), } + ctx['flags'] = get_flags(request, reviews.object_list) return jingo.render(request, 'reviews/review_list.html', ctx) @@ -56,6 +57,12 @@ def get_replies(reviews): return dict((r.reply_to_id, r) for r in qs) +def get_flags(request, reviews): + reviews = [r.id for r in reviews] + qs = ReviewFlag.objects.filter(review__in=reviews, user=request.user.id) + return dict((r.review_id, r) for r in qs) + + @post_required @login_required # TODO: return a 401? @json_view diff --git a/media/js/zamboni/reviews.js b/media/js/zamboni/reviews.js index e66e159cce..e3e0892555 100644 --- a/media/js/zamboni/reviews.js +++ b/media/js/zamboni/reviews.js @@ -16,21 +16,24 @@ $(document).ready(function() { $(this).find('form').submit(function(e){ e.preventDefault(); var note = parent.find('#id_note').val(); - addFlag(url, 'other', note); + addFlag(parent, url, 'other', note); }); } else { - addFlag(url, flag, ''); + addFlag(parent, url, flag, ''); } } }); }); - var addFlag = function(url, flag, note) { + var addFlag = function(el, url, flag, note) { $.ajax({type: 'POST', url: url, data: {flag: flag, note: note}, - success: function(){ alert('success'); }, - error: function(){ alert('error'); }, + success: function(){ + el.find('.flag-review') + .replaceWith(gettext('Flagged for review')); + }, + error: function(){ }, dataType: 'json' }); };