simple_forum 0.0.2 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/README.rdoc +17 -16
  2. data/app/assets/images/simple_forum/galdomedia-logo.png +0 -0
  3. data/app/assets/javascripts/simple_forum/application.js +5 -1
  4. data/app/assets/javascripts/simple_forum/moderators.js +40 -0
  5. data/app/assets/stylesheets/simple_forum/admin.css +15 -0
  6. data/app/assets/stylesheets/simple_forum/base.css +10 -0
  7. data/app/controllers/simple_forum/admin/base_controller.rb +7 -0
  8. data/app/controllers/simple_forum/admin/categories_controller.rb +70 -0
  9. data/app/controllers/simple_forum/admin/forums_controller.rb +88 -0
  10. data/app/controllers/simple_forum/application_controller.rb +29 -6
  11. data/app/controllers/simple_forum/forums_controller.rb +4 -4
  12. data/app/controllers/simple_forum/posts_controller.rb +2 -2
  13. data/app/controllers/simple_forum/topics_controller.rb +3 -3
  14. data/app/models/simple_forum/forum.rb +2 -10
  15. data/app/models/simple_forum/moderatorship.rb +1 -1
  16. data/app/models/simple_forum/post.rb +3 -3
  17. data/app/models/simple_forum/topic.rb +1 -9
  18. data/app/models/simple_forum/user_activity.rb +68 -61
  19. data/app/views/layouts/simple_forum.html.erb +22 -3
  20. data/app/views/layouts/simple_forum/admin.html.erb +70 -0
  21. data/app/views/simple_forum/admin/categories/_form.html.erb +9 -0
  22. data/app/views/simple_forum/admin/categories/edit.html.erb +18 -0
  23. data/app/views/simple_forum/admin/categories/index.html.erb +45 -0
  24. data/app/views/simple_forum/admin/categories/new.html.erb +17 -0
  25. data/app/views/simple_forum/admin/categories/show.html.erb +35 -0
  26. data/app/views/simple_forum/admin/forums/_form.html.erb +45 -0
  27. data/app/views/simple_forum/admin/forums/_moderator.html.erb +5 -0
  28. data/app/views/simple_forum/admin/forums/edit.html.erb +21 -0
  29. data/app/views/simple_forum/admin/forums/index.html.erb +77 -0
  30. data/app/views/simple_forum/admin/forums/new.html.erb +20 -0
  31. data/app/views/simple_forum/admin/forums/show.html.erb +55 -0
  32. data/app/views/simple_forum/forums/index.html.erb +4 -4
  33. data/app/views/simple_forum/forums/show.html.erb +4 -4
  34. data/app/views/simple_forum/posts/edit.html.erb +4 -10
  35. data/app/views/simple_forum/topics/_post.html.erb +4 -4
  36. data/app/views/simple_forum/topics/new.html.erb +1 -1
  37. data/app/views/simple_forum/topics/show.html.erb +3 -3
  38. data/config/locales/simple_forum.en.yml +130 -0
  39. data/config/locales/simple_forum.pl.yml +1 -0
  40. data/config/routes.rb +8 -0
  41. data/db/migrate/20110330123461_create_simple_forum_user_activities.rb +17 -0
  42. data/lib/generators/simple_forum/install_generator.rb +4 -5
  43. data/lib/generators/simple_forum/views_generator.rb +18 -0
  44. data/lib/generators/templates/simple_forum.rb +28 -24
  45. data/lib/simple_forum.rb +53 -30
  46. data/lib/simple_forum/configuration.rb +39 -0
  47. data/lib/simple_forum/engine.rb +8 -1
  48. data/lib/simple_forum/extensions/user.rb +18 -0
  49. data/lib/simple_forum/version.rb +2 -2
  50. metadata +97 -74
@@ -0,0 +1,45 @@
1
+ <% require 'ostruct' %>
2
+ <% content_for :javascripts, javascript_include_tag('simple_forum/moderators') %>
3
+
4
+ <% content_for :head do %>
5
+ <style type="text/css">
6
+ #search_users_result {
7
+ display: inline-block;
8
+ color: blue;
9
+ }
10
+ </style>
11
+ <% end %>
12
+
13
+ <%= semantic_form_for [:admin, resource], :html => {:class => 'form'} do |f| %>
14
+ <%= f.semantic_errors %>
15
+ <%= f.inputs do %>
16
+ <%= f.input :name %>
17
+ <%= f.input :body %>
18
+ <%= f.input :position %>
19
+ <%= f.input :is_topicable %>
20
+ <%= f.input :category_id, :as => :select, :collection => SimpleForum::Category.all.map { |c| [c.name, c.id] } %>
21
+ <% end %>
22
+ <%= f.inputs f.object.class.human_attribute_name(:moderators) do %>
23
+ <li class="input stringish">
24
+ <%= label_tag 'search_users_input', t('simple_forum.admin/forums.search_users'), :class => 'label' %>
25
+ <%= text_field_tag :user_name_like, "", :id => 'search_users_input', :placeholder => t('simple_forum.admin/forums.search_users', :default => 'Serach users') %>
26
+ <ul id="search_users_result"></ul>
27
+ <script type="text/javascript">
28
+ simple_forum.moderator_template = "<%= escape_javascript(render(:partial => 'moderator', :locals => {:f => f, :moderator => OpenStruct.new(:name => "temp_user_name", :id => "temp_user_id")})) %>";
29
+ simple_forum.user_search_path = "<%= escape_javascript(simple_forum.search_users_admin_forums_path(:format => :json)) %>";
30
+ simple_forum.translations['add_moderator'] = "<%= escape_javascript(t('simple_forum.admin/forums.add_moderator', :default => 'add')) %>";
31
+ </script>
32
+
33
+ <%= f.hidden_field :moderator_ids, :value => nil, :multiple => true %>
34
+ </li>
35
+ <li class="input stringish">
36
+ <ul id="moderators">
37
+ <%= label_tag nil, f.object.class.human_attribute_name(:moderators), :class => 'label' %>
38
+ <% f.object.moderators.each do |moderator| %>
39
+ <%= render :partial => 'moderator', :locals => {:f => f, :moderator => moderator} %>
40
+ <% end %>
41
+ </ul>
42
+ </li>
43
+ <% end %>
44
+ <%= f.actions(:submit) %>
45
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <li>
2
+ <%= moderator.name %>
3
+ <%= f.hidden_field :moderator_ids, :value => moderator.id, :multiple => true %>
4
+ <%= link_to "[#{I18n.t('simple_forum.admin/forums.remove_moderator')}]", "#", :class => 'remove-moderator', :confirm => t('simple_forum.are_you_sure', :default => 'Are you sure?') %>
5
+ </li>
@@ -0,0 +1,21 @@
1
+ <div class="block">
2
+ <div class="secondary-navigation">
3
+ <ul class="wat-cf">
4
+ <li>
5
+ <%= link_to "#{t("web-app-theme.list", :default => "List")}", simple_forum.admin_forums_path %>
6
+ </li>
7
+ <li class="active">
8
+ <%= link_to "#{t("web-app-theme.edit", :default => "Edit")}", simple_forum.edit_admin_forum_path(resource) %>
9
+ </li>
10
+ </ul>
11
+ </div>
12
+ <div class="content">
13
+ <h2 class="title">
14
+ Edit
15
+ </h2>
16
+
17
+ <div class="inner">
18
+ <%= render :partial => "form" %>
19
+ </div>
20
+ </div>
21
+ </div>
@@ -0,0 +1,77 @@
1
+ <div class="block">
2
+ <div class="secondary-navigation">
3
+ <ul class="wat-cf">
4
+ <li class="active">
5
+ <%= link_to "#{t("web-app-theme.list", :default => "List")}", simple_forum.admin_forums_path %>
6
+ </li>
7
+ <li>
8
+ <%= link_to "#{t("web-app-theme.new", :default => "New")}", simple_forum.new_admin_forum_path %>
9
+ </li>
10
+ </ul>
11
+ </div>
12
+ <div class="content">
13
+ <h2 class="title">
14
+ <%= SimpleForum::Forum.model_name.human(:count => 3) %>
15
+ </h2>
16
+
17
+ <div class="inner">
18
+ <table class="table">
19
+ <thead>
20
+ <tr>
21
+ <th>ID</th>
22
+ <th><%= SimpleForum::Forum.human_attribute_name :name %></th>
23
+ <th><%= SimpleForum::Forum.human_attribute_name :moderators %></th>
24
+ <th><%= SimpleForum::Forum.human_attribute_name :topics_size %></th>
25
+ <th><%= SimpleForum::Forum.human_attribute_name :posts_size %></th>
26
+ <th><%= SimpleForum::Forum.human_attribute_name :recent_post %></th>
27
+ <th class="last">&nbsp;</th>
28
+ </tr>
29
+ </thead>
30
+ <tbody>
31
+ <% @forums_by_category.each_pair do |c, forums| %>
32
+ <tr>
33
+ <th colspan="6" style="text-align: center; font-weight: bolder;">
34
+ <%= content_tag(:span, c.try(:name) || "No category", :title => c.try(:body)) %>
35
+ </th>
36
+ <th class="last">&nbsp;</th>
37
+ </tr>
38
+ <% forums.each do |f| %>
39
+ <tr>
40
+ <td><%= f.id %></td>
41
+ <td><%= f.name %></td>
42
+ <td><%= f.moderators.map { |m| h(m.name) }.join(', ').html_safe %></td>
43
+ <td><%= number_with_delimiter f.topics.size %></td>
44
+ <td><%= number_with_delimiter f.posts.size %></td>
45
+ <td>
46
+ <% if f.recent_post %>
47
+ <%= content_tag :span, :title => l(f.recent_post.created_at) do %>
48
+ <%= link_to "#{time_ago_in_words(f.recent_post.created_at)} #{t('simple_forum.ago', :default => 'ago')}",
49
+ simple_forum.forum_topic_path(f, f.recent_post.topic, :page => f.recent_post.topic.last_page, :anchor => "post-#{f.recent_post.id}")
50
+ %>
51
+ <% end %>
52
+ <br/>
53
+ <cite>
54
+ <%= t('simple_forum.by', :default => 'by') %>
55
+ <%= f.recent_post.user.name %>
56
+ </cite>
57
+ <% end %>
58
+ </td>
59
+ <td class="last">
60
+ <%= link_to t("web-app-theme.show", :default => "Show"), simple_forum.admin_forum_path(f) %>
61
+ |
62
+ <%= link_to t("web-app-theme.edit", :default => "Edit"), simple_forum.edit_admin_forum_path(f) %>
63
+ |
64
+ <%= link_to t("web-app-theme.delete", :default => "Delete"), simple_forum.admin_forum_path(f), :method => :delete, :confirm => t('simple_forum.are_you_sure', :default => 'Are you sure?') %>
65
+
66
+ </td>
67
+ </tr>
68
+ <% end %>
69
+ <% end %>
70
+ </tbody>
71
+ </table>
72
+ </div>
73
+ </div>
74
+
75
+ </div>
76
+
77
+
@@ -0,0 +1,20 @@
1
+ <div class="block">
2
+ <div class="secondary-navigation">
3
+ <ul class="wat-cf">
4
+ <li>
5
+ <%= link_to "#{t("web-app-theme.list", :default => "List")}", simple_forum.admin_forums_path %>
6
+ </li>
7
+ <li class="active">
8
+ <%= link_to "#{t("web-app-theme.new", :default => "New")}", simple_forum.new_admin_forum_path %>
9
+ </li>
10
+ </ul>
11
+ </div>
12
+ <div class="content">
13
+ <h2 class="title">
14
+ New
15
+ </h2>
16
+ <div class="inner">
17
+ <%= render :partial => "form" %>
18
+ </div>
19
+ </div>
20
+ </div>
@@ -0,0 +1,55 @@
1
+ <div class="block">
2
+ <div class="secondary-navigation">
3
+ <ul class="wat-cf">
4
+ <li>
5
+ <%= link_to "#{t("web-app-theme.list", :default => "List")}", simple_forum.admin_forums_path %>
6
+ </li>
7
+ <li>
8
+ <%= link_to "#{t("web-app-theme.edit", :default => "Edit")}", simple_forum.edit_admin_forum_path(resource) %>
9
+ </li>
10
+ </ul>
11
+ </div>
12
+ <div class="content">
13
+ <h2 class="title">
14
+ <%= SimpleForum::Forum.model_name.human %>
15
+ </h2>
16
+
17
+ <div class="inner">
18
+ <p>
19
+ <strong><%= resource.class.human_attribute_name :name %></strong>:
20
+ <%= resource.name %>
21
+ </p>
22
+
23
+ <p>
24
+ <strong><%= resource.class.human_attribute_name :body %></strong>:
25
+ <%= simple_format(resource.body) %>
26
+ </p>
27
+
28
+ <p>
29
+ <strong><%= resource.class.human_attribute_name :position %></strong>:
30
+ <%= resource.position %>
31
+ </p>
32
+
33
+ <p>
34
+ <strong><%= resource.class.human_attribute_name :is_topicable %></strong>:
35
+ <%= resource.is_topicable %>
36
+ </p>
37
+
38
+ <p>
39
+ <strong><%= resource.class.human_attribute_name :category %></strong>:
40
+ <%= resource.category.try(:name) %>
41
+ </p>
42
+
43
+ <div>
44
+ <strong><%= resource.class.human_attribute_name :moderators %></strong>:
45
+ <ul>
46
+ <% resource.moderators.each do |moderator| %>
47
+ <li>
48
+ <%= moderator.name %>
49
+ </li>
50
+ <% end %>
51
+ </ul>
52
+ </div>
53
+ </div>
54
+ </div>
55
+ </div>
@@ -1,5 +1,5 @@
1
1
  <div id="breadcrumbs">
2
- <%= link_to SimpleForum.root_application_name, root_path %>
2
+ <%= link_to SimpleForum.main_application_name, main_app.root_path %>
3
3
  &gt;
4
4
  <%= 'Forum' %>
5
5
  </div>
@@ -34,10 +34,10 @@
34
34
  <% c.forums.each do |f| %>
35
35
  <tr>
36
36
  <td class="icon-cell">
37
- <% if f.recent_activity?(authenticated_user) %>
38
- <%= image_tag('simple_forum/forumNewPosts.gif', :alt => t('simple_forum.new_posts_present'), :title => t('simple_forum.new_posts_present')) %>
37
+ <% if simple_forum_recent_activity?(f) %>
38
+ <%= image_tag('simple_forum/forumNewPosts.gif', :alt => t('simple_forum.new_posts_present', :default => 'New posts'), :title => t('simple_forum.new_posts_present', :default => 'New posts')) %>
39
39
  <% else %>
40
- <%= image_tag('simple_forum/forumNoNewPosts.gif', :alt => t('simple_forum.new_posts_absent'), :title => t('simple_forum.new_posts_absent')) %>
40
+ <%= image_tag('simple_forum/forumNoNewPosts.gif', :alt => t('simple_forum.new_posts_absent', :default => 'No new posts'), :title => t('simple_forum.new_posts_absent', :default => 'No new posts')) %>
41
41
  <% end %>
42
42
  </td>
43
43
  <td class="forum-cell">
@@ -1,5 +1,5 @@
1
1
  <div id="breadcrumbs">
2
- <%= link_to SimpleForum.root_application_name, root_path %>
2
+ <%= link_to SimpleForum.main_application_name, main_app.root_path %>
3
3
  &gt;
4
4
  <%= link_to 'Forum', simple_forum.root_path %>
5
5
  &gt;
@@ -35,10 +35,10 @@
35
35
  <% @topics.each do |t| %>
36
36
  <tr>
37
37
  <td class="icon-cell">
38
- <% if t.recent_activity?(authenticated_user) %>
39
- <%= image_tag('/simple_forum_engine/images/forumNewPosts.gif', :alt => t('simple_forum.new_posts_present'), :title => t('simple_forum.new_posts_present')) %>
38
+ <% if simple_forum_recent_activity?(t) %>
39
+ <%= image_tag('simple_forum/forumNewPosts.gif', :alt => t('simple_forum.new_posts_present', :default => 'New posts'), :title => t('simple_forum.new_posts_present', :default => 'New posts')) %>
40
40
  <% else %>
41
- <%= image_tag('/simple_forum_engine/images/forumNoNewPosts.gif', :alt => t('simple_forum.new_posts_absent'), :title => t('simple_forum.new_posts_absent')) %>
41
+ <%= image_tag('simple_forum/forumNoNewPosts.gif', :alt => t('simple_forum.new_posts_absent', :default => 'No new posts'), :title => t('simple_forum.new_posts_absent', :default => 'No new posts')) %>
42
42
  <% end %>
43
43
  </td>
44
44
  <td class="topic-cell">
@@ -1,12 +1,6 @@
1
- <%= content_for :stylesheets do %>
2
- <%= stylesheet_link_tag "/simple_forum_engine/markitup/skins/markitup/style",
3
- "/simple_forum_engine/markitup/sets/bbcode/style" %>
4
- <% end %>
5
- <%= content_for :javascripts do %>
6
- <%= javascript_include_tag "/simple_forum_engine/markitup/jquery.markitup.js",
7
- "/simple_forum_engine/markitup/sets/bbcode/set.js",
8
- "/simple_forum_engine/javascripts/markitup.js" %>
9
- <% end %>
1
+ <% content_for :stylesheets, stylesheet_link_tag('simple_forum/markitup') %>
2
+ <% content_for :javascripts, javascript_include_tag("simple_forum/markitup") %>
3
+
10
4
  <% content_for :head do %>
11
5
  <script type="text/javascript">
12
6
  var post_preview_path = "<%= simple_forum.preview_forum_topic_posts_path(@forum, @topic) %>";
@@ -14,7 +8,7 @@
14
8
  <% end %>
15
9
 
16
10
  <div id="breadcrumbs">
17
- <%= link_to SimpleForum.root_application_name, root_path %>
11
+ <%= link_to SimpleForum.main_application_name, main_app.root_path %>
18
12
  &gt;
19
13
  <%= link_to 'Forum', simple_forum.root_path %>
20
14
  &gt;
@@ -30,10 +30,10 @@
30
30
  <%= link_to t('.edit'), simple_forum.edit_forum_topic_post_path(@forum, @topic, post) %>
31
31
  <% end %>
32
32
  <% if post.deletable_by?(authenticated_user, @forum.moderated_by?(authenticated_user)) %>
33
- <%= link_to t('.delete'), simple_forum.delete_forum_topic_post_path(@forum, @topic, post), :method => :delete, :confirm => t('simple_forum.are_you_sure') %>
33
+ <%= link_to t('.delete'), simple_forum.delete_forum_topic_post_path(@forum, @topic, post), :method => :delete, :confirm => t('simple_forum.are_you_sure', :default => 'Are you sure?') %>
34
34
  <% end %>
35
- <% if @topic.is_open? %>
36
- <%= link_to t('.cite'), "#", :onclick => "$('#new_post_form textarea').val('[quote=\"#{post.user.name}\"]\\n#{escape_javascript(post.body)}\\n[/quote]'); return false;" %>
35
+ <% if @topic.is_open? && !post.is_deleted? %>
36
+ <%= link_to t('.cite'), "#new_post_form", :onclick => "$('#new_post_form textarea').val('#{escape_javascript("[quote=\"#{post.user.name}\"]\n#{post.body}\n[/quote]")}'); return false;", :class => 'cite-post' %>
37
37
  <% end %>
38
38
  <% end %>
39
39
  </td>
@@ -70,4 +70,4 @@
70
70
  </tr>
71
71
  </table>
72
72
  </td>
73
- </tr>
73
+ </tr>
@@ -1,5 +1,5 @@
1
1
  <div id="breadcrumbs">
2
- <%= link_to SimpleForum.root_application_name, root_path %>
2
+ <%= link_to SimpleForum.main_application_name, main_app.root_path %>
3
3
  &gt;
4
4
  <%= link_to 'Forum', simple_forum.root_path %>
5
5
  &gt;
@@ -8,7 +8,7 @@
8
8
  <% end %>
9
9
 
10
10
  <div id="breadcrumbs">
11
- <%= link_to SimpleForum.root_application_name, root_path %>
11
+ <%= link_to SimpleForum.main_application_name, main_app.root_path %>
12
12
  &gt;
13
13
  <%= link_to 'Forum', simple_forum.root_path %>
14
14
  &gt;
@@ -22,9 +22,9 @@
22
22
  <% if user_authenticated? && @forum.is_moderator?(authenticated_user) %>
23
23
  <li>
24
24
  <% if @topic.is_open? %>
25
- <%= link_to t('.close_topic'), simple_forum.close_forum_topic_path(@forum, @topic), :method => :post, :confirm => t('simple_forum.are_you_sure') %>
25
+ <%= link_to t('.close_topic'), simple_forum.close_forum_topic_path(@forum, @topic), :method => :post, :confirm => t('simple_forum.are_you_sure', :default => 'Are you sure?') %>
26
26
  <% else %>
27
- <%= link_to t('.open_topic'), simple_forum.open_forum_topic_path(@forum, @topic), :method => :post, :confirm => t('simple_forum.are_you_sure') %>
27
+ <%= link_to t('.open_topic'), simple_forum.open_forum_topic_path(@forum, @topic), :method => :post, :confirm => t('simple_forum.are_you_sure', :default => 'Are you sure?') %>
28
28
  <% end %>
29
29
  </li>
30
30
  <% end %>
@@ -0,0 +1,130 @@
1
+ en:
2
+ simple_forum:
3
+ by: "by"
4
+ at: "at"
5
+ ago: "ago"
6
+ new_posts_present: "New posts"
7
+ new_posts_absent: "No new posts"
8
+ are_you_sure: "Are you sure?"
9
+ sign_in: "Sign in"
10
+ sign_up: "Sign up"
11
+ forum_administration: "Forum administration"
12
+
13
+ forums:
14
+ index:
15
+ title: "Forum"
16
+ forums: "Forum"
17
+ topics: "Topics"
18
+ posts: "Posts"
19
+ last_post: "Recent post"
20
+ moderated_by: "Moderated by"
21
+
22
+ show:
23
+ forum: "Forum"
24
+ topics: "Topics"
25
+ replies: "Replies"
26
+ views: "Views"
27
+ last_post: "Recent post"
28
+ new_topic: "New topic"
29
+
30
+ topics:
31
+ show:
32
+ topic_is_closed: "Topic is closed!"
33
+ you_have_to_be_signed_in_to_create_post: "You need to sign in to create new posts"
34
+ close_topic: "Close topic"
35
+ open_topic: "Open topic"
36
+
37
+ post:
38
+ edit: "Edit"
39
+ delete: "Delete"
40
+ cite: "Cite"
41
+ user_joined: "Joined"
42
+ post_sent: "Sent at"
43
+ user_posts_count: "Posts count"
44
+ post_deleted: "Post deleted"
45
+ post_edited: "Last edited"
46
+
47
+ admin/forums:
48
+ search_users: "Search users"
49
+ add_moderator: "Add"
50
+ remove_moderator: "Remove"
51
+
52
+ new:
53
+ new_topic: "New topic"
54
+
55
+ posts:
56
+ edit:
57
+ post_edit: "Edit post"
58
+
59
+ controllers:
60
+ you_are_not_permitted_to_perform_this_action: "You are not permitted to perform this action"
61
+ you_have_to_be_signed_in_to_perform_this_action: "You have to be signed in to perform this action"
62
+
63
+ topics:
64
+ topic_opened: "Topic was successfully opened"
65
+ topic_already_opened: "Topic already opened"
66
+ topic_closed: "Topic was successfully closed"
67
+ topic_already_closed: "Topic already closed"
68
+ topic_created: "Topic was successfully created"
69
+
70
+ posts:
71
+ post_created: "Post was successfully created"
72
+ post_updated: "Post was successfully updated"
73
+ post_deleted: "Post was successfully deleted"
74
+ post_cant_be_deleted: "You can't delete this post"
75
+ post_cant_be_edited: "You can't edit this post"
76
+
77
+ validations:
78
+ forum_must_be_topicable: "Topics can't be created"
79
+
80
+ activerecord:
81
+ models:
82
+ simple_forum:
83
+ forum: "Forum"
84
+ topic: "Topic"
85
+ post: "Post"
86
+ category: "Category"
87
+
88
+ attributes:
89
+ simple_forum/forum:
90
+ name: "Name"
91
+ body: "Body"
92
+ is_topicable: "Is topicable?"
93
+ position: "Position"
94
+ topics_count: "Topics count"
95
+ posts_count: "Posts count"
96
+ moderators: "Moderators"
97
+ moderator_ids: "Moderators"
98
+ category: "Category"
99
+ category_id: "Category"
100
+
101
+ simple_forum/category:
102
+ name: "Name"
103
+ position: "Position"
104
+ body: "Body"
105
+ forums: "Forums"
106
+
107
+ simple_forum/topic:
108
+ title: "Topic"
109
+ body: "Post content"
110
+ forum: "Forum"
111
+ forum_id: "Forum"
112
+ user: "User"
113
+ is_closed: "Closed?"
114
+ posts_count: "Posts count"
115
+ views_count: "Views count"
116
+
117
+ simple_forum/post:
118
+ body: "Content"
119
+ topic: "Topic"
120
+ topic_id: "Topic"
121
+ forum: "Forum"
122
+ forum_id: "Forum"
123
+ user: "User"
124
+ user_id: "User"
125
+ deleted_by: "Deleted by"
126
+ deleted_by_id: "Deleted by"
127
+ deleted_at: "Deleted at"
128
+ edited_by: "Edited by"
129
+ edited_by_id: "Edited by"
130
+ edited_at: "Edited at"