Browse Source

Reports templates done. #35

Ralfp 12 years ago
parent
commit
4e73be8850

+ 30 - 0
misago/apps/reports/forms.py

@@ -0,0 +1,30 @@
+from django import forms
+from django.utils.translation import ugettext_lazy as _
+from misago.apps.threadtype.posting.forms import (EditThreadForm as EditThreadBaseForm,
+                                                  NewReplyForm as NewReplyBaseForm,
+                                                  EditReplyForm as EditReplyBaseForm)
+from misago.forms import Form
+
+class ReportFormMixin(object):
+    def type_fields(self):
+        self.thread.original_weight = self.thread.weight
+
+        thread_weight = []
+        if self.thread.weight == 2:
+            thread_weight.append((2, _("Unresolved")))
+        thread_weight.append((1, _("Resolved")))
+        thread_weight.append((0, _("Bogus")))
+
+        self.fields['thread_weight'].choices = thread_weight
+
+
+class EditThreadForm(ReportFormMixin, EditThreadBaseForm):
+    pass
+
+
+class NewReplyForm(ReportFormMixin, NewReplyBaseForm):
+    pass
+
+
+class EditReplyForm(ReportFormMixin, EditReplyBaseForm):
+    pass

+ 5 - 6
misago/apps/reports/list.py

@@ -38,9 +38,11 @@ class ThreadsListView(ThreadsListBaseView, ThreadsListModeration, TypeMixin):
         tracker_forum = ThreadsTracker(self.request, self.forum)
         tracker_forum = ThreadsTracker(self.request, self.forum)
         unresolved_count = 0
         unresolved_count = 0
         for thread in list(chain(qs_announcements, qs_threads[self.pagination['start']:self.pagination['stop']])):
         for thread in list(chain(qs_announcements, qs_threads[self.pagination['start']:self.pagination['stop']])):
+            thread.original_weight = thread.weight
             if thread.weight == 2:
             if thread.weight == 2:
                 unresolved_count += 1
                 unresolved_count += 1
             thread.is_read = tracker_forum.is_read(thread)
             thread.is_read = tracker_forum.is_read(thread)
+            thread.report_forum = Forum.objects.forums_tree.get(thread.report_for.forum_id)
             self.threads.append(thread)
             self.threads.append(thread)
 
 
         if int(self.request.monitor['reported_posts']) != unresolved_count:
         if int(self.request.monitor['reported_posts']) != unresolved_count:
@@ -64,18 +66,15 @@ class ThreadsListView(ThreadsListBaseView, ThreadsListModeration, TypeMixin):
     def mass_resolve(self, ids):
     def mass_resolve(self, ids):
         reported_posts = []
         reported_posts = []
         reported_threads = []
         reported_threads = []
-        second_pass = []
         for thread in self.threads:
         for thread in self.threads:
             if thread.pk in ids:
             if thread.pk in ids:
-                 reported_posts.append(thread.report_for.pk)
-                 reported_threads.append(thread.report_for.thread_id)
-                 if thread.weight == 2:
+                if thread.original_weight == 2:
+                    reported_posts.append(thread.report_for.pk)
+                    reported_threads.append(thread.report_for.thread_id)
                     second_pass.append(thread.pk)
                     second_pass.append(thread.pk)
         if reported_threads:
         if reported_threads:
             Thread.objects.filter(id__in=reported_threads).update(replies_reported=F('replies_reported') - 1)
             Thread.objects.filter(id__in=reported_threads).update(replies_reported=F('replies_reported') - 1)
             Post.objects.filter(id__in=reported_posts).update(reported=False)
             Post.objects.filter(id__in=reported_posts).update(reported=False)
-        if second_pass:
-            Thread.objects.filter(id__in=second_pass).update(weight=1)
 
 
     def action_sticky(self, ids):
     def action_sticky(self, ids):
         if self._action_sticky(ids):
         if self._action_sticky(ids):

+ 9 - 2
misago/apps/reports/posting.py

@@ -1,24 +1,31 @@
 from django.core.urlresolvers import reverse
 from django.core.urlresolvers import reverse
 from django.shortcuts import redirect
 from django.shortcuts import redirect
 from django.utils.translation import ugettext as _
 from django.utils.translation import ugettext as _
-from misago.apps.threadtype.posting import NewThreadBaseView, EditThreadBaseView, NewReplyBaseView, EditReplyBaseView
+from misago.apps.threadtype.posting import EditThreadBaseView, NewReplyBaseView, EditReplyBaseView
 from misago.messages import Message
 from misago.messages import Message
 from misago.models import Forum, Thread, Post
 from misago.models import Forum, Thread, Post
 from misago.apps.reports.mixins import TypeMixin
 from misago.apps.reports.mixins import TypeMixin
+from misago.apps.reports.forms import EditThreadForm, NewReplyForm, EditReplyForm
 
 
 class EditThreadView(EditThreadBaseView, TypeMixin):
 class EditThreadView(EditThreadBaseView, TypeMixin):
+    form_type = EditThreadForm
+
     def response(self):
     def response(self):
         self.request.messages.set_flash(Message(_("Report has been edited.")), 'success', 'threads_%s' % self.post.pk)
         self.request.messages.set_flash(Message(_("Report has been edited.")), 'success', 'threads_%s' % self.post.pk)
-        return redirect(reverse('thread', kwargs={'thread': self.thread.pk, 'slug': self.thread.slug}) + ('#post-%s' % self.post.pk))
+        return redirect(reverse('report', kwargs={'thread': self.thread.pk, 'slug': self.thread.slug}) + ('#post-%s' % self.post.pk))
 
 
 
 
 class NewReplyView(NewReplyBaseView, TypeMixin):
 class NewReplyView(NewReplyBaseView, TypeMixin):
+    form_type = NewReplyForm
+
     def response(self):
     def response(self):
         self.request.messages.set_flash(Message(_("Your reply has been posted.")), 'success', 'threads_%s' % self.post.pk)
         self.request.messages.set_flash(Message(_("Your reply has been posted.")), 'success', 'threads_%s' % self.post.pk)
         return self.redirect_to_post(self.post)
         return self.redirect_to_post(self.post)
 
 
 
 
 class EditReplyView(EditReplyBaseView, TypeMixin):
 class EditReplyView(EditReplyBaseView, TypeMixin):
+    form_type = EditReplyForm
+    
     def response(self):
     def response(self):
         self.request.messages.set_flash(Message(_("Your reply has been changed.")), 'success', 'threads_%s' % self.post.pk)
         self.request.messages.set_flash(Message(_("Your reply has been changed.")), 'success', 'threads_%s' % self.post.pk)
         return self.redirect_to_post(self.post)
         return self.redirect_to_post(self.post)

+ 2 - 10
misago/apps/threadtype/jumps.py

@@ -272,19 +272,11 @@ class ReportPostBaseView(JumpView):
             if not report:
             if not report:
                 # File up new report
                 # File up new report
                 now = timezone.now()
                 now = timezone.now()
-                report_name = _('#%(post)s by %(author)s in "%(thread)s"')
-                report_name = report_name % {
-                                             'post': self.post.pk,
-                                             'thread': self.thread.name,
-                                             'author': self.post.user_name
-                                            }
-                report_name = short_string(report_name, request.settings['thread_name_max'])
 
 
                 reason_post = _('''
                 reason_post = _('''
 Member @%(reporter)s has reported following post by @%(reported)s:
 Member @%(reporter)s has reported following post by @%(reported)s:
 
 
 %(quote)s
 %(quote)s
-
 **Post link:** <%(post)s>
 **Post link:** <%(post)s>
 ''')
 ''')
 
 
@@ -301,8 +293,8 @@ Member @%(reporter)s has reported following post by @%(reported)s:
                 report = Thread.objects.create(
                 report = Thread.objects.create(
                                                forum=reports,
                                                forum=reports,
                                                weight=2,
                                                weight=2,
-                                               name=report_name,
-                                               slug=slugify(report_name),
+                                               name=self.thread.name,
+                                               slug=slugify(self.thread.slug),
                                                start=now,
                                                start=now,
                                                start_poster=request.user,
                                                start_poster=request.user,
                                                start_poster_name=request.user.username,
                                                start_poster_name=request.user.username,

+ 8 - 0
misago/models/forummodel.py

@@ -4,6 +4,7 @@ from mptt.managers import TreeManager
 from mptt.models import MPTTModel, TreeForeignKey
 from mptt.models import MPTTModel, TreeForeignKey
 from django.conf import settings
 from django.conf import settings
 from django.core.cache import cache
 from django.core.cache import cache
+from django.core.urlresolvers import reverse
 from django.db import models
 from django.db import models
 from django.utils.translation import ugettext_lazy as _
 from django.utils.translation import ugettext_lazy as _
 from misago.signals import delete_forum_content, move_forum_content, rename_forum, rename_user
 from misago.signals import delete_forum_content, move_forum_content, rename_forum, rename_user
@@ -191,6 +192,13 @@ class Forum(MPTTModel):
            return unicode(_('Root Category'))
            return unicode(_('Root Category'))
         return unicode(self.name)
         return unicode(self.name)
 
 
+    def forum_url(self):
+        if self.special == 'private_threads':
+           reverse('private-threads')
+        if self.special == 'reports':
+           reverse('reports')
+        return reverse('forum', kwargs={'forum': self.pk, 'slug': self.slug})
+
     def set_description(self, description):
     def set_description(self, description):
         self.description = description.strip()
         self.description = description.strip()
         self.description_preparsed = ''
         self.description_preparsed = ''

+ 8 - 0
static/cranefly/css/cranefly.css

@@ -1191,6 +1191,14 @@ a.btn-link:hover,a.btn-link:active,a.btn-link:focus{opacity:0.9;filter:alpha(opa
 .post-diff .post-diff-details table td.added{background-color:#dff1df;color:#285d28;font-weight:bold;}.post-diff .post-diff-details table td.added.even{background-color:#cdeacd;}
 .post-diff .post-diff-details table td.added{background-color:#dff1df;color:#285d28;font-weight:bold;}.post-diff .post-diff-details table td.added.even{background-color:#cdeacd;}
 .post-diff .post-diff-details table td.removed{background-color:#faeae8;color:#7c261b;font-weight:bold;}.post-diff .post-diff-details table td.removed.even{background-color:#f5d7d4;}
 .post-diff .post-diff-details table td.removed{background-color:#faeae8;color:#7c261b;font-weight:bold;}.post-diff .post-diff-details table td.removed.even{background-color:#f5d7d4;}
 .post-diff .post-diff-details table td.stag{color:#555555;}
 .post-diff .post-diff-details table td.stag{color:#555555;}
+.report-view .report-wrapper{background-color:#eeeeee;background-image:-webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.25, rgba(255, 255, 255, 0.2)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.2)), color-stop(0.75, rgba(255, 255, 255, 0.2)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent);-webkit-background-size:10px 10px;-moz-background-size:10px 10px;background-size:10px 10px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;padding:8px;margin-bottom:8px;}.report-view .report-wrapper .post-body{margin-bottom:0px;}
+.reports-list .thread-label{overflow:visible;}.reports-list .thread-label .report-label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;float:right;padding:3px 8px;position:relative;right:-32px;bottom:2px;color:#ffffff;font-weight:bold;}.reports-list .thread-label .report-label i{background-image:url("../img/glyphicons-halflings-white.png");}
+.reports-list .thread-label .report-label.report-open{background-color:#f89406;text-shadow:0px 1px 0px #945904;}
+.reports-list .thread-label .report-label.report-resolved{background-color:#46a546;text-shadow:0px 1px 0px #285d28;}
+.reports-list .thread-label .report-label.report-bogus{background-color:#555555;text-shadow:0px 1px 0px #222222;}
+.reports-list .thread-name .report-id{color:#999999 !important;}
+.reports-list .thread-name,.reports-list .thread-details{margin-left:0px !important;}
+.reports-list .thread-icon{display:none !important;float:none;}
 .index-rank-team ul li .label{background-color:#cf402e;color:#ffffff;text-shadow:0px 1px 0px #3d130e;}
 .index-rank-team ul li .label{background-color:#cf402e;color:#ffffff;text-shadow:0px 1px 0px #3d130e;}
 .post-label-team{background-color:#cf402e;}
 .post-label-team{background-color:#cf402e;}
 .index-rank-mvp ul li .label{background-color:#049cdb;color:#ffffff;text-shadow:0px 1px 0px #011f2c;}
 .index-rank-mvp ul li .label{background-color:#049cdb;color:#ffffff;text-shadow:0px 1px 0px #011f2c;}

+ 2 - 0
static/cranefly/css/cranefly.less

@@ -89,6 +89,8 @@
 @import "cranefly/thread.less";
 @import "cranefly/thread.less";
 @import "cranefly/karmas.less";
 @import "cranefly/karmas.less";
 @import "cranefly/changelog.less";
 @import "cranefly/changelog.less";
+@import "cranefly/report.less";
+@import "cranefly/reports.less";
 
 
 // Keep ranks last for easy overrides!
 // Keep ranks last for easy overrides!
 @import "ranks.less";
 @import "ranks.less";

+ 38 - 0
static/cranefly/css/cranefly/report.less

@@ -0,0 +1,38 @@
+// Report view
+// ------------------------
+
+.report-view {
+  .report-wrapper {
+    background-color: @grayLighter;
+    background-image: -webkit-gradient(linear, 0 0, 100% 100%,
+                color-stop(.25, rgba(255, 255, 255, .2)), color-stop(.25, transparent),
+                color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .2)),
+                color-stop(.75, rgba(255, 255, 255, .2)), color-stop(.75, transparent),
+                to(transparent));
+    background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%,
+              transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%,
+              transparent 75%, transparent);
+    background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%,
+              transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%,
+              transparent 75%, transparent);
+    background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%,
+              transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%,
+              transparent 75%, transparent);
+    background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%,
+              transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%,
+              transparent 75%, transparent);
+    background-image: linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%,
+              transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%,
+              transparent 75%, transparent);
+    -webkit-background-size: 10px 10px;
+    -moz-background-size: 10px 10px;
+    background-size: 10px 10px;
+    .border-radius(6px);
+    padding: 8px;
+    margin-bottom: 8px;
+
+    .post-body {
+      margin-bottom: 0px;
+    }
+  }
+}

+ 54 - 0
static/cranefly/css/cranefly/reports.less

@@ -0,0 +1,54 @@
+// Reports list
+// ------------------------
+
+.reports-list {
+  .thread-label {
+    overflow: visible;
+
+    .report-label {
+      .border-radius(3px);
+      float: right;
+      padding: 3px 8px;
+      position: relative;
+      right: -32px;
+      bottom: 2px;
+
+      color: @white;
+      font-weight: bold;
+
+      i {
+        background-image: url("@{iconWhiteSpritePath}");
+      }
+
+      &.report-open {
+        background-color: @orange;
+        text-shadow: 0px 1px 0px darken(@orange, 20%);
+      }
+
+      &.report-resolved {
+        background-color: @green;
+        text-shadow: 0px 1px 0px darken(@green, 20%);
+      }
+
+      &.report-bogus {
+        background-color: @gray;
+        text-shadow: 0px 1px 0px darken(@gray, 20%);
+      }
+    }
+  }
+
+  .thread-name {
+    .report-id {
+      color: @grayLight !important;
+    }
+  }
+
+  .thread-name, .thread-details {
+    margin-left: 0px !important;
+  }
+
+  .thread-icon {
+    display: none !important;
+    float: none;
+  }
+}

+ 35 - 27
templates/cranefly/reports/list.html

@@ -31,13 +31,13 @@
     {{ pager() }}
     {{ pager() }}
   </div>
   </div>
 
 
-  <div class="forum-threads-list">
+  <div class="forum-threads-list reports-list">
     <div class="header">
     <div class="header">
       <div class="row-fluid">
       <div class="row-fluid">
-        <div class="span7">{% trans %}Report{% endtrans %}</div>
-        <div class="span5 thread-activity">
+        <div class="span6 offset2">{% trans %}Report{% endtrans %}</div>
+        <div class="span4 thread-activity">
           <div class="thread-replies">{% trans %}Activity{% endtrans %}</div>
           <div class="thread-replies">{% trans %}Activity{% endtrans %}</div>
-          {% if user.is_authenticated() and list_form %}
+          {% if list_form %}
           <div class="pull-right check-cell">
           <div class="pull-right check-cell">
             <label class="checkbox"><input type="checkbox" class="checkbox-master"></label>
             <label class="checkbox"><input type="checkbox" class="checkbox-master"></label>
           </div>
           </div>
@@ -48,40 +48,44 @@
     {% for thread in threads %}
     {% for thread in threads %}
     <div class="thread-row{% if not thread.is_read %} thread-new{% endif %}{% if loop.last %} thread-last{% endif %}">
     <div class="thread-row{% if not thread.is_read %} thread-new{% endif %}{% if loop.last %} thread-last{% endif %}">
       <div class="row-fluid">
       <div class="row-fluid">
-        <div class="span7">
-          {% if thread.is_read %}
-          <a href="{% url 'report_new' thread=thread.pk, slug=thread.slug %}" class="thread-icon thread-icon-last tooltip-top" title="{% trans %}Click to see last post{% endtrans %}"><i class="icon-asterisk"></i></a>
+        <div class="span2 thread-label">
+          {% if thread.weight == 2 %}
+          <span class="report-label report-open"><i class="icon-time"></i> {% trans %}Open{% endtrans %}</span>
+          {% elif thread.weight == 1 %}
+          <span class="report-label report-resolved"><i class="icon-ok"></i> {% trans %}Resolved{% endtrans %}</span>
           {% else %}
           {% else %}
-          <a href="{% url 'report_new' thread=thread.pk, slug=thread.slug %}" class="thread-icon thread-icon-new tooltip-top" title="{% trans %}Click to see first unread post{% endtrans %}"><i class="icon-fire"></i></a>
+          <span class="report-label report-bogus"><i class="icon-remove"></i> {% trans %}Bogus{% endtrans %}</span>
           {% endif %}
           {% endif %}
+        </div>
+        <div class="span6">
 
 
-          {{ macros.thread_flags(thread) }}
+          {% if thread.deleted %}
+          <ul class="unstyled thread-flags">
+            <li class="flag-deleted"><i class="icon-trash tooltip-top" title="{% trans %}This thread is deleted{% endtrans %}"></i></li>
+          </ul>
+          {% endif %}
           
           
-          <a href="{% url 'report' thread=thread.pk, slug=thread.slug %}" class="thread-name">{{ thread.name }}</a>
+          <a href="{% url 'report' thread=thread.pk, slug=thread.slug %}" class="thread-name"><span class="report-id">#892431</span> {{ thread.name }}</a>
           
           
+          {% if thread.is_read %}
+          <a href="{% url 'report_new' thread=thread.pk, slug=thread.slug %}" class="thread-icon thread-icon-last tooltip-top" title="{% trans %}Click to see last comment{% endtrans %}"><i class="icon-asterisk"></i></a>
+          {% else %}
+          <a href="{% url 'report_new' thread=thread.pk, slug=thread.slug %}" class="thread-icon thread-icon-new tooltip-top" title="{% trans %}Click to see first unread comment{% endtrans %}"><i class="icon-fire"></i></a>
+          {% endif %}
+
           <div class="thread-details">
           <div class="thread-details">
-            {% trans user=thread_starter(thread), start=thread.start|reldate|low %}by {{ user }}, {{ start }}{% endtrans %}
+            {% trans user=thread_starter(thread), start=thread.start|reldate|low, forum=report_forum(thread) %}Reported by {{ user }} {{ start }} in forum {{ forum }}{% endtrans %}
           </div>
           </div>
 
 
         </div>
         </div>
-        <div class="span5 thread-activity">
-
-          {% if settings.avatars_on_threads_list %}
-          <div class="thread-last-avatar">
-            {% if thread.last_poster_id %}
-            <a href="{% url 'user' user=thread.last_poster.pk, username=thread.last_poster.username_slug %}"><img src="{{ thread.last_poster.get_avatar(40) }}" alt=""></a>
-            {% else %}
-            <img src="{{ macros.avatar_guest(40) }}" alt="" class="user-avatar">
-            {% endif %}
-          </div>
-          {% endif %}
+        <div class="span4 thread-activity">
 
 
           <div class="thread-replies">
           <div class="thread-replies">
             <strong class="lead">{{ thread_reply(thread) }}, {{ thread.last|reldate|low }}</strong><br>
             <strong class="lead">{{ thread_reply(thread) }}, {{ thread.last|reldate|low }}</strong><br>
-            {{ replies(thread.replies) }}, <span{% if (thread.upvotes-thread.downvotes) > 0 %} class="text-success"{% elif (thread.upvotes-thread.downvotes) < 0 %} class="text-error"{% endif %}><strong>{% if (thread.upvotes-thread.downvotes) > 0 %}+{% elif (thread.upvotes-thread.downvotes) < 0 %}-{% endif %}</strong>{% trans rating=(thread.upvotes-thread.downvotes)|abs|intcomma %}{{ rating }} thread rating{% endtrans %}</span>
+            {{ replies(thread.replies) }}
           </div>
           </div>
 
 
-          {% if user.is_authenticated() and list_form %}
+          {% if list_form %}
           <label class="thread-select checkbox"><input form="threads_form" name="{{ list_form['list_items']['html_name'] }}" type="checkbox" class="checkbox-member" value="{{ thread.pk }}"{% if list_form['list_items']['has_value'] and ('' ~ thread.pk) in list_form['list_items']['value'] %} checked="checked"{% endif %}></label>
           <label class="thread-select checkbox"><input form="threads_form" name="{{ list_form['list_items']['html_name'] }}" type="checkbox" class="checkbox-member" value="{{ thread.pk }}"{% if list_form['list_items']['has_value'] and ('' ~ thread.pk) in list_form['list_items']['value'] %} checked="checked"{% endif %}></label>
           {% endif %}
           {% endif %}
         </div>
         </div>
@@ -89,11 +93,11 @@
     </div>
     </div>
     {% else %}
     {% else %}
     <div class="thread-row threads-list-empty">
     <div class="thread-row threads-list-empty">
-      {% trans %}There are no threads in this forum.{% endtrans %}
+      {% trans %}There are no reports currently. Whef!{% endtrans %}
     </div>
     </div>
     {% endfor %}
     {% endfor %}
 
 
-    {% if user.is_authenticated() and list_form %}
+    {% if list_form %}
     <div class="threads-actions">
     <div class="threads-actions">
       <form id="threads_form" class="form-inline pull-right" action="{{ request_path }}" method="POST">
       <form id="threads_form" class="form-inline pull-right" action="{{ request_path }}" method="POST">
         <input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}">
         <input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}">
@@ -127,6 +131,10 @@
 {% if thread.last_poster_id %}<a href="{% url 'user' user=thread.last_poster_id, username=thread.last_poster_slug %}" class="user-link">{{ thread.last_poster_name }}</a>{% else %}{{ thread.last_poster_name }}{% endif %}
 {% if thread.last_poster_id %}<a href="{% url 'user' user=thread.last_poster_id, username=thread.last_poster_slug %}" class="user-link">{{ thread.last_poster_name }}</a>{% else %}{{ thread.last_poster_name }}{% endif %}
 {%- endmacro %}
 {%- endmacro %}
 
 
+{% macro report_forum(thread) -%}
+{% if thread.report_forum %}<a href="{{ thread.report_forum.forum_url() }}" class="forum-link">{{ thread.report_forum }}</a>{% else %}<em>{% trans %}Deleted{% endtrans %}</em>{% endif %}
+{%- endmacro %}
+
 {% macro pager() %}
 {% macro pager() %}
 {% if pagination['total'] > 0 %}
 {% if pagination['total'] > 0 %}
 <div class="pagination pull-left">
 <div class="pagination pull-left">
@@ -154,7 +162,7 @@
           title: populateForumTooltip({{ subforum.id }})
           title: populateForumTooltip({{ subforum.id }})
         });
         });
       {% endfor %}
       {% endfor %}
-      {%- if user.is_authenticated() and list_form %}
+      {%- if list_form %}
       $('#threads_form').submit(function() {
       $('#threads_form').submit(function() {
         if ($('.thread-select[]:checked').length == 0) {
         if ($('.thread-select[]:checked').length == 0) {
           alert("{% trans %}You have to select at least one thread.{% endtrans %}");
           alert("{% trans %}You have to select at least one thread.{% endtrans %}");

+ 19 - 25
templates/cranefly/reports/posting.html

@@ -7,7 +7,7 @@
 
 
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li><a href="{% url 'reports' %}">{% trans %}Reported Posts{% endtrans %}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li><a href="{% url 'reports' %}">{% trans %}Reported Posts{% endtrans %}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
-{% if thread %}<li><a href="{% url 'report' thread=thread.pk, slug=thread.slug %}">{{ thread.name }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>{% endif %}
+<li><a href="{% url 'report' thread=thread.pk, slug=thread.slug %}">{{ thread.name }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li class="active">{{ get_title() }}
 <li class="active">{{ get_title() }}
 {%- endblock %}
 {%- endblock %}
 
 
@@ -18,12 +18,17 @@
     <ul class="breadcrumb">
     <ul class="breadcrumb">
       {{ self.breadcrumb() }}</li>
       {{ self.breadcrumb() }}</li>
     </ul>
     </ul>
-    <h1>{{ get_title() }} <small>{% if thread %}{{ thread.name }}{% else %}{{ forum.name }}{% endif %}</small></h1>
-    {% if thread %}
+    <h1>{{ get_title() }} <small>{{ thread.name }}</small></h1>
     <ul class="unstyled header-stats">
     <ul class="unstyled header-stats">
+      <li><i class="icon-tag"></i> {% if thread.weight == 2 -%}
+        {% trans %}Open{% endtrans %}
+        {%- elif thread.weight == 1 -%}
+        Resolved
+        {%- else -%}
+        Bogus
+        {%- endif %}</li>
       {{ get_info() }}
       {{ get_info() }}
     </ul>
     </ul>
-    {% endif %}
   </div>
   </div>
 </div>
 </div>
 <div class="container container-primary">
 <div class="container container-primary">
@@ -66,16 +71,11 @@
             {{ form_theme.row_widget(form.fields.edit_reason, width=8) }}
             {{ form_theme.row_widget(form.fields.edit_reason, width=8) }}
             {% endif %}
             {% endif %}
 
 
-            {% if intersect(form.fields, ('thread_weight', 'close_thread')) %}
+            {% if 'thread_weight' in form.fields %}
             <div class="control-group">
             <div class="control-group">
-              <label class="control-label">{% trans %}Thread Status{% endtrans %}:</label>
+              <label class="control-label">{% trans %}Set Report Status{% endtrans %}:</label>
               <div class="controls">
               <div class="controls">
-                {% if 'thread_weight' in form.fields %}
                 {{ form_theme.input_radio_select(form.fields.thread_weight, width=8) }}
                 {{ form_theme.input_radio_select(form.fields.thread_weight, width=8) }}
-                {% endif %}
-                {% if 'close_thread' in form.fields %}
-                {{ form_theme.input_checkbox(form.fields.close_thread, width=8) }}
-                {% endif %}
               </div>
               </div>
             </div>
             </div>
             {% endif %}
             {% endif %}
@@ -127,21 +127,18 @@
 
 
 
 
 {% macro get_title() -%}
 {% macro get_title() -%}
-{% if action == 'new_thread' -%}
-{% trans %}Post New Thread{% endtrans %}
-{%- elif action == 'edit_thread' -%}
-{% trans %}Edit Thread{% endtrans %}
+{%- if action == 'edit_thread' -%}
+{% trans %}Edit Report{% endtrans %}
 {%- elif action == 'new_reply' -%}
 {%- elif action == 'new_reply' -%}
-{% trans %}Post New Reply{% endtrans %}
+{% trans %}Post New Comment{% endtrans %}
 {%- elif action == 'edit_reply' -%}
 {%- elif action == 'edit_reply' -%}
-{% trans %}Edit Reply{% endtrans %}
+{% trans %}Edit Comment{% endtrans %}
 {%- endif %}
 {%- endif %}
 {%- endmacro %}
 {%- endmacro %}
 
 
 
 
 {% macro get_info() -%}
 {% macro get_info() -%}
 {% if action == 'edit_reply' -%}
 {% if action == 'edit_reply' -%}
-    {% if post.moderated %}<li><i class="icon-eye-close"></i> {% trans %}Not Reviewed{% endtrans %}</li>{% endif %}
     <li><i class="icon-time"></i> <a href="{% url 'report_find' thread=thread.pk, slug=thread.slug, post=post.pk %}">{{ post.date|reltimesince }}</a></li>
     <li><i class="icon-time"></i> <a href="{% url 'report_find' thread=thread.pk, slug=thread.slug, post=post.pk %}">{{ post.date|reltimesince }}</a></li>
     <li><i class="icon-user"></i> {% if post.user %}<a href="{% url 'user' user=post.user.pk, username=post.user.username_slug %}">{{ post.user.username }}</a>{% else %}{{ post.user_name }}{% endif %}</li>
     <li><i class="icon-user"></i> {% if post.user %}<a href="{% url 'user' user=post.user.pk, username=post.user.username_slug %}">{{ post.user.username }}</a>{% else %}{{ post.user_name }}{% endif %}</li>
     <li><i class="icon-pencil"></i> {% if post.edits > 0 -%}
     <li><i class="icon-pencil"></i> {% if post.edits > 0 -%}
@@ -150,7 +147,6 @@
       {% trans %}First edit{% endtrans %}
       {% trans %}First edit{% endtrans %}
     {%- endif %}</li>
     {%- endif %}</li>
 {%- else -%}
 {%- else -%}
-    {% if thread.moderated %}<li><i class="icon-eye-close"></i> {% trans %}Not Reviewed{% endtrans %}</li>{% endif %}
     {% if action == 'edit_thread' %}
     {% if action == 'edit_thread' %}
     <li><i class="icon-time"></i> <a href="{% url 'report_find' thread=thread.pk, slug=thread.slug, post=thread.start_post_id %}">{{ thread.start|reltimesince }}</a></li>
     <li><i class="icon-time"></i> <a href="{% url 'report_find' thread=thread.pk, slug=thread.slug, post=thread.start_post_id %}">{{ thread.start|reltimesince }}</a></li>
     {% else %}
     {% else %}
@@ -158,9 +154,9 @@
     {% endif %}
     {% endif %}
     <li><i class="icon-user"></i> {% if thread.start_poster_id %}<a href="{% url 'user' user=thread.start_poster_id, username=thread.start_poster_slug %}">{{ thread.start_poster_name }}</a>{% else %}{{ thread.start_poster_name }}{% endif %}</li>
     <li><i class="icon-user"></i> {% if thread.start_poster_id %}<a href="{% url 'user' user=thread.start_poster_id, username=thread.start_poster_slug %}">{{ thread.start_poster_name }}</a>{% else %}{{ thread.start_poster_name }}{% endif %}</li>
     <li><i class="icon-comment"></i> {% if thread.replies > 0 -%}
     <li><i class="icon-comment"></i> {% if thread.replies > 0 -%}
-      {% trans count=thread.replies, replies=thread.replies|intcomma %}One reply{% pluralize %}{{ replies }} replies{% endtrans %}
+      {% trans count=thread.replies, replies=thread.replies|intcomma %}One comment{% pluralize %}{{ replies }} comments{% endtrans %}
     {%- else -%}
     {%- else -%}
-      {% trans %}No replies{% endtrans %}
+      {% trans %}No comments{% endtrans %}
     {%- endif %}</li>
     {%- endif %}</li>
 {%- endif %}
 {%- endif %}
     {% if thread.closed %}<li><i class="icon-lock"></i> {% trans %}Locked{% endtrans %}</li>{% endif %}
     {% if thread.closed %}<li><i class="icon-lock"></i> {% trans %}Locked{% endtrans %}</li>{% endif %}
@@ -168,10 +164,8 @@
 
 
 
 
 {% macro get_button() -%}
 {% macro get_button() -%}
-{% if action == 'new_thread' -%}
-{% trans %}Post Thread{% endtrans %}
-{%- elif action == 'new_reply' -%}
-{% trans %}Post Reply{% endtrans %}
+{% if action == 'new_reply' -%}
+{% trans %}Post Comment{% endtrans %}
 {%- else -%}
 {%- else -%}
 {% trans %}Save Changes{% endtrans %}
 {% trans %}Save Changes{% endtrans %}
 {%- endif %}
 {%- endif %}

+ 29 - 173
templates/cranefly/reports/thread.html

@@ -19,20 +19,25 @@
     </ul>
     </ul>
     <h1>{{ thread.name }}</h1>
     <h1>{{ thread.name }}</h1>
     <ul class="unstyled header-stats">
     <ul class="unstyled header-stats">
-      {% if thread.moderated %}<li><i class="icon-eye-close"></i> {% trans %}Not Reviewed{% endtrans %}</li>{% endif %}
+      <li><i class="icon-tag"></i> {% if thread.weight == 2 -%}
+        {% trans %}Open{% endtrans %}
+        {%- elif thread.weight == 1 -%}
+        Resolved
+        {%- else -%}
+        Bogus
+        {%- endif %}</li>
       <li><i class="icon-time"></i> {{ thread.last|reltimesince }}</li>
       <li><i class="icon-time"></i> {{ thread.last|reltimesince }}</li>
       <li><i class="icon-user"></i> {% if thread.start_poster_id %}<a href="{% url 'user' user=thread.start_poster_id, username=thread.start_poster_slug %}">{{ thread.start_poster_name }}</a>{% else %}{{ thread.start_poster_name }}{% endif %}</li>
       <li><i class="icon-user"></i> {% if thread.start_poster_id %}<a href="{% url 'user' user=thread.start_poster_id, username=thread.start_poster_slug %}">{{ thread.start_poster_name }}</a>{% else %}{{ thread.start_poster_name }}{% endif %}</li>
       <li><i class="icon-comment"></i> {% if thread.replies > 0 -%}
       <li><i class="icon-comment"></i> {% if thread.replies > 0 -%}
-        {% trans count=thread.replies, replies=thread.replies|intcomma %}One reply{% pluralize %}{{ replies }} replies{% endtrans %}
+        {% trans count=thread.replies, replies=thread.replies|intcomma %}One comment{% pluralize %}{{ replies }} comments{% endtrans %}
       {%- else -%}
       {%- else -%}
-        {% trans %}No replies{% endtrans %}
+        {% trans %}No comments{% endtrans %}
       {%- endif %}</li>
       {%- endif %}</li>
-      {% if thread.closed %}<li><i class="icon-lock"></i> {% trans %}Locked{% endtrans %}</li>{% endif %}
     </ul>
     </ul>
   </div>
   </div>
 </div>
 </div>
 
 
-<div class="container container-primary">
+<div class="container container-primary report-view">
   {% if message %}
   {% if message %}
   <div class="messages-list">
   <div class="messages-list">
     {{ macros.draw_message(message) }}
     {{ macros.draw_message(message) }}
@@ -41,10 +46,7 @@
 
 
   <div class="thread-buttons">
   <div class="thread-buttons">
     {{ pager() }}
     {{ pager() }}
-    {% if user.is_authenticated() %}    
-    {% if acl.threads.can_reply(forum, thread) %}
-    <a href="{% url 'report_reply' thread=thread.pk, slug=thread.slug %}" class="btn btn-inverse pull-right"><i class="icon-pencil"></i> {% trans %}Reply{% endtrans %}</a>
-    {% endif %}
+    <a href="{% url 'report_reply' thread=thread.pk, slug=thread.slug %}" class="btn btn-inverse pull-right"><i class="icon-pencil"></i> {% trans %}Comment{% endtrans %}</a>
     {% if watcher %}
     {% if watcher %}
     <form action="{% url 'report_unwatch' thread=thread.pk, slug=thread.slug %}" class="form-inline pull-right" method="post"><input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}"><input type="hidden" name="retreat" value="{{ request_path }}"><button type="submit" class="btn btn-success tooltip-top" title="{% trans %}Remove thread from watched list{% endtrans %}"><i class="icon-bookmark"></i></button></form>
     <form action="{% url 'report_unwatch' thread=thread.pk, slug=thread.slug %}" class="form-inline pull-right" method="post"><input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}"><input type="hidden" name="retreat" value="{{ request_path }}"><button type="submit" class="btn btn-success tooltip-top" title="{% trans %}Remove thread from watched list{% endtrans %}"><i class="icon-bookmark"></i></button></form>
     {% if watcher.email %}
     {% if watcher.email %}
@@ -56,90 +58,20 @@
     <form action="{% url 'report_watch' thread=thread.pk, slug=thread.slug %}" class="form-inline pull-right" method="post"><input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}"><input type="hidden" name="retreat" value="{{ request_path }}"><button type="submit" class="btn tooltip-top" title="{% trans %}Add thread to watched list{% endtrans %}"><i class="icon-bookmark"></i></button></form>
     <form action="{% url 'report_watch' thread=thread.pk, slug=thread.slug %}" class="form-inline pull-right" method="post"><input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}"><input type="hidden" name="retreat" value="{{ request_path }}"><button type="submit" class="btn tooltip-top" title="{% trans %}Add thread to watched list{% endtrans %}"><i class="icon-bookmark"></i></button></form>
     <form action="{% url 'report_watch_email' thread=thread.pk, slug=thread.slug %}" class="form-inline pull-right" method="post"><input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}"><input type="hidden" name="retreat" value="{{ request_path }}"><button type="submit" class="btn tooltip-top" title="{% trans %}Add thread to watched list and e-mail me if anyone replies{% endtrans %}"><i class="icon-envelope"></i></button></form>
     <form action="{% url 'report_watch_email' thread=thread.pk, slug=thread.slug %}" class="form-inline pull-right" method="post"><input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}"><input type="hidden" name="retreat" value="{{ request_path }}"><button type="submit" class="btn tooltip-top" title="{% trans %}Add thread to watched list and e-mail me if anyone replies{% endtrans %}"><i class="icon-envelope"></i></button></form>
     {% endif %}
     {% endif %}
-    {% if ignored_posts %}
-    <form action="{% url 'report_show_hidden' thread=thread.pk, slug=thread.slug %}" class="form-inline pull-right" method="post"><input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}"><button type="submit" class="btn"><i class="icon-eye-open"></i> {% trans %}Show Hidden Replies{% endtrans %}</button></form>
-    {% endif %}
-    {% endif %}
   </div>
   </div>
 
 
   <div class="thread-body">
   <div class="thread-body">
+    {% if thread.start_post_id != posts[0].pk %}
+    {% set posts = (posts|list) %}
+    {% do posts.insert(0, thread.start_post) %}
+    {% endif %}
     {% for post in posts %}
     {% for post in posts %}
-    <div id="post-{{ post.pk }}" class="post-wrapper">
+    <div id="post-{{ post.pk }}" class="post-wrapper{% if post.pk == thread.start_post_id %} report-wrapper{% endif %}">
       {% if post.message %}
       {% if post.message %}
       <div class="messages-list">
       <div class="messages-list">
         {{ macros.draw_message(post.message) }}
         {{ macros.draw_message(post.message) }}
       </div>
       </div>
       {% endif %}
       {% endif %}
-      {% if post.deleted and not acl.threads.can_see_deleted_posts(forum) %}
-      <div class="post-body post-muted">
-        {% if post.user_id %}
-        <a href="{% url 'user' user=post.user.pk, username=post.user.username_slug %}"><img src="{{ post.user.get_avatar(50) }}" alt="" class="user-avatar"></a>
-        {% else %}
-        <img src="{{ macros.avatar_guest(60) }}" alt="" class="user-avatar">
-        {% endif %}
-        <div class="post-content">
-          <div class="post-header">
-            <div class="post-header-compact">
-              {% if post.user_id %}
-              <a href="{% url 'user' user=post.user.pk, username=post.user.username_slug %}" class="post-author">{{ post.user.username }}</a>{% if post.user.get_title() %} {{ user_label(post.user) }}{% endif %}
-              {% else %}
-              <span class="post-author">{{ post.user_name }}</span> <span class="label post-author-label post-label-guest">{% trans %}Unregistered{% endtrans %}</span>
-              {% endif %}
-              <span class="separator">&ndash;</span>
-              <a href="{% url 'report_find' thread=thread.pk, slug=thread.slug, post=post.pk %}" class="post-date">{{ post.date|reltimesince }}</a>
-              {% if post.edits %}
-              <span class="separator">&ndash;</span>
-              {% if acl.threads.can_see_changelog(user, forum, post) %}
-              <a href="{% url 'report_changelog' thread=thread.pk, slug=thread.slug, post=post.pk %}" class="post-changelog tooltip-bottom" title="{% trans %}Show changelog{% endtrans %}">{% trans edits=post.edits %}One edit{% pluralize %}{{ edits }} edits{% endtrans %}</a>
-              {% else %}
-              <span class="post-changelog">{% trans edits=post.edits %}One edit{% pluralize %}{{ edits }} edits{% endtrans %}</span>
-              {% endif %}
-              {% endif %}
-            </div>
-
-            <a href="{% url 'report_find' thread=thread.pk, slug=thread.slug, post=post.pk %}" class="post-perma tooltip-left" title="{% trans %}Direct link to this post{% endtrans %}">#{{ pagination['start'] + loop.index }}</a>
-
-            {% if not post.is_read %}
-            <div class="post-extra">
-              <span class="label label-warning">
-                {% trans %}New{% endtrans %}
-              </span>
-            </div>
-            {% endif %}
-
-          </div>
-          <div class="post-message">
-            {% trans user=edit_user(post), date=post.edit_date|reltimesince|low %}{{ user }} has deleted this reply {{ date }}{% endtrans %}
-          </div>
-        </dv>
-      </div>
-      {% elif post.ignored %}
-      <div class="post-body post-muted">
-        <img src="{{ macros.avatar_guest(60) }}" alt="" class="user-avatar">
-        <div class="post-arrow"></div>
-        <div class="post-content">
-          <div class="post-header">
-            <div class="post-header-compact">
-              <a href="{% url 'report_find' thread=thread.pk, slug=thread.slug, post=post.pk %}" class="post-date">{{ post.date|reltimesince }}</a>
-            </div>
-
-            <a href="{% url 'report_find' thread=thread.pk, slug=thread.slug, post=post.pk %}" class="post-perma tooltip-left" title="{% trans %}Direct link to this post{% endtrans %}">#{{ pagination['start'] + loop.index }}</a>
-
-            {% if not post.is_read %}
-            <div class="post-extra">
-              <span class="label label-warning">
-                {% trans %}New{% endtrans %}
-              </span>
-            </div>
-            {% endif %}
-
-          </div>
-          <div class="post-message">
-            {% trans %}This reply was posted by user that is on your ignored list.{% endtrans %}
-          </div>
-        </dv>
-      </div>
-      {% else %}
       <div class="post-body">
       <div class="post-body">
         {% if post.user_id %}
         {% if post.user_id %}
         <a href="{% url 'user' user=post.user.pk, username=post.user.username_slug %}"><img src="{{ post.user.get_avatar(100) }}" alt="" class="user-avatar"></a>
         <a href="{% url 'user' user=post.user.pk, username=post.user.username_slug %}"><img src="{{ post.user.get_avatar(100) }}" alt="" class="user-avatar"></a>
@@ -165,11 +97,15 @@
             {% endif %}
             {% endif %}
             {% endif %}
             {% endif %}
 
 
-            {% if user.is_authenticated() and posts_form %}
+            {% if posts_form and thread.start_post_id != post.pk %}
             <label class="checkbox post-checkbox"><input form="posts_form" name="{{ posts_form['list_items']['html_name'] }}" type="checkbox" class="checkbox-member" value="{{ post.pk }}"{% if posts_form['list_items']['has_value'] and ('' ~ post.pk) in posts_form['list_items']['value'] %} checked="checked"{% endif %}></label>
             <label class="checkbox post-checkbox"><input form="posts_form" name="{{ posts_form['list_items']['html_name'] }}" type="checkbox" class="checkbox-member" value="{{ post.pk }}"{% if posts_form['list_items']['has_value'] and ('' ~ post.pk) in posts_form['list_items']['value'] %} checked="checked"{% endif %}></label>
             {% endif %}
             {% endif %}
 
 
-            <a href="{% url 'report_find' thread=thread.pk, slug=thread.slug, post=post.pk %}" class="post-perma tooltip-left" title="{% trans %}Direct link to this post{% endtrans %}">#{{ pagination['start'] + loop.index }}</a>
+            {% if posts_form and thread.start_post_id == post.pk %}
+            <a href="{% url 'report_find' thread=thread.pk, slug=thread.slug, post=post.pk %}" class="post-perma tooltip-left" title="{% trans %}Direct link to this post{% endtrans %}"><i class="icon-">#1</i></a>
+            {% else %}
+            <a href="{% url 'report_find' thread=thread.pk, slug=thread.slug, post=post.pk %}" class="post-perma tooltip-left" title="{% trans %}Direct link to this post{% endtrans %}">#{{ pagination['start'] + loop.index0 }}</a>
+            {% endif %}
 
 
             <div class="post-extra">
             <div class="post-extra">
               {% if post.protected and acl.threads.can_protect(forum) %}
               {% if post.protected and acl.threads.can_protect(forum) %}
@@ -184,18 +120,6 @@
               </span>
               </span>
               {% endif %}
               {% endif %}
 
 
-              {% if post.moderated %}
-              <span class="label label-purple">
-                {% trans %}Unreviewed{% endtrans %}
-              </span>
-              {% endif %}
-
-              {% if acl.threads.can_mod_posts(forum) and post.reported %}
-              <span class="label label-important">
-                {% trans %}Reported{% endtrans %}
-              </span>
-              {% endif %}
-
               {% if not post.is_read %}
               {% if not post.is_read %}
               <span class="label label-warning">
               <span class="label label-warning">
                 {% trans %}New{% endtrans %}
                 {% trans %}New{% endtrans %}
@@ -209,54 +133,8 @@
                 {{ post.post_preparsed|markdown_final|safe }}
                 {{ post.post_preparsed|markdown_final|safe }}
               </article>
               </article>
             </div>
             </div>
-            {% if post.user.signature %}
-            <div class="post-signature">
-              <div class="markdown">
-                {{ post.user.signature_preparsed|markdown_final|safe }}
-              </div>
-            </div>
-            {% endif %}
           </div>
           </div>
           <div class="post-footer">{% filter trim %}
           <div class="post-footer">{% filter trim %}
-            {% if acl.threads.can_see_post_score(forum) %}
-            <div{% if user.is_authenticated() and user.pk != post.user_id %} class="post-rating-actions"{% endif %}>
-              <div class="post-rating">
-                {% if acl.threads.can_see_post_score(forum) == 1 %}
-                <span class="post-score post-score-total{% if (post.upvotes - post.downvotes) > 0 %} post-score-good{% elif (post.upvotes - post.downvotes) < 0 %} post-score-bad{% endif %}">{{ post.upvotes - post.downvotes }}</span>
-                {% elif acl.threads.can_see_post_score(forum) == 2%}
-                <span class="post-score post-score-upvotes{% if post.upvotes %} post-score-good{% endif %}">{{ post.upvotes }}</span>
-                {% endif %}
-                {% if user.is_authenticated() and user.pk != post.user_id and acl.threads.can_upvote_posts(forum) %}
-                <form action="{% url 'post_upvote' thread=thread.pk, slug=thread.slug, post=post.pk %}" class="form-inline form-upvote" method="post">
-                  <input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}">
-                  <button type="submit" class="btn btn-link post-like"{% if post.karma_vote and post.karma_vote.score > 0 %} disabled="disabled"{% endif %}>{% trans %}Like{% endtrans %}</button>
-                </form>
-                {% else %}
-                <span class="post-{% if post.upvotes %}like{% else %}neutral{% endif %}">{% trans %}Likes{% endtrans %}</span>
-                {% endif %}
-              {% if acl.threads.can_see_post_score(forum) == 2 %}
-              </div>
-              <div class="post-rating">
-                <span class="post-score post-score-downvotes{% if post.downvotes %} post-score-bad{% endif %}">{{ post.downvotes }}</span>
-              {% endif %}
-                {% if user.is_authenticated() and user.pk != post.user_id and acl.threads.can_downvote_posts(forum) %}
-                <form action="{% url 'post_downvote' thread=thread.pk, slug=thread.slug, post=post.pk %}" class="form-inline form-downvote" method="post">
-                  <input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}">
-                  <button type="submit" class="btn btn-link post-hate"{% if post.karma_vote and post.karma_vote.score < 0 %} disabled="disabled"{% endif %}>{% trans %}Dislike{% endtrans %}</button>
-                </form>
-                {% elif acl.threads.can_see_post_score(forum) == 2 %}
-                <span class="post-{% if post.downvotes %}hate{% else %}neutral{% endif %}">{% trans %}Dislikes{% endtrans %}</span>
-                {% endif %}
-              </div>
-              {% if acl.threads.can_see_post_votes(forum) %}
-              <div class="post-rating">
-                <a href="{% url 'post_votes' thread=thread.pk, slug=thread.slug, post=post.pk %}">{% trans %}Show Votes{% endtrans %}</a>
-              </div>
-              {% endif %}
-            </div>
-            {% endif %}
-
-            {% if user.is_authenticated() %}
             <div class="post-actions">
             <div class="post-actions">
               {% if acl.users.can_see_users_trails() -%}
               {% if acl.users.can_see_users_trails() -%}
               <a href="{% url 'post_info' thread=thread.pk, slug=thread.slug, post=post.pk %}" class="post-trail">{% trans %}Info{% endtrans %}</a>
               <a href="{% url 'post_info' thread=thread.pk, slug=thread.slug, post=post.pk %}" class="post-trail">{% trans %}Info{% endtrans %}</a>
@@ -266,7 +144,7 @@
               {% elif acl.threads.can_edit_reply(user, forum, thread, post) %}
               {% elif acl.threads.can_edit_reply(user, forum, thread, post) %}
               <a href="{% url 'post_edit' thread=thread.pk, slug=thread.slug, post=post.pk %}" class="post-edit">{% trans %}Edit{% endtrans %}</a>
               <a href="{% url 'post_edit' thread=thread.pk, slug=thread.slug, post=post.pk %}" class="post-edit">{% trans %}Edit{% endtrans %}</a>
               {%- endif %}
               {%- endif %}
-              {% if acl.threads.can_reply(forum, thread) %}<a href="{% url 'report_reply' thread=thread.pk, slug=thread.slug, quote=post.pk %}" class="post-reply">{% trans %}Reply{% endtrans %}</a>{% endif %}
+              <a href="{% url 'report_reply' thread=thread.pk, slug=thread.slug, quote=post.pk %}" class="post-reply">{% trans %}Reply{% endtrans %}</a>
             </div>
             </div>
             {% if post.pk == thread.start_post_id %}
             {% if post.pk == thread.start_post_id %}
             <div class="post-actions">
             <div class="post-actions">
@@ -313,11 +191,9 @@
               {% endif %}
               {% endif %}
             </div>
             </div>
             {% endif %}
             {% endif %}
-            {% endif %}
           {% endfilter %}</div>
           {% endfilter %}</div>
         </div>
         </div>
       </div>
       </div>
-      {% endif %}
     </div>
     </div>
 
 
     {% if post.checkpoints_visible %}
     {% if post.checkpoints_visible %}
@@ -328,20 +204,13 @@
         <span>
         <span>
           {%- if checkpoint.action == 'limit' -%}
           {%- if checkpoint.action == 'limit' -%}
           <i class="icon-lock"></i> {% trans  %}This thread has reached its post limit and has been closed.{% endtrans %}
           <i class="icon-lock"></i> {% trans  %}This thread has reached its post limit and has been closed.{% endtrans %}
-          {%- elif checkpoint.action == 'accepted' -%}
-          <i class="icon-ok"></i> {% trans user=checkpoint_user(checkpoint), date=checkpoint.date|reltimesince|low %}{{ user }} accepted this thread {{ date }}{% endtrans %}
-          {%- elif checkpoint.action == 'closed' -%}
-          <i class="icon-lock"></i> {% trans user=checkpoint_user(checkpoint), date=checkpoint.date|reltimesince|low %}{{ user }} closed this thread {{ date }}{% endtrans %}
-          {%- elif checkpoint.action == 'opened' -%}
-          <i class="icon-lock"></i> {% trans user=checkpoint_user(checkpoint), date=checkpoint.date|reltimesince|low %}{{ user }} opened this thread {{ date }}{% endtrans %}
           {%- elif checkpoint.action == 'deleted' -%}
           {%- elif checkpoint.action == 'deleted' -%}
           <i class="icon-trash"></i> {% trans user=checkpoint_user(checkpoint), date=checkpoint.date|reltimesince|low %}{{ user }} deleted this thread {{ date }}{% endtrans %}
           <i class="icon-trash"></i> {% trans user=checkpoint_user(checkpoint), date=checkpoint.date|reltimesince|low %}{{ user }} deleted this thread {{ date }}{% endtrans %}
           {%- elif checkpoint.action == 'undeleted' -%}
           {%- elif checkpoint.action == 'undeleted' -%}
           <i class="icon-trash"></i> {% trans user=checkpoint_user(checkpoint), date=checkpoint.date|reltimesince|low %}{{ user }} restored this thread {{ date }}{% endtrans %}
           <i class="icon-trash"></i> {% trans user=checkpoint_user(checkpoint), date=checkpoint.date|reltimesince|low %}{{ user }} restored this thread {{ date }}{% endtrans %}
-          {%- elif checkpoint.action == 'moved' and acl.forums.can_see(checkpoint.old_forum_id) -%}
-          <i class="icon-arrow-right"></i> {% trans user=checkpoint_user(checkpoint), forum=checkpoint_forum(checkpoint), date=checkpoint.date|reltimesince|low %}{{ user }} moved this thread from {{ forum }} {{ date }}{% endtrans %}
+          {%- elif checkpoint.action == 'reported' -%}
+          <i class="icon-fire"></i> {% trans user=checkpoint_user(checkpoint), date=checkpoint.date|reltimesince|low %}{{ user }} has also reported this post {{ date }}{% endtrans %}
           {%- endif -%}
           {%- endif -%}
-          {% if user.is_authenticated() %}
           {% if acl.threads.can_delete_checkpoint(forum) %}
           {% if acl.threads.can_delete_checkpoint(forum) %}
           {% if checkpoint.deleted %}
           {% if checkpoint.deleted %}
           <form action="{% url 'post_checkpoint_show' slug=thread.slug, thread=thread.pk, post=post.pk, checkpoint=checkpoint.pk %}" method="post" class="form-inline">
           <form action="{% url 'post_checkpoint_show' slug=thread.slug, thread=thread.pk, post=post.pk, checkpoint=checkpoint.pk %}" method="post" class="form-inline">
@@ -361,7 +230,6 @@
             <button type="submit" class="btn btn-link btn-delete">{% trans %}Delete{% endtrans %}</button>
             <button type="submit" class="btn btn-link btn-delete">{% trans %}Delete{% endtrans %}</button>
           </form>
           </form>
           {% endif %}
           {% endif %}
-          {% endif %}
         </span>
         </span>
       </div>
       </div>
       {% endfor %}
       {% endfor %}
@@ -370,7 +238,7 @@
     {% endfor %}
     {% endfor %}
   </div>
   </div>
 
 
-  {% if user.is_authenticated() and (thread_form or posts_form) %}
+  {% if thread_form or posts_form %}
   <div class="thread-moderation">
   <div class="thread-moderation">
     {% if thread_form%}
     {% if thread_form%}
     <form id="thread_form" class="form-inline pull-left" action="{{ request_path }}" method="POST">
     <form id="thread_form" class="form-inline pull-left" action="{{ request_path }}" method="POST">
@@ -393,23 +261,17 @@
 
 
   <div class="thread-buttons">
   <div class="thread-buttons">
     {{ pager(false) }}
     {{ pager(false) }}
-    {% if user.is_authenticated() and acl.threads.can_reply(forum, thread) %}
-    <a href="{% url 'report_reply' thread=thread.pk, slug=thread.slug %}" class="btn btn-inverse pull-right"><i class="icon-pencil"></i> {% trans %}Reply{% endtrans %}</a>
-    {% elif not user.is_authenticated() and not user.is_crawler() %}
-    <p class="lead thread-signin-message"><a href="{% url 'sign_in' %}">{% trans %}Sign in or register to reply.{% endtrans %}</a></p>
-    {% endif %}
+    <a href="{% url 'report_reply' thread=thread.pk, slug=thread.slug %}" class="btn btn-inverse pull-right"><i class="icon-pencil"></i> {% trans %}Comment{% endtrans %}</a>
   </div>
   </div>
 
 
-  {% if user.is_authenticated() and acl.threads.can_reply(forum, thread) %}
   <div class="thread-quick-reply">
   <div class="thread-quick-reply">
     <form action="{% url 'report_reply' thread=thread.pk, slug=thread.slug %}" method="post">
     <form action="{% url 'report_reply' thread=thread.pk, slug=thread.slug %}" method="post">
       <input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}">
       <input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}">
       <input type="hidden" name="quick_reply" value="1">
       <input type="hidden" name="quick_reply" value="1">
       <img src="{{ user.get_avatar(100) }}" alt="{% trans %}Your Avatar{% endtrans %}" class="user-avatar">
       <img src="{{ user.get_avatar(100) }}" alt="{% trans %}Your Avatar{% endtrans %}" class="user-avatar">
-      {{ editor.editor(quick_reply.post, _('Post Reply'), extra=editor_extra()) }}
+      {{ editor.editor(quick_reply.post, _('Post Comment'), extra=editor_extra()) }}
     </form>
     </form>
   </div>
   </div>
-  {% endif %}
 
 
 </div>
 </div>
 {% endblock %}
 {% endblock %}
@@ -424,7 +286,6 @@
     hljs.tabReplace = '    ';
     hljs.tabReplace = '    ';
     hljs.initHighlightingOnLoad();
     hljs.initHighlightingOnLoad();
     EnhancePostsMD();
     EnhancePostsMD();
-    {%- if user.is_authenticated() %}
     $(function () {
     $(function () {
       $('#thread_form').submit(function() {
       $('#thread_form').submit(function() {
         if ($('#id_thread_action').val() == 'hard') {
         if ($('#id_thread_action').val() == 'hard') {
@@ -457,11 +318,8 @@
           return decision;
           return decision;
       });
       });
     });
     });
-    {% endif %}
   </script>
   </script>
-  {% if user.is_authenticated() and acl.threads.can_reply(forum, thread) %}
   {{ editor.js() }}
   {{ editor.js() }}
-  {% endif %}
 {%- endblock %}
 {%- endblock %}
 
 
 
 
@@ -480,10 +338,8 @@
     {%- if pagination['next'] > 0 %}<li><a href="{% url 'report' slug=thread.slug, thread=thread.id, page=pagination['next'] %}" class="tooltip-top" title="{% trans %}Newest Posts{% endtrans %}"><i class="icon-chevron-right"></i></a></li>{% endif -%}
     {%- if pagination['next'] > 0 %}<li><a href="{% url 'report' slug=thread.slug, thread=thread.id, page=pagination['next'] %}" class="tooltip-top" title="{% trans %}Newest Posts{% endtrans %}"><i class="icon-chevron-right"></i></a></li>{% endif -%}
     {%- if pagination['next'] > 0 and pagination['next'] < pagination['total'] %}<li><a href="{% url 'report' slug=thread.slug, thread=thread.id, page=pagination['total'] %}" class="tooltip-top" title="{% trans %}Go to last page{% endtrans %}">{% trans %}Last{% endtrans %} <i class="icon-chevron-right"></i></a></li>{% endif -%}
     {%- if pagination['next'] > 0 and pagination['next'] < pagination['total'] %}<li><a href="{% url 'report' slug=thread.slug, thread=thread.id, page=pagination['total'] %}" class="tooltip-top" title="{% trans %}Go to last page{% endtrans %}">{% trans %}Last{% endtrans %} <i class="icon-chevron-right"></i></a></li>{% endif -%}
     {% endif %}
     {% endif %}
-    {% if extra and user.is_authenticated() %}
+    {% if extra %}
     {% if not is_read %}<li><a href="{% url 'report_new' slug=thread.slug, thread=thread.id %}" class="tooltip-top" title="{% trans %}Go to first unread{% endtrans %}"><i class="icon-star"></i> {% trans %}First Unread{% endtrans %}</a></li>{% endif %}
     {% if not is_read %}<li><a href="{% url 'report_new' slug=thread.slug, thread=thread.id %}" class="tooltip-top" title="{% trans %}Go to first unread{% endtrans %}"><i class="icon-star"></i> {% trans %}First Unread{% endtrans %}</a></li>{% endif %}
-    {% if thread.replies_moderated > 0 and acl.threads.can_approve(forum) %}<li><a href="{% url 'report_moderated' slug=thread.slug, thread=thread.id %}" class="tooltip-top" title="{% trans %}Go to first post awaiting review{% endtrans %}"><i class="icon-eye-close"></i> {% trans %}First Unreviewed{% endtrans %}</a></li>{% endif %}
-    {% if thread.replies_reported > 0 and acl.threads.can_mod_posts(thread) %}<li><a href="{% url 'report_reported' slug=thread.slug, thread=thread.id %}" class="tooltip-top" title="{% trans %}Go to first reported post{% endtrans %}"><i class="icon-fire"></i> {% trans %}First Reported{% endtrans %}</a></li>{% endif %}
     {% endif %}
     {% endif %}
   </ul>
   </ul>
 </div>
 </div>