show indicators that a review is flagged

This commit is contained in:
Jeff Balogh 2010-06-28 18:05:26 -07:00
Родитель 371c1d26d7
Коммит 8e745c233b
3 изменённых файлов: 27 добавлений и 8 удалений

Просмотреть файл

@ -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 %}
<div class="review article {% if is_reply %}reply{% endif %}" id="review-{{ review.id }}">
{% if flags %}
{% set is_flagged = flags[review.id] %}
{% endif %}
<div class="review article {% if is_reply %}reply{% endif %}
{% if is_flagged %}flagged{% endif %}"
id="review-{{ review.id }}">
<h5>{{ review.title }}</h5>
{% if not is_reply %}{{ review.rating|stars }}{% endif %}
<div class="reviewed-on">
@ -37,8 +42,12 @@
{% endif %}
{% if request.user.is_authenticated() %}
<ul>
<li><a class="flag-review" href="{{ url('reviews.flag', addon.id, review.id) }}">
{{ _('Report this review') }}</a></li>
{% if is_flagged %}
<li>{{ _('Flagged for review') }}</li>
{% else %}
<li><a class="flag-review" href="{{ url('reviews.flag', addon.id, review.id) }}">
{{ _('Report this review') }}</a></li>
{% endif %}
{% if perms.is_author or perms.is_admin %}
<li><a href="#TODO">{{ _('Reply to review') }}</a></li>
{% endif %}

Просмотреть файл

@ -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

Просмотреть файл

@ -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'
});
};