Rafał Pitoń 11 лет назад
Родитель
Сommit
5423000773
30 измененных файлов с 310 добавлено и 576 удалено
  1. 42 40
      misago/acl/permissions/threads.py
  2. 35 57
      static/cranefly/css/cranefly.css
  3. 10 257
      static/cranefly/css/cranefly/forum.less
  4. 52 31
      static/cranefly/css/cranefly/reports.less
  5. 9 9
      templates/cranefly/new_threads.html
  6. 9 9
      templates/cranefly/popular_threads.html
  7. 2 2
      templates/cranefly/private_threads/changelog.html
  8. 1 1
      templates/cranefly/private_threads/changelog_diff.html
  9. 2 2
      templates/cranefly/private_threads/details.html
  10. 3 30
      templates/cranefly/private_threads/list.html
  11. 2 2
      templates/cranefly/private_threads/posting.html
  12. 1 1
      templates/cranefly/private_threads/thread.html
  13. 2 2
      templates/cranefly/reports/changelog.html
  14. 1 1
      templates/cranefly/reports/changelog_diff.html
  15. 2 2
      templates/cranefly/reports/details.html
  16. 101 79
      templates/cranefly/reports/list.html
  17. 2 2
      templates/cranefly/reports/posting.html
  18. 1 1
      templates/cranefly/reports/thread.html
  19. 2 2
      templates/cranefly/threads/changelog.html
  20. 1 1
      templates/cranefly/threads/changelog_diff.html
  21. 2 2
      templates/cranefly/threads/details.html
  22. 2 2
      templates/cranefly/threads/karmas.html
  23. 8 23
      templates/cranefly/threads/list.html
  24. 2 2
      templates/cranefly/threads/merge.html
  25. 2 2
      templates/cranefly/threads/move_posts.html
  26. 2 2
      templates/cranefly/threads/move_thread.html
  27. 2 2
      templates/cranefly/threads/posting.html
  28. 2 2
      templates/cranefly/threads/split.html
  29. 1 1
      templates/cranefly/threads/thread.html
  30. 7 7
      templates/cranefly/watched.html

+ 42 - 40
misago/acl/permissions/threads.py

@@ -175,7 +175,7 @@ class ThreadsACL(BaseACL):
 
     def filter_threads(self, request, forum, queryset):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if not forum_role['can_approve']:
                 if request.user.is_authenticated():
                     queryset = queryset.filter(Q(moderated=False) | Q(start_poster=request.user))
@@ -206,14 +206,14 @@ class ThreadsACL(BaseACL):
 
     def can_read_threads(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             return forum_role['can_read_threads']
         except KeyError:
             return False
 
     def can_start_threads(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if forum_role['can_read_threads'] == 0 or forum_role['can_start_threads'] == 0:
                 return False
             if forum.closed and forum_role['can_close_threads'] == 0:
@@ -224,7 +224,7 @@ class ThreadsACL(BaseACL):
 
     def allow_new_threads(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if forum_role['can_read_threads'] == 0 or forum_role['can_start_threads'] == 0:
                 raise ACLError403(_("You don't have permission to start new threads in this forum."))
             if forum.closed and forum_role['can_close_threads'] == 0:
@@ -234,7 +234,7 @@ class ThreadsACL(BaseACL):
 
     def can_edit_thread(self, user, forum, thread, post):
         try:
-            forum_role = self.acl[thread.forum_id]
+            forum_role = self.get_role(forum)
             if forum_role['can_close_threads'] == 0 and (forum.closed or thread.closed):
                 return False
             if forum_role['can_edit_threads_posts']:
@@ -247,7 +247,7 @@ class ThreadsACL(BaseACL):
 
     def allow_thread_edit(self, user, forum, thread, post):
         try:
-            forum_role = self.acl[thread.forum_id]
+            forum_role = self.get_role(forum)
             if thread.deleted or post.deleted:
                 self.allow_deleted_post_view(forum)
             if not forum_role['can_close_threads']:
@@ -267,7 +267,7 @@ class ThreadsACL(BaseACL):
 
     def can_reply(self, forum, thread):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if forum_role['can_write_posts'] == 0:
                 return False
             if (forum.closed or thread.closed) and forum_role['can_close_threads'] == 0:
@@ -278,7 +278,7 @@ class ThreadsACL(BaseACL):
 
     def allow_reply(self, forum, thread):
         try:
-            forum_role = self.acl[thread.forum.pk]
+            forum_role = self.get_role(forum)
             if forum_role['can_write_posts'] == 0:
                 raise ACLError403(_("You don't have permission to write replies in this forum."))
             if forum_role['can_close_threads'] == 0:
@@ -291,7 +291,7 @@ class ThreadsACL(BaseACL):
 
     def can_edit_reply(self, user, forum, thread, post):
         try:
-            forum_role = self.acl[thread.forum_id]
+            forum_role = self.get_role(forum)
             if forum_role['can_close_threads'] == 0 and (forum.closed or thread.closed):
                 return False
             if forum_role['can_edit_threads_posts']:
@@ -304,7 +304,7 @@ class ThreadsACL(BaseACL):
 
     def allow_reply_edit(self, user, forum, thread, post):
         try:
-            forum_role = self.acl[thread.forum_id]
+            forum_role = self.get_role(forum)
             if thread.deleted or post.deleted:
                 self.allow_deleted_post_view(forum)
             if not forum_role['can_close_threads']:
@@ -324,14 +324,14 @@ class ThreadsACL(BaseACL):
 
     def can_see_changelog(self, user, forum, post):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             return forum_role['can_see_changelog'] or user.pk == post.user_id
         except KeyError:
             return False
 
     def allow_changelog_view(self, user, forum, post):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if post.thread.deleted or post.deleted:
                 self.allow_deleted_post_view(forum)
             if not (forum_role['can_see_changelog'] or user.pk == post.user_id):
@@ -341,7 +341,7 @@ class ThreadsACL(BaseACL):
 
     def can_make_revert(self, forum, thread):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if not forum_role['can_close_threads'] and (forum.closed or thread.closed):
                 return False
             return forum_role['can_edit_threads_posts']
@@ -350,7 +350,7 @@ class ThreadsACL(BaseACL):
 
     def allow_revert(self, forum, thread):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if not forum_role['can_close_threads']:
                 if forum.closed:
                     raise ACLError403(_("You can't make reverts in closed forums."))
@@ -363,7 +363,7 @@ class ThreadsACL(BaseACL):
 
     def can_mod_threads(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             return (
                     forum_role['can_approve']
                     or forum_role['can_pin_threads']
@@ -376,7 +376,7 @@ class ThreadsACL(BaseACL):
 
     def can_mod_posts(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             return (
                     forum_role['can_edit_threads_posts']
                     or forum_role['can_move_threads_posts']
@@ -389,35 +389,35 @@ class ThreadsACL(BaseACL):
 
     def can_approve(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             return forum_role['can_approve']
         except KeyError:
             return False
 
     def can_close(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             return forum_role['can_close_threads']
         except KeyError:
             return False
 
     def can_protect(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             return forum_role['can_protect_posts']
         except KeyError:
             return False
 
     def can_pin_threads(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             return forum_role['can_pin_threads']
         except KeyError:
             return False
 
     def can_delete_thread(self, user, forum, thread, post):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if post.pk != thread.start_post_id:
                 return False
             if not forum_role['can_close_threads'] and (forum.closed or thread.closed):
@@ -434,7 +434,7 @@ class ThreadsACL(BaseACL):
 
     def allow_delete_thread(self, user, forum, thread, post, delete=False):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if not forum_role['can_close_threads']:
                 if forum.closed:
                     raise ACLError403(_("You don't have permission to delete threads in closed forum."))
@@ -453,7 +453,7 @@ class ThreadsACL(BaseACL):
 
     def can_delete_post(self, user, forum, thread, post):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if post.pk == thread.start_post_id:
                 return False
             if not forum_role['can_close_threads'] and (forum.closed or thread.closed):
@@ -470,7 +470,7 @@ class ThreadsACL(BaseACL):
 
     def allow_delete_post(self, user, forum, thread, post, delete=False):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if not forum_role['can_close_threads']:
                 if forum.closed:
                     raise ACLError403(_("You don't have permission to delete posts in closed forum."))
@@ -489,21 +489,21 @@ class ThreadsACL(BaseACL):
 
     def can_see_deleted_threads(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             return forum_role['can_delete_threads']
         except KeyError:
             return False
 
     def can_see_deleted_posts(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             return forum_role['can_delete_posts']
         except KeyError:
             return False
 
     def allow_deleted_post_view(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if not forum_role['can_delete_posts']:
                 raise ACLError404()
         except KeyError:
@@ -511,35 +511,35 @@ class ThreadsACL(BaseACL):
 
     def can_upvote_posts(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             return forum_role['can_upvote_posts']
         except KeyError:
             return False
 
     def can_downvote_posts(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             return forum_role['can_downvote_posts']
         except KeyError:
             return False
 
     def can_see_post_score(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             return forum_role['can_see_posts_scores']
         except KeyError:
             return False
 
     def can_see_post_votes(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             return forum_role['can_see_votes']
         except KeyError:
             return False
 
     def allow_post_upvote(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if not forum_role['can_upvote_posts']:
                 raise ACLError403(_("You cannot upvote posts in this forum."))
         except KeyError:
@@ -547,7 +547,7 @@ class ThreadsACL(BaseACL):
 
     def allow_post_downvote(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if not forum_role['can_downvote_posts']:
                 raise ACLError403(_("You cannot downvote posts in this forum."))
         except KeyError:
@@ -555,7 +555,7 @@ class ThreadsACL(BaseACL):
 
     def allow_post_votes_view(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if not forum_role['can_see_votes']:
                 raise ACLError403(_("You don't have permission to see who voted on this post."))
         except KeyError:
@@ -563,20 +563,22 @@ class ThreadsACL(BaseACL):
 
     def can_see_all_checkpoints(self, forum):
         try:
-            return self.acl[forum.pk]['can_see_deleted_checkpoints']
+            forum_role = self.get_role(forum)
+            return forum_role['can_see_deleted_checkpoints']
         except KeyError:
             raise False
 
     def can_delete_checkpoint(self, forum):
         try:
-            return self.acl[forum.pk]['can_delete_checkpoints']
+            forum_role = self.get_role(forum)
+            return forum_role['can_delete_checkpoints']
         except KeyError:
             raise False
 
     def allow_checkpoint_view(self, forum, checkpoint):
         if checkpoint.deleted:
             try:
-                forum_role = self.acl[forum.pk]
+                forum_role = self.get_role(forum)
                 if not forum_role['can_see_deleted_checkpoints']:
                     raise ACLError403(_("Selected checkpoint could not be found."))
             except KeyError:
@@ -584,7 +586,7 @@ class ThreadsACL(BaseACL):
 
     def allow_checkpoint_hide(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if not forum_role['can_delete_checkpoints']:
                 raise ACLError403(_("You cannot hide checkpoints!"))
         except KeyError:
@@ -592,7 +594,7 @@ class ThreadsACL(BaseACL):
 
     def allow_checkpoint_delete(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if forum_role['can_delete_checkpoints'] != 2:
                 raise ACLError403(_("You cannot delete checkpoints!"))
         except KeyError:
@@ -600,7 +602,7 @@ class ThreadsACL(BaseACL):
 
     def allow_checkpoint_show(self, forum):
         try:
-            forum_role = self.acl[forum.pk]
+            forum_role = self.get_role(forum)
             if not forum_role['can_delete_checkpoints']:
                 raise ACLError403(_("You cannot show checkpoints!"))
         except KeyError:

+ 35 - 57
static/cranefly/css/cranefly.css

@@ -974,57 +974,31 @@ a.btn-link:hover,a.btn-link:active,a.btn-link:focus{color:#333;text-decoration:n
 .forum-subforums-list.forum-subforums-important .header{background-color:#cf402e;border:1px solid #a53325}.forum-subforums-list.forum-subforums-important .header h2{color:#fff;text-shadow:0 1px 0 #672017}.forum-subforums-list.forum-subforums-important .header h2 small{color:#280c09;text-shadow:none}
 .forum-subforums-list.forum-subforums-inverse .header{background-color:#333;border:1px solid #1a1a1a}.forum-subforums-list.forum-subforums-inverse .header h2{color:#eee;text-shadow:0 1px 0 #000}.forum-subforums-list.forum-subforums-inverse .header h2 small{color:#b3b3b3;text-shadow:none}
 .forum-subforums-list.forum-subforums-info .header{background-color:#3c85a3;border:1px solid #2e677e}.forum-subforums-list.forum-subforums-info .header h2{color:#fff;text-shadow:0 1px 0 #1a3946}.forum-subforums-list.forum-subforums-info .header h2 small{color:#1a3946;text-shadow:none}
-.forum-threads-list-new{background-color:#fff;border:1px solid #d5d5d5;border-radius:2px;-webkit-box-shadow:0 0 0 3px #eee;-moz-box-shadow:0 0 0 3px #eee;box-shadow:0 0 0 3px #eee;margin-bottom:20px}.forum-threads-list-new .threads-list-empty{padding:28px 0;color:#999;font-size:26.25px;text-align:center}
-.forum-threads-list-new>ul{list-style:none;margin:0}.forum-threads-list-new>ul>li{border-bottom:1px solid #d5d5d5;padding:9.9px 0;overflow:auto}.forum-threads-list-new>ul>li .thread-icon{float:left;height:22px;width:39.5px;color:#d5d5d5;font-size:22px;text-align:center;text-decoration:none;margin-bottom:-1px}
-.forum-threads-list-new>ul>li .thread-body{margin:-9.9px 0;margin-left:39.5px;padding:9.9px 0}.forum-threads-list-new>ul>li .thread-body .thread-title{display:block}.forum-threads-list-new>ul>li .thread-body .thread-title a:link,.forum-threads-list-new>ul>li .thread-body .thread-title a:active,.forum-threads-list-new>ul>li .thread-body .thread-title a:visited,.forum-threads-list-new>ul>li .thread-body .thread-title a:hover{color:#555;font-size:17.5px}
-.forum-threads-list-new>ul>li .thread-body .thread-activity{float:right;list-style:none;margin:0;margin-top:-9.9px;padding:6px 0;padding-right:8px;overflow:auto;position:relative;top:1px;z-index:2}.forum-threads-list-new>ul>li .thread-body .thread-activity li{float:left;margin:0;margin-left:10px;padding:0}.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-replies,.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-replies-reported,.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-replies-moderated{position:relative;top:2px;color:#555;font-size:17.5px;font-weight:bold}
-.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-replies-reported{color:#cf402e}
-.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-replies-moderated{color:#7a43b6}
-.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-replies{position:relative;top:2px;color:#555;font-size:17.5px;font-weight:bold}
-.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-last-reply{position:relative;top:2px}.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-last-reply a:link,.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-last-reply a:visited{color:#999;font-size:17.5px;font-weight:bold}
-.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-last-reply a:hover,.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-last-reply a:active{color:#333}
-.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-author,.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-poster{position:relative;top:2px;color:#555;font-size:17.5px;font-weight:bold}.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-author .user-avatar,.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-poster .user-avatar{border-radius:3px;width:24px;height:24px;position:relative;bottom:2px}
-.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-author a:link,.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-author a:active,.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-author a:visited,.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-author a:hover{color:#049cdb}
-.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-poster a:link,.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-poster a:active,.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-poster a:visited,.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-poster a:hover{color:#cf402e}
-.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-flag{color:#999;font-size:26px}.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-flag.thread-moderated:hover{color:#7a43b6}
-.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-flag.thread-closed:hover{color:#cf402e}
-.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-flag.thread-deleted:hover{color:#333}
-.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-forum{margin-left:14px}.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-forum a:link,.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-forum a:visited{position:relative;top:2px;color:#999;font-size:17.5px}
-.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-forum a:hover,.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-forum a:active{color:#333}
-.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-select label{border-radius:3px;display:inline-block;margin:0;margin-bottom:-5px;padding-right:3px;padding-bottom:4px}.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-select label:hover{background-color:#eee}
-.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-select label:active{background-color:#cf402e}
-.forum-threads-list-new>ul>li .thread-body .thread-activity li.thread-select label input{margin-top:6px;position:relative;left:6px}
-.forum-threads-list-new>ul>li .thread-body .thread-details{float:left;list-style:none;margin:0;padding:0}.forum-threads-list-new>ul>li .thread-body .thread-details li{float:left;margin-right:7px;color:#999;font-size:11.9px}.forum-threads-list-new>ul>li .thread-body .thread-details li a:link,.forum-threads-list-new>ul>li .thread-body .thread-details li a:visited{color:#555}
-.forum-threads-list-new>ul>li .thread-body .thread-details li a:hover,.forum-threads-list-new>ul>li .thread-body .thread-details li a:active{color:#333}
-.forum-threads-list-new>ul>li.thread-new .thread-icon{color:#cf402e}
-.forum-threads-list-new>ul>li.thread-new .thread-title:link,.forum-threads-list-new>ul>li.thread-new .thread-title:active,.forum-threads-list-new>ul>li.thread-new .thread-title:visited,.forum-threads-list-new>ul>li.thread-new .thread-title:hover{color:#333}
-.forum-threads-list-new>ul>li:last-child{border-bottom:none}
-.forum-threads-list-new .threads-actions{background-color:#fbfbfb;border-top:1px solid #d5d5d5;border-radius:0 0 2px 2px;overflow:auto;padding:4px;color:#999;font-size:11.9px}.forum-threads-list-new .threads-actions form{margin-bottom:0}
-.forum-threads-list{background-color:#fff;border:1px solid #d5d5d5;border-radius:2px;-webkit-box-shadow:0 0 0 3px #eee;-moz-box-shadow:0 0 0 3px #eee;box-shadow:0 0 0 3px #eee;margin-bottom:20px}.forum-threads-list .header{background-color:#fbfbfb;border:1px solid #d5d5d5;border-radius:2px 2px 0 0;margin:-1px;margin-bottom:0;padding-bottom:1px;overflow:auto;color:#999;font-weight:bold;font-size:11.9px}.forum-threads-list .header .row-fluid>div{margin-bottom:0;min-height:1px;padding:2px 10px;padding-top:2px;padding-bottom:2px}
-.forum-threads-list .header .row-fluid .thread-replies{float:left;width:106px}
-.forum-threads-list .header .row-fluid .thread-last{float:left}
-.forum-threads-list .header .check-cell{padding:0}.forum-threads-list .header .check-cell label{margin:0}
-.forum-threads-list .thread-row{border-bottom:1px solid #d5d5d5;height:38px;overflow:hidden;padding:9.9px 0}.forum-threads-list .thread-row .row-fluid>div{min-height:auto;padding:2px 10px;padding-bottom:0}
-.forum-threads-list .thread-row.thread-last{border-bottom:none}.forum-threads-list .thread-row.thread-last>div{padding-bottom:1px}
-.forum-threads-list .thread-row .thread-icon{display:block;float:left;position:relative;bottom:1px;color:#d5d5d5;font-size:22px}.forum-threads-list .thread-row .thread-icon:hover,.forum-threads-list .thread-row .thread-icon:active{color:#d5d5d5;text-decoration:none}
-.forum-threads-list .thread-row.thread-new .thread-icon{color:#cf402e}
-.forum-threads-list .thread-row.thread-new .thread-name{color:#333 !important}
-.forum-threads-list .thread-row.threads-list-empty{height:auto;padding:11px 19px;font-size:17.5px;text-align:center}
-.forum-threads-list .thread-row .thread-name{margin-left:10px;color:#5e5e5e;font-size:16px;font-weight:bold}
-.forum-threads-list .thread-row .thread-details,.forum-threads-list .thread-row .thread-last-reply{color:#999;line-height:14px}.forum-threads-list .thread-row .thread-details a:link,.forum-threads-list .thread-row .thread-last-reply a:link,.forum-threads-list .thread-row .thread-details a:visited,.forum-threads-list .thread-row .thread-last-reply a:visited{color:#333}
-.forum-threads-list .thread-row .thread-details{margin-left:29px;font-size:10.5px}
-.forum-threads-list .thread-row .thread-flags{float:right;margin:0;position:relative;right:-30px;top:5px;padding:0}.forum-threads-list .thread-row .thread-flags li{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;display:block;float:left;margin-left:3px;padding:2px 5px;color:#fff}.forum-threads-list .thread-row .thread-flags li.flag-reported{background-color:#f89406}
-.forum-threads-list .thread-row .thread-flags li.flag-notreviewed{background-color:#7a43b6}
-.forum-threads-list .thread-row .thread-flags li.flag-announcement{background-color:#049cdb}
-.forum-threads-list .thread-row .thread-flags li.flag-sticky{background-color:#3c85a3}
-.forum-threads-list .thread-row .thread-flags li.flag-deleted{background-color:#333}
-.forum-threads-list .thread-row .thread-flags li.flag-closed{background-color:#cf402e}
-.forum-threads-list .thread-row .thread-activity{border-left:1px dotted #e0e0e0;position:relative;bottom:3px}.forum-threads-list .thread-row .thread-activity .thread-last-avatar{float:left}.forum-threads-list .thread-row .thread-activity .thread-last-avatar img{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;margin:0;margin-right:14px;width:40px;height:40px}
-.forum-threads-list .thread-row .thread-activity .thread-replies{float:left;margin-top:-1px;margin-right:14px;color:#999;font-size:11.9px}.forum-threads-list .thread-row .thread-activity .thread-replies .lead{font-size:14px;font-weight:bold;line-height:20px}
-.forum-threads-list .thread-row .thread-activity .thread-replies a:link,.forum-threads-list .thread-row .thread-activity .thread-replies a:active,.forum-threads-list .thread-row .thread-activity .thread-replies a:visited,.forum-threads-list .thread-row .thread-activity .thread-replies a:hover{color:#555}
-.forum-threads-list .thread-row .thread-activity .thread-last-reply{border-left:1px dotted #e0e0e0;padding-left:14px}
-.forum-threads-list .thread-row .thread-activity .thread-select{background-color:#f2f2f2;display:block;float:right;margin:-12px -11px;margin-left:0;width:29px;height:61px}.forum-threads-list .thread-row .thread-activity .thread-select:hover,.forum-threads-list .thread-row .thread-activity .thread-select:focus,.forum-threads-list .thread-row .thread-activity .thread-select:active{background-color:#08c}
-.forum-threads-list .thread-row .thread-activity .thread-select input{margin:0;position:relative;right:2px;top:26px}
+.forum-threads-list{background-color:#fff;border:1px solid #d5d5d5;border-radius:2px;-webkit-box-shadow:0 0 0 3px #eee;-moz-box-shadow:0 0 0 3px #eee;box-shadow:0 0 0 3px #eee;margin-bottom:20px}.forum-threads-list .threads-list-empty{padding:28px 0;color:#999;font-size:26.25px;text-align:center}
+.forum-threads-list>ul{list-style:none;margin:0}.forum-threads-list>ul>li{border-bottom:1px solid #d5d5d5;padding:9.9px 0;overflow:auto}.forum-threads-list>ul>li .thread-icon{float:left;margin-bottom:-1px;height:22px;width:39.5px;font-size:22px;text-align:center}.forum-threads-list>ul>li .thread-icon a:link,.forum-threads-list>ul>li .thread-icon a:active,.forum-threads-list>ul>li .thread-icon a:visited,.forum-threads-list>ul>li .thread-icon a:hover{color:#d5d5d5;text-decoration:none}
+.forum-threads-list>ul>li .thread-body{margin:-9.9px 0;margin-left:39.5px;padding:9.9px 0}.forum-threads-list>ul>li .thread-body .thread-title{display:block}.forum-threads-list>ul>li .thread-body .thread-title a:link,.forum-threads-list>ul>li .thread-body .thread-title a:active,.forum-threads-list>ul>li .thread-body .thread-title a:visited,.forum-threads-list>ul>li .thread-body .thread-title a:hover{color:#555;font-size:17.5px}
+.forum-threads-list>ul>li .thread-body .thread-activity{float:right;list-style:none;margin:0;margin-top:-9.9px;padding:6px 0;padding-right:8px;overflow:auto;position:relative;top:1px;z-index:2}.forum-threads-list>ul>li .thread-body .thread-activity li{float:left;margin:0;margin-left:10px;padding:0}.forum-threads-list>ul>li .thread-body .thread-activity li.thread-replies,.forum-threads-list>ul>li .thread-body .thread-activity li.thread-replies-reported,.forum-threads-list>ul>li .thread-body .thread-activity li.thread-replies-moderated{position:relative;top:2px;color:#555;font-size:17.5px;font-weight:bold}
+.forum-threads-list>ul>li .thread-body .thread-activity li.thread-replies-reported{color:#cf402e}
+.forum-threads-list>ul>li .thread-body .thread-activity li.thread-replies-moderated{color:#7a43b6}
+.forum-threads-list>ul>li .thread-body .thread-activity li.thread-replies{position:relative;top:2px;color:#555;font-size:17.5px;font-weight:bold}
+.forum-threads-list>ul>li .thread-body .thread-activity li.thread-last-reply{position:relative;top:2px}.forum-threads-list>ul>li .thread-body .thread-activity li.thread-last-reply a:link,.forum-threads-list>ul>li .thread-body .thread-activity li.thread-last-reply a:visited{color:#999;font-size:17.5px;font-weight:bold}
+.forum-threads-list>ul>li .thread-body .thread-activity li.thread-last-reply a:hover,.forum-threads-list>ul>li .thread-body .thread-activity li.thread-last-reply a:active{color:#333}
+.forum-threads-list>ul>li .thread-body .thread-activity li.thread-author,.forum-threads-list>ul>li .thread-body .thread-activity li.thread-poster{position:relative;top:2px;color:#555;font-size:17.5px;font-weight:bold}.forum-threads-list>ul>li .thread-body .thread-activity li.thread-author .user-avatar,.forum-threads-list>ul>li .thread-body .thread-activity li.thread-poster .user-avatar{border-radius:3px;width:24px;height:24px;position:relative;bottom:2px}
+.forum-threads-list>ul>li .thread-body .thread-activity li.thread-author a:link,.forum-threads-list>ul>li .thread-body .thread-activity li.thread-author a:active,.forum-threads-list>ul>li .thread-body .thread-activity li.thread-author a:visited,.forum-threads-list>ul>li .thread-body .thread-activity li.thread-author a:hover{color:#049cdb}
+.forum-threads-list>ul>li .thread-body .thread-activity li.thread-poster a:link,.forum-threads-list>ul>li .thread-body .thread-activity li.thread-poster a:active,.forum-threads-list>ul>li .thread-body .thread-activity li.thread-poster a:visited,.forum-threads-list>ul>li .thread-body .thread-activity li.thread-poster a:hover{color:#cf402e}
+.forum-threads-list>ul>li .thread-body .thread-activity li.thread-flag{color:#999;font-size:26px}.forum-threads-list>ul>li .thread-body .thread-activity li.thread-flag.thread-moderated:hover{color:#7a43b6}
+.forum-threads-list>ul>li .thread-body .thread-activity li.thread-flag.thread-closed:hover{color:#cf402e}
+.forum-threads-list>ul>li .thread-body .thread-activity li.thread-flag.thread-deleted:hover{color:#333}
+.forum-threads-list>ul>li .thread-body .thread-activity li.thread-forum{margin-left:14px}.forum-threads-list>ul>li .thread-body .thread-activity li.thread-forum a:link,.forum-threads-list>ul>li .thread-body .thread-activity li.thread-forum a:visited{position:relative;top:2px;color:#999;font-size:17.5px}
+.forum-threads-list>ul>li .thread-body .thread-activity li.thread-forum a:hover,.forum-threads-list>ul>li .thread-body .thread-activity li.thread-forum a:active{color:#333}
+.forum-threads-list>ul>li .thread-body .thread-activity li.thread-select label{border-radius:3px;display:inline-block;margin:0;margin-bottom:-5px;padding-right:3px;padding-bottom:4px}.forum-threads-list>ul>li .thread-body .thread-activity li.thread-select label:hover{background-color:#eee}
+.forum-threads-list>ul>li .thread-body .thread-activity li.thread-select label:active{background-color:#cf402e}
+.forum-threads-list>ul>li .thread-body .thread-activity li.thread-select label input{margin-top:6px;position:relative;left:6px}
+.forum-threads-list>ul>li .thread-body .thread-details{float:left;list-style:none;margin:0;padding:0}.forum-threads-list>ul>li .thread-body .thread-details li{float:left;margin-right:7px;color:#999;font-size:11.9px}.forum-threads-list>ul>li .thread-body .thread-details li a:link,.forum-threads-list>ul>li .thread-body .thread-details li a:visited{color:#555}
+.forum-threads-list>ul>li .thread-body .thread-details li a:hover,.forum-threads-list>ul>li .thread-body .thread-details li a:active{color:#333}
+.forum-threads-list>ul>li.thread-new .thread-icon a:link,.forum-threads-list>ul>li.thread-new .thread-icon a:active,.forum-threads-list>ul>li.thread-new .thread-icon a:visited,.forum-threads-list>ul>li.thread-new .thread-icon a:hover{color:#cf402e}
+.forum-threads-list>ul>li.thread-new .thread-title:link,.forum-threads-list>ul>li.thread-new .thread-title:active,.forum-threads-list>ul>li.thread-new .thread-title:visited,.forum-threads-list>ul>li.thread-new .thread-title:hover{color:#333}
+.forum-threads-list>ul>li:last-child{border-bottom:none}
 .forum-threads-list .threads-actions{background-color:#fbfbfb;border-top:1px solid #d5d5d5;border-radius:0 0 2px 2px;overflow:auto;padding:4px;color:#999;font-size:11.9px}.forum-threads-list .threads-actions form{margin-bottom:0}
 .forum-threads-extra{overflow:auto}.forum-threads-extra.extra-top{margin-bottom:20px}
 .forum-threads-extra .threads-signin-message{float:right}.forum-threads-extra .threads-signin-message a:link,.forum-threads-extra .threads-signin-message a:visited{color:#333}
@@ -1114,12 +1088,16 @@ a.btn-link:hover,a.btn-link:active,a.btn-link:focus{color:#333;text-decoration:n
 .report-view .report-wrapper .post-body .report-actions .btn:hover,.report-view .report-wrapper .post-body .report-actions .btn:active,.report-view .report-wrapper .post-body .report-actions .btn:focus{opacity:1 !important;filter:alpha(opacity=100) !important;text-decoration:none !important}
 .report-view .report-wrapper .post-body .report-actions .btn.btn-resolve{background-color:#3e933e;text-shadow:0 1px 0 #285d28}
 .report-view .report-wrapper .post-body .report-actions .btn.btn-bogus{background-color:#333;text-shadow:0 1px 0 #000}
-.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:#fff;font-weight:bold}.reports-list .thread-label .report-label.report-open{background-color:#f89406;text-shadow:0 1px 0 #945904}
-.reports-list .thread-label .report-label.report-resolved{background-color:#46a546;text-shadow:0 1px 0 #285d28}
-.reports-list .thread-label .report-label.report-bogus{background-color:#555;text-shadow:0 1px 0 #222}
-.reports-list .thread-name .report-id{color:#999 !important}
-.reports-list .thread-name,.reports-list .thread-details{margin-left:0 !important}
-.reports-list .thread-icon{display:none !important;float:none}
+.reports-list .report-icon{padding-right:17.5px;position:relative;bottom:1px;width:200px !important;text-align:right !important}.reports-list .report-icon a:link,.reports-list .report-icon a:active,.reports-list .report-icon a:visited,.reports-list .report-icon a:hover{font-size:17.5px}
+.reports-list .report-icon .report-open:link,.reports-list .report-icon .report-open:active,.reports-list .report-icon .report-open:visited,.reports-list .report-icon .report-open:hover{color:#cf402e}
+.reports-list .report-icon .report-resolved:link,.reports-list .report-icon .report-resolved:active,.reports-list .report-icon .report-resolved:visited,.reports-list .report-icon .report-resolved:hover{color:#46a546}
+.reports-list .thread-new .report-icon a:link,.reports-list .thread-new .report-icon a:active,.reports-list .thread-new .report-icon a:visited,.reports-list .thread-new .report-icon a:hover{border-radius:3px;margin:-2px -6px;padding:2px 6px;color:#fff !important}
+.reports-list .thread-new .report-open:link,.reports-list .thread-new .report-open:visited{background-color:#cf402e}
+.reports-list .thread-new .report-open:active,.reports-list .thread-new .report-open:hover{background-color:#902d20}
+.reports-list .thread-new .report-resolved:link,.reports-list .thread-new .report-resolved:visited{background-color:#46a546}
+.reports-list .thread-new .report-resolved:active,.reports-list .thread-new .report-resolved:hover{background-color:#2f6f2f}
+.reports-list .thread-new .report-bogus:link,.reports-list .thread-new .report-bogus:visited{background-color:#222}
+.reports-list .thread-new .report-bogus:active,.reports-list .thread-new .report-bogus:hover{background-color:#333}
 .search-suggestion{overflow:auto}.search-suggestion p,.search-suggestion form{float:left}
 .search-suggestion .lead{color:#7b7b7b}
 .search-suggestion form .btn-link{margin-top:1px;color:#3c85a3;font-size:21px;font-style:italic;font-weight:200;text-decoration:underline}.search-suggestion form .btn-link:hover,.search-suggestion form .btn-link:active{color:#3c85a3;text-decoration:underline !important}

+ 10 - 257
static/cranefly/css/cranefly/forum.less

@@ -298,8 +298,7 @@
   }
 }
 
-// New threads list
-.forum-threads-list-new {
+.forum-threads-list {
   background-color: @categoryBackground;
   border: 1px solid @categoryBorder;
   border-radius: @borderRadiusSmall;
@@ -325,14 +324,17 @@
 
 			.thread-icon {
 				float: left;
+				margin-bottom: -1px;
 				height: @threadIconSize;
 				width: @threadIconSize + @fontSizeLarge;
 
-				color: @itemOldColor;
 				font-size: @threadIconSize;
 				text-align: center;
-				text-decoration: none;
-				margin-bottom: -1px;
+
+				a:link, a:active, a:visited, a:hover{
+					color: @itemOldColor;
+					text-decoration: none;
+				}
 			}
 
 			.thread-body {
@@ -530,7 +532,9 @@
 
 			&.thread-new {
 				.thread-icon {
-					color: @itemNewColor;
+					a:link, a:active, a:visited, a:hover {
+						color: @itemNewColor;
+					}
 				}
 
 				.thread-title {
@@ -562,257 +566,6 @@
   }
 }
 
-// Threads list
-.forum-threads-list {
-  background-color: @categoryBackground;
-  border: 1px solid @categoryBorder;
-  border-radius: @borderRadiusSmall;
-  .box-shadow(0px 0px 0px 3px @categoryShadow);
-  margin-bottom: @baseLineHeight;
-
-  .header {
-    background-color: @categoryHeader;
-    border: 1px solid @categoryBorder;
-    border-radius: @borderRadiusSmall @borderRadiusSmall 0px 0px;
-    margin: -1px;
-    margin-bottom: 0px;
-    padding-bottom: 1px;
-    overflow: auto;
-
-    color: @grayLight;
-    font-weight: bold;
-    font-size: @fontSizeSmall;
-
-    .row-fluid {
-      &>div {
-        margin-bottom: 0px;
-        min-height: 1px;
-        padding: @paddingSmall;
-        padding-top: 2px;
-        padding-bottom: 2px;
-      }
-
-      .thread-replies {
-        float: left;
-        width: 106px;
-      }
-
-      .thread-last {
-        float: left;
-      }
-    }
-
-    .check-cell {
-    	padding: 0px;
-
-      label {
-        margin: 0px;
-      }
-    }
-  }
-
-  .thread-row {
-    border-bottom: 1px solid @categoryBorder;
-    height: 38px;
-    overflow: hidden;
-    padding: (@fontSizeSmall - 2px) 0px;
-
-    .row-fluid {
-      &>div {
-        min-height: auto;
-        padding: @paddingSmall;
-        padding-bottom: 0px;
-      }
-    }
-
-    &.thread-last {
-      border-bottom: none;
-
-      &>div {
-        padding-bottom: 1px;
-      }
-    }
-
-    .thread-icon {
-      display: block;
-      float: left;
-      position: relative;
-      bottom: 1px;
-
-      color: @itemOldColor;
-      font-size: @threadIconSize;
-
-      &:hover, &:active {
-      	color: @itemOldColor;
-      	text-decoration: none;
-      }
-    }
-
-    &.thread-new {
-      .thread-icon {
-        color: @itemNewColor;
-      }
-
-      .thread-name {
-        color: @textColor !important;
-      }
-    }
-
-    &.threads-list-empty {
-      height: auto;
-      padding: @paddingLarge;
-
-      font-size: @fontSizeLarge;
-      text-align: center;
-    }
-
-    .thread-name {
-      margin-left: 10px;
-
-      color: lighten(@textColor, 17%);
-      font-size: @baseFontSize + 2px;
-      font-weight: bold;
-    }
-
-    .thread-details, .thread-last-reply {
-      color: @grayLight;
-      line-height: @baseFontSize;
-
-      a:link, a:visited {
-        color: @textColor;
-      }
-    }
-
-    .thread-details {
-      margin-left: @threadIconSize + 7px;
-
-      font-size: @fontSizeMini;
-    }
-
-    .thread-flags {
-      float: right;
-      margin: 0px;
-      position: relative;
-      right: -30px;
-      top: 5px;
-      padding: 0px;
-
-      li {
-        .border-radius(@baseBorderRadius);
-        display: block;
-        float: left;
-        margin-left: 3px;
-        padding: 2px 5px;
-
-        color: @white;
-
-        &.flag-reported {
-          background-color: @flagReported;
-        }
-
-        &.flag-notreviewed {
-          background-color: @flagReviewed;
-        }
-
-        &.flag-announcement {
-          background-color: @flagAnnouncement;
-        }
-
-        &.flag-sticky {
-          background-color: @flagSticky;
-        }
-
-        &.flag-deleted {
-          background-color: @flagDeleted;
-        }
-
-        &.flag-closed {
-          background-color: @flagClosed;
-        }
-      }
-    }
-
-    .thread-activity {
-      border-left: 1px dotted darken(@categoryBackground, 12%);
-      position: relative;
-      bottom: 3px;
-
-      .thread-last-avatar {
-        float: left;
-
-        img {
-          .border-radius(@baseBorderRadius);
-          margin: 0px;
-          margin-right: @baseFontSize;
-          width: 40px;
-          height: 40px;
-        }
-      }
-
-      .thread-replies {
-        float: left;
-        margin-top: -1px;
-        margin-right: @baseFontSize;
-
-        color: @grayLight;
-        font-size: @fontSizeSmall;
-
-        .lead {
-          font-size: @baseFontSize;
-          font-weight: bold;
-          line-height: @baseLineHeight;
-        }
-
-        a:link, a:active, a:visited, a:hover {
-          color: @gray;
-        }
-      }
-
-      .thread-last-reply {
-        border-left: 1px dotted darken(@categoryBackground, 12%);
-        padding-left: @baseFontSize;
-
-      }
-
-      .thread-select {
-        background-color: darken(@categoryBackground, 5%);
-        display: block;
-        float: right;
-        margin: -12px -11px;
-        margin-left: 0px;
-        width: 29px;
-        height: 61px;
-
-        &:hover, &:focus, &:active {
-          background-color: @linkColor;
-        }
-
-        input {
-          margin: 0px;
-          position: relative;
-          right: 2px;
-          top: 26px;
-        }
-      }
-    }
-  }
-
-  .threads-actions {
-    background-color: @bodyBackground;
-    border-top: 1px solid @categoryBorder;
-    border-radius: 0px 0px @borderRadiusSmall @borderRadiusSmall;
-    overflow: auto;
-    padding: 4px;
-
-    color: @grayLight;
-    font-size: @fontSizeSmall;
-
-    form {
-      margin-bottom: 0px;
-    }
-  }
-}
-
 .forum-threads-extra {
   overflow: auto;
 

+ 52 - 31
static/cranefly/css/cranefly/reports.less

@@ -2,49 +2,70 @@
 // ------------------------
 
 .reports-list {
-  .thread-label {
-    overflow: visible;
+  .report-icon {
+    padding-right: @fontSizeLarge;
+    position: relative;
+    bottom: 1px;
+    width: 200px !important;
 
-    .report-label {
-      .border-radius(3px);
-      float: right;
-      padding: 3px 8px;
-      position: relative;
-      right: -32px;
-      bottom: 2px;
+    text-align: right !important;
 
-      color: @white;
-      font-weight: bold;
+    a:link, a:active, a:visited, a:hover {
+      font-size: @fontSizeLarge;
+    }
 
-      &.report-open {
-        background-color: @orange;
-        text-shadow: 0px 1px 0px darken(@orange, 20%);
+    .report-open {
+      &:link, &:active, &:visited, &:hover {
+        color: @red;
       }
+    }
 
-      &.report-resolved {
-        background-color: @green;
-        text-shadow: 0px 1px 0px darken(@green, 20%);
+    .report-resolved {
+      &:link, &:active, &:visited, &:hover {
+        color: @green;
       }
+    }
+  }
+
+  .thread-new {
+    .report-icon {
+      a:link, a:active, a:visited, a:hover {
+        border-radius: 3px;
+        margin: -2px -6px;
+        padding: 2px 6px;
 
-      &.report-bogus {
-        background-color: @gray;
-        text-shadow: 0px 1px 0px darken(@gray, 20%);
+        color: @white !important;
       }
     }
-  }
 
-  .thread-name {
-    .report-id {
-      color: @grayLight !important;
+    .report-open {
+      &:link, &:visited {
+        background-color: @red;
+      }
+
+      &:active, &:hover {
+        background-color: darken(@red, 15%);
+      }
     }
-  }
 
-  .thread-name, .thread-details {
-    margin-left: 0px !important;
-  }
+    .report-resolved {
+      &:link, &:visited {
+        background-color: @green;
+      }
+
+      &:active, &:hover {
+        background-color: darken(@green, 15%);
+      }
+    }
+
+    .report-bogus {
+      &:link, &:visited {
+        background-color: @grayDarker;
+      }
 
-  .thread-icon {
-    display: none !important;
-    float: none;
+      &:active, &:hover {
+        background-color: @grayDark;
+      }
+    }
   }
 }

+ 9 - 9
templates/cranefly/new_threads.html

@@ -13,32 +13,32 @@
 
 <div class="container container-primary">
   {% if threads %}
-  <div class="forum-threads-list-new">
+  <div class="forum-threads-list">
     <ul>
       {% for thread in threads %}
       <li{% if not thread.is_read %} class="thread-new"{% endif %}>
         <div class="thread-icon">
           {% if thread.weight == 2 %}
           {% if thread.is_read %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-last tooltip-top" title="{% trans %}Announcement, click to see last post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-last tooltip-top" title="{% trans %}Announcement, click to see last post{% endtrans %}">
           {% else %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-new tooltip-top" title="{% trans %}Announcement, click to see first unread post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-new tooltip-top" title="{% trans %}Announcement, click to see first unread post{% endtrans %}">
           {% endif %}
             <i class="icon-star{% if thread.is_read %}-empty{% endif %}"></i>
           </a>
           {% elif thread.weight == 1 %}
           {% if thread.is_read %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-last tooltip-top" title="{% trans %}Pinned, click to see last post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-last tooltip-top" title="{% trans %}Pinned, click to see last post{% endtrans %}">
           {% else %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-new tooltip-top" title="{% trans %}Pinned, click to see first unread post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-new tooltip-top" title="{% trans %}Pinned, click to see first unread post{% endtrans %}">
           {% endif %}
             <i class="icon-bookmark{% if thread.is_read %}-empty{% endif %}"></i>
           </a>
           {% else %}
           {% if thread.is_read %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-last tooltip-top" title="{% trans %}Click to see last post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-last tooltip-top" title="{% trans %}Click to see last post{% endtrans %}">
           {% else %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-new tooltip-top" title="{% trans %}Click to see first unread post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-new tooltip-top" title="{% trans %}Click to see first unread post{% endtrans %}">
           {% endif %}
             <i class="icon-circle{% if thread.is_read %}-blank{% endif %}"></i>
           </a>
@@ -47,12 +47,12 @@
         <div class="thread-body">
           <ul class="thread-activity">
             {% if user.is_authenticated() %}
-            {% if thread.replies_reported and acl.threads.can_mod_posts(forum) %}
+            {% if thread.replies_reported and acl.threads.can_mod_posts(thread.forum) %}
             <li class="thread-replies-reported tooltip-top" title="{% trans %}Reported replies{% endtrans %}">
               {{ thread.replies_reported|intcomma }}
             </li>
             {% endif %}
-            {% if thread.replies_moderated and acl.threads.can_approve(forum) %}
+            {% if thread.replies_moderated and acl.threads.can_approve(thread.forum) %}
             <li class="thread-replies-moderated tooltip-top" title="{% trans %}Unreviewed replies{% endtrans %}">
               {{ thread.replies_moderated|intcomma }}
             </li>

+ 9 - 9
templates/cranefly/popular_threads.html

@@ -13,32 +13,32 @@
 
 <div class="container container-primary">
   {% if threads %}
-  <div class="forum-threads-list-new">
+  <div class="forum-threads-list">
     <ul>
       {% for thread in threads %}
       <li{% if not thread.is_read %} class="thread-new"{% endif %}>
         <div class="thread-icon">
           {% if thread.weight == 2 %}
           {% if thread.is_read %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-last tooltip-top" title="{% trans %}Announcement, click to see last post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-last tooltip-top" title="{% trans %}Announcement, click to see last post{% endtrans %}">
           {% else %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-new tooltip-top" title="{% trans %}Announcement, click to see first unread post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-new tooltip-top" title="{% trans %}Announcement, click to see first unread post{% endtrans %}">
           {% endif %}
             <i class="icon-star{% if thread.is_read %}-empty{% endif %}"></i>
           </a>
           {% elif thread.weight == 1 %}
           {% if thread.is_read %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-last tooltip-top" title="{% trans %}Pinned, click to see last post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-last tooltip-top" title="{% trans %}Pinned, click to see last post{% endtrans %}">
           {% else %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-new tooltip-top" title="{% trans %}Pinned, click to see first unread post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-new tooltip-top" title="{% trans %}Pinned, click to see first unread post{% endtrans %}">
           {% endif %}
             <i class="icon-bookmark{% if thread.is_read %}-empty{% endif %}"></i>
           </a>
           {% else %}
           {% if thread.is_read %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-last tooltip-top" title="{% trans %}Click to see last post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-last tooltip-top" title="{% trans %}Click to see last post{% endtrans %}">
           {% else %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-new tooltip-top" title="{% trans %}Click to see first unread post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-new tooltip-top" title="{% trans %}Click to see first unread post{% endtrans %}">
           {% endif %}
             <i class="icon-circle{% if thread.is_read %}-blank{% endif %}"></i>
           </a>
@@ -47,12 +47,12 @@
         <div class="thread-body">
           <ul class="thread-activity">
             {% if user.is_authenticated() %}
-            {% if thread.replies_reported and acl.threads.can_mod_posts(forum) %}
+            {% if thread.replies_reported and acl.threads.can_mod_posts(thread.forum) %}
             <li class="thread-replies-reported tooltip-top" title="{% trans %}Reported replies{% endtrans %}">
               {{ thread.replies_reported|intcomma }}
             </li>
             {% endif %}
-            {% if thread.replies_moderated and acl.threads.can_approve(forum) %}
+            {% if thread.replies_moderated and acl.threads.can_approve(thread.forum) %}
             <li class="thread-replies-moderated tooltip-top" title="{% trans %}Unreviewed replies{% endtrans %}">
               {{ thread.replies_moderated|intcomma }}
             </li>

+ 2 - 2
templates/cranefly/private_threads/changelog.html

@@ -5,7 +5,7 @@
 
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li><a href="{{ url('private_threads') }}">{% trans %}Private Threads{% endtrans %}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
-<li><a href="{{ url('private_thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
+<li><a href="{{ url('private_thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li class="active">{% trans post=post.pk %}Post #{{ post }} Changelog{% endtrans %}
 {%- endblock %}
 
@@ -16,7 +16,7 @@
     <ul class="breadcrumb">
       {{ self.breadcrumb() }}</li>
     </ul>
-    <h1>{% trans post=post.pk %}Post #{{ post }} Changelog{% endtrans %} <small>{{ thread.name|short_string(35) }}</small></h1>
+    <h1>{% trans post=post.pk %}Post #{{ post }} Changelog{% endtrans %} <small>{{ thread.name|short_string(42) }}</small></h1>
     <ul class="unstyled header-stats">
       <li><i class="icon-time"></i> <a href="{{ url('private_thread_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>

+ 1 - 1
templates/cranefly/private_threads/changelog_diff.html

@@ -5,7 +5,7 @@
 
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li><a href="{{ url('private_threads') }}">{% trans %}Private Threads{% endtrans %}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
-<li><a href="{{ url('private_thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
+<li><a href="{{ url('private_thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li><a href="{{ url('private_thread_changelog', thread=thread.pk, slug=thread.slug, post=post.pk) }}">{% trans post=post.pk %}Post #{{ post }} Changelog{% endtrans %}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li class="active">{% trans date=change.date|reltimesince|low %}Edit from {{ date }}{% endtrans %}
 {%- endblock %}

+ 2 - 2
templates/cranefly/private_threads/details.html

@@ -5,7 +5,7 @@
 
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li><a href="{{ url('private_threads') }}">{% trans %}Private Threads{% endtrans %}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
-<li><a href="{{ url('private_thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
+<li><a href="{{ url('private_thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li class="active">{% trans post=post.pk %}Post #{{ post }} Info{% endtrans %}
 {%- endblock %}
 
@@ -16,7 +16,7 @@
     <ul class="breadcrumb">
       {{ self.breadcrumb() }}</li>
     </ul>
-    <h1>{% trans post=post.pk %}Post #{{ post }} Info{% endtrans %} <small>{{ thread.name|short_string(35) }}</small></h1>
+    <h1>{% trans post=post.pk %}Post #{{ post }} Info{% endtrans %} <small>{{ thread.name|short_string(42) }}</small></h1>
     <ul class="unstyled header-stats">
       <li><i class="icon-time"></i> <a href="{{ url('private_thread_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>

+ 3 - 30
templates/cranefly/private_threads/list.html

@@ -34,16 +34,16 @@
     {% endif %}
   </div>
 
-  <div class="forum-threads-list-new">
+  <div class="forum-threads-list">
     {% if threads %}
     <ul>
       {% for thread in threads %}
       <li{% if not thread.is_read %} class="thread-new"{% endif %}>
         <div class="thread-icon">
           {% if thread.is_read %}
-          <a href="{{ url('private_thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-last tooltip-top" title="{% trans %}Click to see last post{% endtrans %}">
+          <a href="{{ url('private_thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-last tooltip-top" title="{% trans %}Click to see last post{% endtrans %}">
           {% else %}
-          <a href="{{ url('private_thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-new tooltip-top" title="{% trans %}Click to see first unread post{% endtrans %}">
+          <a href="{{ url('private_thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-new tooltip-top" title="{% trans %}Click to see first unread post{% endtrans %}">
           {% endif %}
             <i class="icon-circle{% if thread.is_read %}-blank{% endif %}"></i>
           </a>
@@ -55,11 +55,6 @@
               {{ thread.replies_reported|intcomma }}
             </li>
             {% endif %}
-            {% if thread.replies_moderated and acl.threads.can_approve(forum) %}
-            <li class="thread-replies-moderated tooltip-top" title="{% trans %}Unreviewed replies{% endtrans %}">
-              {{ thread.replies_moderated|intcomma }}
-            </li>
-            {% endif %}
             {% if thread.replies %}
             <li class="thread-replies tooltip-top" title="{% trans %}Replies{% endtrans %}">
               {{ thread.replies|intcomma }}
@@ -84,11 +79,6 @@
               {% if settings.avatars_on_threads_list %}<img src="{{ macros.avatar_guest(24) }}" alt="{{ thread.last_poster_name }}" class="user-avatar">{% else %}{{ thread.last_poster_name }}{% endif %}
               {% endif %}
             </li>
-            {% if thread.moderated %}
-            <li class="thread-flag thread-moderated tooltip-top" title="{% trans %}This thread awaits review{% endtrans %}">
-              <i class="icon-remove-circle"></i>
-            </li>
-            {% endif %}
             {% if thread.closed %}
             <li class="thread-flag thread-closed tooltip-top" title="{% trans %}This thread is closed{% endtrans %}">
               <i class="icon-remove-circle"></i>
@@ -144,23 +134,6 @@
 </div>
 {% endblock %}
 
-
-{% macro replies(thread_replies) -%}
-{% trans count=thread_replies, replies=thread_replies|intcomma -%}
-{{ replies }} reply
-{%- pluralize -%}
-{{ replies }} replies
-{%- endtrans %}
-{%- endmacro %}
-
-{% macro thread_starter(thread) -%}
-{% if thread.start_poster_id %}<a href="{{ url('user', user=thread.start_poster_id, username=thread.start_poster_slug) }}" class="user-link">{{ thread.start_poster_name }}</a>{% else %}{{ thread.start_poster_name }}{% endif %}
-{%- endmacro %}
-
-{% macro thread_reply(thread) -%}
-{% 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 %}
-
 {% macro pager() %}
 {% if pagination['total'] > 0 %}
 <div class="pagination pull-left">

+ 2 - 2
templates/cranefly/private_threads/posting.html

@@ -11,7 +11,7 @@
 
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li><a href="{{ url('private_threads') }}">{% trans %}Private Threads{% endtrans %}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
-{% if thread %}<li><a href="{{ url('private_thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>{% endif %}
+{% if thread %}<li><a href="{{ url('private_thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>{% endif %}
 <li class="active">{{ get_title() }}
 {%- endblock %}
 
@@ -22,7 +22,7 @@
     <ul class="breadcrumb">
       {{ self.breadcrumb() }}</li>
     </ul>
-    <h1>{{ get_title() }} <small>{% if thread %}{{ thread.name|short_string(35) }}{% else %}{% trans %}Private Threads{% endtrans %}{% endif %}</small></h1>
+    <h1>{{ get_title() }} <small>{% if thread %}{{ thread.name|short_string(42) }}{% else %}{% trans %}Private Threads{% endtrans %}{% endif %}</small></h1>
     {% if thread %}
     <ul class="unstyled header-stats">
       {{ get_info() }}

+ 1 - 1
templates/cranefly/private_threads/thread.html

@@ -7,7 +7,7 @@
 
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li><a href="{{ url('private_threads') }}">{% trans %}Private Threads{% endtrans %}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
-<li class="active">{{ thread.name|short_string(35) }}
+<li class="active">{{ thread.name|short_string(42) }}
 {%- endblock %}
 
 {% block container %}

+ 2 - 2
templates/cranefly/reports/changelog.html

@@ -5,7 +5,7 @@
 
 {% 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('report', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
+<li><a href="{{ url('report', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li class="active">{% trans post=post.pk %}Post #{{ post }} Changelog{% endtrans %}
 {%- endblock %}
 
@@ -16,7 +16,7 @@
     <ul class="breadcrumb">
       {{ self.breadcrumb() }}</li>
     </ul>
-    <h1>{% trans post=post.pk %}Post #{{ post }} Changelog{% endtrans %} <small>{{ thread.name|short_string(35) }}</small></h1>
+    <h1>{% trans post=post.pk %}Post #{{ post }} Changelog{% endtrans %} <small>{{ thread.name|short_string(42) }}</small></h1>
     <ul class="unstyled header-stats">
       <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>

+ 1 - 1
templates/cranefly/reports/changelog_diff.html

@@ -5,7 +5,7 @@
 
 {% 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('report', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
+<li><a href="{{ url('report', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li><a href="{{ url('report_changelog', thread=thread.pk, slug=thread.slug, post=post.pk) }}">{% trans post=post.pk %}Post #{{ post }} Changelog{% endtrans %}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li class="active">{% trans date=change.date|reltimesince|low %}Edit from {{ date }}{% endtrans %}
 {%- endblock %}

+ 2 - 2
templates/cranefly/reports/details.html

@@ -5,7 +5,7 @@
 
 {% 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('report', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
+<li><a href="{{ url('report', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li class="active">{% trans post=post.pk %}Post #{{ post }} Info{% endtrans %}
 {%- endblock %}
 
@@ -16,7 +16,7 @@
     <ul class="breadcrumb">
       {{ self.breadcrumb() }}</li>
     </ul>
-    <h1>{% trans post=post.pk %}Post #{{ post }} Info{% endtrans %} <small>{{ thread.name|short_string(35) }}</small></h1>
+    <h1>{% trans post=post.pk %}Post #{{ post }} Info{% endtrans %} <small>{{ thread.name|short_string(42) }}</small></h1>
     <ul class="unstyled header-stats">
       <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>

+ 101 - 79
templates/cranefly/reports/list.html

@@ -32,84 +32,126 @@
   </div>
 
   <div class="forum-threads-list reports-list">
-    <div class="header">
-      <div class="row-fluid">
-        <div class="span6 offset2">{% trans %}Report{% endtrans %}</div>
-        <div class="span4 thread-activity">
-          <div class="thread-replies">{% trans %}Activity{% endtrans %}</div>
-          {% if list_form %}
-          <div class="pull-right check-cell">
-            <label class="checkbox"><input type="checkbox" class="checkbox-master"></label>
-          </div>
-          {% endif %}
-        </div>
-      </div>
-    </div>
-    {% for thread in threads %}
-    <div class="thread-row{% if not thread.is_read %} thread-new{% endif %}{% if loop.last %} thread-last{% endif %}">
-      <div class="row-fluid">
-        <div class="span2 thread-label">
+    {% if threads %}
+    <ul>
+      {% for thread in threads %}
+      <li{% if not thread.is_read %} class="thread-new"{% endif %}>
+        <div class="thread-icon report-icon">
           {% 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>
+          {% if thread.is_read %}
+          <a href="{{ url('report_new', thread=thread.pk, slug=thread.slug) }}" class="report-open thread-icon-last tooltip-top" title="{% trans %}Click to see last post{% endtrans %}">
           {% else %}
-          <span class="report-label report-bogus"><i class="icon-remove"></i> {% trans %}Bogus{% endtrans %}</span>
+          <a href="{{ url('report_new', thread=thread.pk, slug=thread.slug) }}" class="report-open thread-icon-new tooltip-top" title="{% trans %}Click to see first unread post{% endtrans %}">
           {% endif %}
-        </div>
-        <div class="span6">
-
-          {% 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>
+            <i class="icon-time"></i> {% trans %}Open{% endtrans %}
+          </a>
+          {% elif thread.weight == 1 %}
+          {% if thread.is_read %}
+          <a href="{{ url('report_new', thread=thread.pk, slug=thread.slug) }}" class="report-resolved thread-icon-last tooltip-top" title="{% trans %}Click to see last post{% endtrans %}">
+          {% else %}
+          <a href="{{ url('report_new', thread=thread.pk, slug=thread.slug) }}" class="report-resolved thread-icon-new tooltip-top" title="{% trans %}Click to see first unread post{% endtrans %}">
           {% endif %}
-
-          <a href="{{ url('report', thread=thread.pk, slug=thread.slug) }}" class="thread-name{% if thread.name|length > 70 %} tooltip-top" title="{{ thread.name }}{% endif %}"><span class="report-id">#{{ thread.pk }}</span> {{ thread.name|short_string(70) }}</a>
-
+            <i class="icon-ok"></i> {% trans %}Resolved{% endtrans %}
+          </a>
+          {% else %}
           {% 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>
+          <a href="{{ url('report_new', thread=thread.pk, slug=thread.slug) }}" class="report-bogus thread-icon-last tooltip-top" title="{% trans %}Click to see last post{% endtrans %}">
           {% 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>
+          <a href="{{ url('report_new', thread=thread.pk, slug=thread.slug) }}" class="report-bogus thread-icon-new tooltip-top" title="{% trans %}Click to see first unread post{% endtrans %}">
+          {% endif %}
+            <i class="icon-remove"></i> {% trans %}Bogus{% endtrans %}
+          </a>
           {% endif %}
-
-          <div class="thread-details">
-            {% if thread.report_forum %}
-            {% trans user=thread_starter(thread), start=thread.start|reldate|low, forum=report_forum(thread) %}Post reported by {{ user }} {{ start }} in forum {{ forum }}{% endtrans %}
-            {% else %}
-            {% trans user=thread_starter(thread), start=thread.start|reldate|low %}Deleted post reported by {{ user }} {{ start }}{% endtrans %}
-            {% endif %}
-          </div>
-
         </div>
-        <div class="span4 thread-activity">
-
-          <div class="thread-replies">
-            <strong class="lead">{{ thread_reply(thread) }}, {{ thread.last|reldate|low }}</strong><br>
-            {{ replies(thread.replies) }}
+        <div class="thread-body">
+          <ul class="thread-activity">
+            {% if user.is_authenticated() %}
+            {% if thread.replies_reported and acl.threads.can_mod_posts(forum) %}
+            <li class="thread-replies-reported tooltip-top" title="{% trans %}Reported replies{% endtrans %}">
+              {{ thread.replies_reported|intcomma }}
+            </li>
+            {% endif %}
+            {% if thread.replies_moderated and acl.threads.can_approve(forum) %}
+            <li class="thread-replies-moderated tooltip-top" title="{% trans %}Unreviewed replies{% endtrans %}">
+              {{ thread.replies_moderated|intcomma }}
+            </li>
+            {% endif %}
+            {% endif %}
+            {% if thread.replies %}
+            <li class="thread-replies tooltip-top" title="{% trans %}Replies{% endtrans %}">
+              {{ thread.replies|intcomma }}
+            </li>
+            {% endif %}
+            <li class="thread-last-reply tooltip-top" title="{% trans last=thread.last|reldate %}Last post {{ last }}{% endtrans %}">
+              <a href="{{ url('report_last', thread=thread.pk, slug=thread.slug) }}">{{ thread.last|relcompact }}</a>
+            </li>
+            {% if thread.start_poster_name != thread.last_poster_name %}
+            <li class="thread-author tooltip-top" title="{% trans username=thread.start_poster_name %}Report by {{ username }}{% endtrans %}">
+              {% if thread.start_poster_id %}
+              <a href="{{ url('user', user=thread.start_poster_id, username=thread.start_poster_name) }}">{% if settings.avatars_on_threads_list %}<img src="{{ thread.start_poster.get_avatar(18) }}" alt="{{ thread.start_poster_name }}" class="user-avatar">{% else %}{{ thread.start_poster_name }}{% endif %}</a>
+              {% else %}
+              {% if settings.avatars_on_threads_list %}<img src="{{ macros.avatar_guest(24) }}" alt="{{ thread.start_poster_name }}" class="user-avatar">{% else %}{{ thread.start_poster_name }}{% endif %}
+              {% endif %}
+            </li>
+            {% endif %}
+            <li class="thread-poster tooltip-top" title="{% if thread.start_poster_name != thread.last_poster_name %}{% trans username=thread.last_poster_name %}Last reply by {{ username }}{% endtrans %}{% else %}{% trans username=thread.last_poster_name %}Report and last post by {{ username }}{% endtrans %}{% endif %}">
+              {% if thread.last_poster_id %}
+              <a href="{{ url('user', user=thread.last_poster_id, username=thread.last_poster_name) }}">{% if settings.avatars_on_threads_list %}<img src="{{ thread.last_poster.get_avatar(18) }}" alt="{{ thread.last_poster_name }}" class="user-avatar">{% else %}{{ thread.last_poster_name }}{% endif %}</a>
+              {% else %}
+              {% if settings.avatars_on_threads_list %}<img src="{{ macros.avatar_guest(24) }}" alt="{{ thread.last_poster_name }}" class="user-avatar">{% else %}{{ thread.last_poster_name }}{% endif %}
+              {% endif %}
+            </li>
+            {% if thread.moderated %}
+            <li class="thread-flag thread-moderated tooltip-top" title="{% trans %}This thread awaits review{% endtrans %}">
+              <i class="icon-remove-circle"></i>
+            </li>
+            {% endif %}
+            {% if thread.closed %}
+            <li class="thread-flag thread-closed tooltip-top" title="{% trans %}This thread is closed{% endtrans %}">
+              <i class="icon-remove-circle"></i>
+            </li>
+            {% endif %}
+            {% if thread.deleted %}
+            <li class="thread-flag thread-deleted tooltip-top" title="{% trans %}This thread is deleted{% endtrans %}">
+              <i class="icon-trash"></i>
+            </li>
+            {% endif %}
+            <li class="thread-forum tooltip-top" title="{% trans %}Report Forum{% endtrans %}">
+              <a href="{{ thread.report_forum.url }}">{{ thread.report_forum }}</a>
+            </li>
+            {% if list_form %}
+            <li class="thread-select">
+              <label class="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>
+            </li>
+            {% endif %}
+          </ul>
+          <div class="thread-title">
+            <a href="{{ url('report', thread=thread.pk, slug=thread.slug) }}">{{ thread.name }}</a>
           </div>
-
-          {% 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>
-          {% endif %}
         </div>
-      </div>
-    </div>
-    {% else %}
-    <div class="thread-row threads-list-empty">
-      {% trans %}There are no reports currently. Whef!{% endtrans %}
-    </div>
-    {% endfor %}
-
+      </li>
+      {% endfor %}
+    </ul>
     {% if list_form %}
     <div class="threads-actions">
       <form id="threads_form" class="form-inline pull-right" action="{{ request_path }}" method="POST">
         <input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}">
+        {% set list_form_context = list_form.list_action.field.widget.get_context(list_form.list_action.html_name, list_form.list_action.value()) %}
+        {% if list_form_context['optgroups'][0][1]|length > 1 %}
         {{ form_theme.field(list_form.list_action, attrs={'class': 'span3'}) }}
         <button type="submit" class="btn btn-danger">{% trans %}Go{% endtrans %}</button>
+        {% else %}
+        <input type="hidden" name="{{ list_form_context.name }}" value="{{ list_form_context['optgroups'][0][1][0][0] }}">
+        <button type="submit" class="btn btn-danger">{{ list_form_context['optgroups'][0][1][0][1] }}</button>
+        {% endif %}
       </form>
     </div>
     {% endif %}
+    {% else %}
+    <div class="threads-list-empty">
+      {% trans %}There are no threads in this forum.{% endtrans %}
+    </div>
+    {% endif %}
   </div>
 
   <div class="forum-threads-extra">
@@ -119,26 +161,6 @@
 </div>
 {% endblock %}
 
-{% macro replies(thread_replies) -%}
-{% trans count=thread_replies, replies=thread_replies|intcomma -%}
-{{ replies }} reply
-{%- pluralize -%}
-{{ replies }} replies
-{%- endtrans %}
-{%- endmacro %}
-
-{% macro thread_starter(thread) -%}
-{% if thread.start_poster_id %}<a href="{{ url('user', user=thread.start_poster_id, username=thread.start_poster_slug) }}" class="user-link">{{ thread.start_poster_name }}</a>{% else %}{{ thread.start_poster_name }}{% endif %}
-{%- endmacro %}
-
-{% macro thread_reply(thread) -%}
-{% 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 %}
-
-{% macro report_forum(thread) -%}
-<a href="{{ thread.report_forum.url }}" class="forum-link">{{ thread.report_forum }}</a>
-{%- endmacro %}
-
 {% macro pager() %}
 {% if pagination['total'] > 0 %}
 <div class="pagination pull-left">

+ 2 - 2
templates/cranefly/reports/posting.html

@@ -7,7 +7,7 @@
 
 {% 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('report', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
+<li><a href="{{ url('report', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li class="active">{{ get_title() }}
 {%- endblock %}
 
@@ -18,7 +18,7 @@
     <ul class="breadcrumb">
       {{ self.breadcrumb() }}</li>
     </ul>
-    <h1>{{ get_title() }} <small>{{ thread.name|short_string(35) }}</small></h1>
+    <h1>{{ get_title() }} <small>{{ thread.name|short_string(42) }}</small></h1>
     <ul class="unstyled header-stats">
       <li><i class="icon-tag"></i> {% if thread.weight == 2 -%}
         {% trans %}Open{% endtrans %}

+ 1 - 1
templates/cranefly/reports/thread.html

@@ -7,7 +7,7 @@
 
 {% 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 class="active">{{ thread.name|short_string(35) }}
+<li class="active">{{ thread.name|short_string(42) }}
 {%- endblock %}
 
 {% block container %}

+ 2 - 2
templates/cranefly/threads/changelog.html

@@ -5,7 +5,7 @@
 
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 {{ macros.parents_list(parents) }}
-<li><a href="{{ url('thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
+<li><a href="{{ url('thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li class="active">{% trans post=post.pk %}Post #{{ post }} Changelog{% endtrans %}
 {%- endblock %}
 
@@ -16,7 +16,7 @@
     <ul class="breadcrumb">
       {{ self.breadcrumb() }}</li>
     </ul>
-    <h1>{% trans post=post.pk %}Post #{{ post }} Changelog{% endtrans %} <small>{{ thread.name|short_string(35) }}</small></h1>
+    <h1>{% trans post=post.pk %}Post #{{ post }} Changelog{% endtrans %} <small>{{ thread.name|short_string(42) }}</small></h1>
     <ul class="unstyled header-stats">
       <li><i class="icon-time"></i> <a href="{{ url('thread_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>

+ 1 - 1
templates/cranefly/threads/changelog_diff.html

@@ -5,7 +5,7 @@
 
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 {{ macros.parents_list(parents) }}
-<li><a href="{{ url('thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
+<li><a href="{{ url('thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li><a href="{{ url('thread_changelog', thread=thread.pk, slug=thread.slug, post=post.pk) }}">{% trans post=post.pk %}Post #{{ post }} Changelog{% endtrans %}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li class="active">{% trans date=change.date|reltimesince|low %}Edit from {{ date }}{% endtrans %}
 {%- endblock %}

+ 2 - 2
templates/cranefly/threads/details.html

@@ -5,7 +5,7 @@
 
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 {{ macros.parents_list(parents) }}
-<li><a href="{{ url('thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
+<li><a href="{{ url('thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li class="active">{% trans post=post.pk %}Post #{{ post }} Info{% endtrans %}
 {%- endblock %}
 
@@ -16,7 +16,7 @@
     <ul class="breadcrumb">
       {{ self.breadcrumb() }}</li>
     </ul>
-    <h1>{% trans post=post.pk %}Post #{{ post }} Info{% endtrans %} <small>{{ thread.name|short_string(35) }}</small></h1>
+    <h1>{% trans post=post.pk %}Post #{{ post }} Info{% endtrans %} <small>{{ thread.name|short_string(42) }}</small></h1>
     <ul class="unstyled header-stats">
       <li><i class="icon-time"></i> <a href="{{ url('thread_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>

+ 2 - 2
templates/cranefly/threads/karmas.html

@@ -5,7 +5,7 @@
 
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 {{ macros.parents_list(parents) }}
-<li><a href="{{ url('thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
+<li><a href="{{ url('thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li class="active">{% trans post=post.pk %}Post #{{ post }} Votes{% endtrans %}
 {%- endblock %}
 
@@ -16,7 +16,7 @@
     <ul class="breadcrumb">
       {{ self.breadcrumb() }}</li>
     </ul>
-    <h1>{% trans post=post.pk %}Post #{{ post }} Votes{% endtrans %} <small>{{ thread.name|short_string(35) }}</small></h1>
+    <h1>{% trans post=post.pk %}Post #{{ post }} Votes{% endtrans %} <small>{{ thread.name|short_string(42) }}</small></h1>
     <ul class="unstyled header-stats">
       <li><i class="icon-time"></i> <a href="{{ url('thread_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>

+ 8 - 23
templates/cranefly/threads/list.html

@@ -111,7 +111,7 @@
     {% endif %}
   </div>
 
-  <div class="forum-threads-list-new">
+  <div class="forum-threads-list">
     {% if threads %}
     <ul>
       {% for thread in threads %}
@@ -119,25 +119,25 @@
         <div class="thread-icon">
           {% if thread.weight == 2 %}
           {% if thread.is_read %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-last tooltip-top" title="{% trans %}Announcement, click to see last post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-last tooltip-top" title="{% trans %}Announcement, click to see last post{% endtrans %}">
           {% else %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-new tooltip-top" title="{% trans %}Announcement, click to see first unread post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-new tooltip-top" title="{% trans %}Announcement, click to see first unread post{% endtrans %}">
           {% endif %}
             <i class="icon-star{% if thread.is_read %}-empty{% endif %}"></i>
           </a>
           {% elif thread.weight == 1 %}
           {% if thread.is_read %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-last tooltip-top" title="{% trans %}Pinned, click to see last post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-last tooltip-top" title="{% trans %}Pinned, click to see last post{% endtrans %}">
           {% else %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-new tooltip-top" title="{% trans %}Pinned, click to see first unread post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-new tooltip-top" title="{% trans %}Pinned, click to see first unread post{% endtrans %}">
           {% endif %}
             <i class="icon-bookmark{% if thread.is_read %}-empty{% endif %}"></i>
           </a>
           {% else %}
           {% if thread.is_read %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-last tooltip-top" title="{% trans %}Click to see last post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-last tooltip-top" title="{% trans %}Click to see last post{% endtrans %}">
           {% else %}
-          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon thread-icon-new tooltip-top" title="{% trans %}Click to see first unread post{% endtrans %}">
+          <a href="{{ url('thread_new', thread=thread.pk, slug=thread.slug) }}" class="thread-icon-new tooltip-top" title="{% trans %}Click to see first unread post{% endtrans %}">
           {% endif %}
             <i class="icon-circle{% if thread.is_read %}-blank{% endif %}"></i>
           </a>
@@ -213,6 +213,7 @@
     <div class="threads-actions">
       <form id="threads_form" class="form-inline pull-right" action="{{ request_path }}" method="POST">
         <input type="hidden" name="{{ csrf_id }}" value="{{ csrf_token }}">
+        {% set list_form_context = list_form.list_action.field.widget.get_context(list_form.list_action.html_name, list_form.list_action.value()) %}
         {% if list_form_context['optgroups'][0][1]|length > 1 %}
         {{ form_theme.field(list_form.list_action, attrs={'class': 'span3'}) }}
         <button type="submit" class="btn btn-danger">{% trans %}Go{% endtrans %}</button>
@@ -274,22 +275,6 @@
 <strong{% if delta < number %} class="stat-increment"{% endif %}>{{ number|intcomma }}</strong>
 {%- endmacro %}
 
-{% macro replies(thread_replies) -%}
-{% trans count=thread_replies, replies=thread_replies|intcomma -%}
-{{ replies }} reply
-{%- pluralize -%}
-{{ replies }} replies
-{%- endtrans %}
-{%- endmacro %}
-
-{% macro thread_starter(thread) -%}
-{% if thread.start_poster_id %}<a href="{{ url('user', user=thread.start_poster_id, username=thread.start_poster_slug) }}" class="user-link">{{ thread.start_poster_name }}</a>{% else %}{{ thread.start_poster_name }}{% endif %}
-{%- endmacro %}
-
-{% macro thread_reply(thread) -%}
-{% 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 %}
-
 {% macro pager() %}
 {% if pagination['total'] > 0 %}
 <div class="pagination pull-left">

+ 2 - 2
templates/cranefly/threads/merge.html

@@ -6,7 +6,7 @@
 
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 {{ macros.parents_list(parents) }}
-<li><a href="{{ url(forum.type, forum=forum.pk, slug=forum.slug) }}">{{ forum.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
+<li><a href="{{ url(forum.type, forum=forum.pk, slug=forum.slug) }}">{{ forum.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li class="active">{% trans %}Merge Threads{% endtrans %}
 {%- endblock %}
 
@@ -17,7 +17,7 @@
     <ul class="breadcrumb">
       {{ self.breadcrumb() }}</li>
     </ul>
-    <h1>{% trans %}Merge Threads{% endtrans %} <small>{{ forum.name|short_string(35) }}</small></h1>
+    <h1>{% trans %}Merge Threads{% endtrans %} <small>{{ forum.name|short_string(42) }}</small></h1>
   </div>
 </div>
 

+ 2 - 2
templates/cranefly/threads/move_posts.html

@@ -6,7 +6,7 @@
 
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 {{ macros.parents_list(parents) }}
-<li><a href="{{ url('thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
+<li><a href="{{ url('thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li class="active">{% trans %}Move Posts{% endtrans %}
 {%- endblock %}
 
@@ -17,7 +17,7 @@
     <ul class="breadcrumb">
       {{ self.breadcrumb() }}</li>
     </ul>
-    <h1>{% trans %}Move Posts{% endtrans %} <small>{{ thread.name|short_string(35) }}</small></h1>
+    <h1>{% trans %}Move Posts{% endtrans %} <small>{{ thread.name|short_string(42) }}</small></h1>
   </div>
 </div>
 

+ 2 - 2
templates/cranefly/threads/move_thread.html

@@ -6,7 +6,7 @@
 
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 {{ macros.parents_list(parents) }}
-<li><a href="{{ url('thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
+<li><a href="{{ url('thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li class="active">{% trans %}Move Thread{% endtrans %}
 {%- endblock %}
 
@@ -17,7 +17,7 @@
     <ul class="breadcrumb">
       {{ self.breadcrumb() }}</li>
     </ul>
-    <h1>{% trans %}Move Thread{% endtrans %} <small>{{ thread.name|short_string(35) }}</small></h1>
+    <h1>{% trans %}Move Thread{% endtrans %} <small>{{ thread.name|short_string(42) }}</small></h1>
   </div>
 </div>
 

+ 2 - 2
templates/cranefly/threads/posting.html

@@ -12,7 +12,7 @@
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 {{ macros.parents_list(parents) }}
 <li><a href="{{ url(forum.type, forum=forum.pk, slug=forum.slug) }}">{{ forum.name }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
-{% if thread %}<li><a href="{{ url('thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>{% endif %}
+{% if thread %}<li><a href="{{ url('thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>{% endif %}
 <li class="active">{{ get_title() }}
 {%- endblock %}
 
@@ -23,7 +23,7 @@
     <ul class="breadcrumb">
       {{ self.breadcrumb() }}</li>
     </ul>
-    <h1>{{ get_title() }} <small>{% if thread %}{{ thread.name|short_string(35) }}{% else %}{{ forum.name }}{% endif %}</small></h1>
+    <h1>{{ get_title() }} <small>{% if thread %}{{ thread.name|short_string(42) }}{% else %}{{ forum.name }}{% endif %}</small></h1>
     {% if thread %}
     <ul class="unstyled header-stats">
       {{ get_info() }}

+ 2 - 2
templates/cranefly/threads/split.html

@@ -6,7 +6,7 @@
 
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 {{ macros.parents_list(parents) }}
-<li><a href="{{ url('thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(35) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
+<li><a href="{{ url('thread', thread=thread.pk, slug=thread.slug) }}">{{ thread.name|short_string(42) }}</a> <span class="divider"><i class="icon-chevron-right"></i></span></li>
 <li class="active">{% trans %}Split Thread{% endtrans %}
 {%- endblock %}
 
@@ -17,7 +17,7 @@
     <ul class="breadcrumb">
       {{ self.breadcrumb() }}</li>
     </ul>
-    <h1>{% trans %}Split Thread{% endtrans %} <small>{{ thread.name }}</small></h1>
+    <h1>{% trans %}Split Thread{% endtrans %} <small>{{ thread.name|short_string(42) }}</small></h1>
   </div>
 </div>
 

+ 1 - 1
templates/cranefly/threads/thread.html

@@ -7,7 +7,7 @@
 
 {% block breadcrumb %}{{ super() }} <span class="divider"><i class="icon-chevron-right"></i></span></li>
 {{ macros.parents_list(parents) }}
-<li class="active">{{ thread.name|short_string(35) }}
+<li class="active">{{ thread.name|short_string(42) }}
 {%- endblock %}
 
 {% block container %}

+ 7 - 7
templates/cranefly/watched.html

@@ -25,32 +25,32 @@
 
   {% if threads %}
   {{ pager() }}
-  <div class="forum-threads-list-new watched-threads">
+  <div class="forum-threads-list watched-threads">
     <ul>
       {% for thread in threads %}
       <li id="watch-{{ loop.index }}"{% if not thread.is_read %} class="thread-new"{% endif %}>
         <div class="thread-icon">
           {% if thread.weight == 2 %}
           {% if thread.is_read %}
-          <a href="{{ thread_url(thread, 'new') }}" class="thread-icon thread-icon-last tooltip-top" title="{% trans %}Announcement, click to see last post{% endtrans %}">
+          <a href="{{ thread_url(thread, 'new') }}" class="thread-icon-last tooltip-top" title="{% trans %}Announcement, click to see last post{% endtrans %}">
           {% else %}
-          <a href="{{ thread_url(thread, 'new') }}" class="thread-icon thread-icon-new tooltip-top" title="{% trans %}Announcement, click to see first unread post{% endtrans %}">
+          <a href="{{ thread_url(thread, 'new') }}" class="thread-icon-new tooltip-top" title="{% trans %}Announcement, click to see first unread post{% endtrans %}">
           {% endif %}
             <i class="icon-star{% if thread.is_read %}-empty{% endif %}"></i>
           </a>
           {% elif thread.weight == 1 %}
           {% if thread.is_read %}
-          <a href="{{ thread_url(thread, 'new') }}" class="thread-icon thread-icon-last tooltip-top" title="{% trans %}Pinned, click to see last post{% endtrans %}">
+          <a href="{{ thread_url(thread, 'new') }}" class="thread-icon-last tooltip-top" title="{% trans %}Pinned, click to see last post{% endtrans %}">
           {% else %}
-          <a href="{{ thread_url(thread, 'new') }}" class="thread-icon thread-icon-new tooltip-top" title="{% trans %}Pinned, click to see first unread post{% endtrans %}">
+          <a href="{{ thread_url(thread, 'new') }}" class="thread-icon-new tooltip-top" title="{% trans %}Pinned, click to see first unread post{% endtrans %}">
           {% endif %}
             <i class="icon-bookmark{% if thread.is_read %}-empty{% endif %}"></i>
           </a>
           {% else %}
           {% if thread.is_read %}
-          <a href="{{ thread_url(thread, 'new') }}" class="thread-icon thread-icon-last tooltip-top" title="{% trans %}Click to see last post{% endtrans %}">
+          <a href="{{ thread_url(thread, 'new') }}" class="thread-icon-last tooltip-top" title="{% trans %}Click to see last post{% endtrans %}">
           {% else %}
-          <a href="{{ thread_url(thread, 'new') }}" class="thread-icon thread-icon-new tooltip-top" title="{% trans %}Click to see first unread post{% endtrans %}">
+          <a href="{{ thread_url(thread, 'new') }}" class="thread-icon-new tooltip-top" title="{% trans %}Click to see first unread post{% endtrans %}">
           {% endif %}
             <i class="icon-circle{% if thread.is_read %}-blank{% endif %}"></i>
           </a>