show indicators that a review is flagged
This commit is contained in:
Родитель
371c1d26d7
Коммит
8e745c233b
|
@ -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'
|
||||
});
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче