Browse Source

Reported posts list modal

Rafał Pitoń 10 years ago
parent
commit
75a4d73e29

+ 2 - 2
misago/templates/misago/thread/replies.html

@@ -73,10 +73,10 @@
       {% endif %}
 
       {% if thread.acl.can_see_reports and thread.has_reported_posts %}
-      <a href="{{ thread.get_moderated_url }}" class="btn btn-default btn-show-reported">
+      <button type="button" class="btn btn-default btn-show-reported">
         <span class="fa fa-exclamation-triangle fa-fw fa-lg"></span>
         {% trans "Reported posts" %}
-      </a>
+      </button>
       {% endif %}
       {% endblock thread-nav %}
 

+ 14 - 3
misago/templates/misago/threads/base.html

@@ -93,12 +93,14 @@
 
               <ul class="list-unstyled thread-flags">
                 {% block thread-flags %}
-                {% if thread.has_open_reports %}
+                {% if thread.has_open_reports and thread.forum_id in user.acl.can_see_reports %}
                 <li class="tooltip-top" title="{% trans "Open reports" %}">
+                  <button type="button" class="btn-show-reported" data-reported-url="{{ thread.get_reported_url }}">
                   <span class="fa fa-exclamation-triangle fa-fw fa-lg"></span>
+                  </button>
                 </li>
                 {% endif %}
-                {% if thread.has_moderated_posts and not thread.is_moderated and thread.forum_id in user.acl.moderated_forums %}
+                {% if thread.has_moderated_posts and not thread.is_moderated and thread.forum_id in user.acl.can_review_moderated_content %}
                 <li class="tooltip-top" title="{% trans "Moderated posts" %}">
                   <button type="button" class="btn-show-moderated" data-moderated-url="{{ thread.get_moderated_url }}">
                     <span class="fa fa-question-circle fa-fw fa-lg"></span>
@@ -159,7 +161,16 @@
 
 {% block javascripts %}
 {{ block.super }}
-{% if user.acl.moderated_forums %}
+{% if user.acl.can_see_reports %}
+<script lang="JavaScript">
+  $(function() {
+    $('.btn-show-reported').click(function() {
+      Misago.Modal.get($(this).data('reported-url'));
+    });
+  });
+</script>
+{% endif %}
+{% if user.acl.can_review_moderated_content %}
 <script lang="JavaScript">
   $(function() {
     $('.btn-show-moderated').click(function() {

+ 4 - 2
misago/templates/misago/user_nav.html

@@ -56,13 +56,15 @@
 </ul>
 
 <ul class="nav navbar-nav navbar-nav-primary navbar-right">
+  {% if user.acl.can_see_reports %}
   <li>
-    <a href="#" class="tooltip-bottom" title="{% trans "Unresolved reports" %}">
+    <a href="#" class="tooltip-bottom" title="{% trans "Reported content" %}">
       <span class="fa fa-exclamation-triangle fa-fw"></span>
       <span class="badge">57</span>
     </a>
   </li>
-  {% if user.acl.moderated_forums %}
+  {% endif %}
+  {% if user.acl.can_review_moderated_content %}
   <li>
     <a href="{% url 'misago:moderated_content' %}" class="tooltip-bottom" data-misago-tooltip="moderated_content.message" {% if user.moderated_content %}
         title="{% blocktrans with moderated=user.moderated_content count counter=user.moderated_content %}{{ moderated }} item in moderation{% plural %}{{ moderated }} items in moderation{% endblocktrans %}"

+ 1 - 1
misago/threads/middleware.py

@@ -10,7 +10,7 @@ from misago.threads.counts import (ModeratedCount, NewThreadsCount,
 class UnreadThreadsCountMiddleware(object):
     def process_request(self, request):
         if request.user.is_authenticated():
-            if request.user.acl['moderated_forums']:
+            if request.user.acl['can_review_moderated_content']:
                 request.user.moderated_content = ModeratedCount(
                     request.user, request.session)
             request.user.new_threads = NewThreadsCount(

+ 1 - 1
misago/threads/permissions/privatethreads.py

@@ -90,7 +90,7 @@ def build_acl(acl, roles, key_name):
     private_forum = Forum.objects.private_threads()
 
     if new_acl['can_moderate_private_threads']:
-        new_acl['moderated_forums'].append(private_forum.pk)
+        new_acl['can_review_moderated_content'].append(private_forum.pk)
 
     forum_acl = {
         'can_see': 1,

+ 5 - 2
misago/threads/permissions/threads.py

@@ -158,7 +158,8 @@ def change_permissions_form(role):
 ACL Builder
 """
 def build_acl(acl, roles, key_name):
-    acl['moderated_forums'] = []
+    acl['can_review_moderated_content'] = []
+    acl['can_see_reports'] = []
     forums_roles = get_forums_roles(roles)
 
     for forum in Forum.objects.all_forums():
@@ -167,7 +168,9 @@ def build_acl(acl, roles, key_name):
             acl['forums'][forum.pk] = build_forum_acl(
                 forum_acl, forum, forums_roles, key_name)
             if acl['forums'][forum.pk]['can_review_moderated_content']:
-                acl['moderated_forums'].append(forum.pk)
+                acl['can_review_moderated_content'].append(forum.pk)
+            if acl['forums'][forum.pk]['can_see_reports']:
+                acl['can_see_reports'].append(forum.pk)
     return acl
 
 

+ 14 - 2
misago/threads/tests/test_gotolists_views.py

@@ -110,10 +110,22 @@ class GotoListsViewsTests(AuthenticatedUserTestCase):
         self.assertIn("There are no posts to display on this list.",
                       response.content)
 
+        # post 10 posts with closed reports
+        [reply_thread(self.thread, has_reports=True) for i in xrange(10)]
+
+        # assert that posts don't show
+        self.override_acl({'can_see_reports': True})
+        response = self.client.get(self.thread.get_reported_url(),
+                                   **self.ajax_header)
+        self.assertEqual(response.status_code, 200)
+        self.assertIn("0 reported posts", response.content)
+        self.assertIn("There are no posts to display on this list.",
+                      response.content)
+
         # post 10 reported posts
         posts = []
         for i in xrange(10):
-            posts.append(reply_thread(self.thread, has_reports=True))
+            posts.append(reply_thread(self.thread, has_open_reports=True))
 
         # assert that posts show
         self.override_acl({'can_see_reports': True})
@@ -130,7 +142,7 @@ class GotoListsViewsTests(AuthenticatedUserTestCase):
         # overflow list via posting extra 20 reported posts
         posts = []
         for i in xrange(20):
-            posts.append(reply_thread(self.thread, has_reports=True))
+            posts.append(reply_thread(self.thread, has_open_reports=True))
 
         # assert that posts don't show
         self.override_acl({'can_see_reports': True})

+ 1 - 1
misago/threads/tests/test_moderatedcontent_view.py

@@ -21,7 +21,7 @@ class AuthenticatedTests(AuthenticatedUserTestCase):
 
         for forum in Forum.objects.all():
             forums_acl['visible_forums'].append(forum.pk)
-            forums_acl['moderated_forums'].append(forum.pk)
+            forums_acl['can_review_moderated_content'].append(forum.pk)
             forums_acl['forums'][forum.pk] = new_acl
 
         override_acl(self.user, forums_acl)

+ 2 - 1
misago/threads/testutils.py

@@ -52,7 +52,7 @@ def post_thread(forum, title='Test thread', poster='Tester', is_pinned=False,
 
 def reply_thread(thread, poster="Tester", message='I am test message',
                  is_moderated=False, is_hidden=False, has_reports=False,
-                 posted_on=None, poster_ip='127.0.0.1'):
+                 has_open_reports=False,posted_on=None, poster_ip='127.0.0.1'):
     posted_on = posted_on or thread.last_post_on + timedelta(minutes=5)
 
     kwargs = {
@@ -67,6 +67,7 @@ def reply_thread(thread, poster="Tester", message='I am test message',
         'is_moderated': is_moderated,
         'is_hidden': is_hidden,
         'has_reports': has_reports,
+        'has_open_reports': has_open_reports,
     }
 
     try:

+ 1 - 1
misago/threads/views/generic/gotopostslist.py

@@ -56,4 +56,4 @@ class ReportedPostsListView(ModeratedPostsListView):
             raise PermissionDenied(message)
 
     def filter_posts_queryset(self, queryset):
-        return queryset.filter(has_reports=True)
+        return queryset.filter(has_open_reports=True)

+ 2 - 2
misago/threads/views/moderatedcontent.py

@@ -36,7 +36,7 @@ class ModeratedContentView(ThreadsView):
                         "moderated content.")
             raise PermissionDenied(message)
 
-        if not request.user.acl['moderated_forums']:
+        if not request.user.acl['can_review_moderated_content']:
             message = _("You can't review moderated content.")
             raise PermissionDenied(message)
 
@@ -47,7 +47,7 @@ class ModeratedContentView(ThreadsView):
 @uiview("moderated_content")
 @deny_guests
 def event_sender(request, resolver_match):
-    if request.user.acl['moderated_forums']:
+    if request.user.acl['can_review_moderated_content']:
         moderated_count = int(request.user.moderated_content)
         if moderated_count:
             message = ungettext("%(moderated)s item in moderation",