commontator 4.3.0 → 4.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +18 -11
- data/app/assets/stylesheets/commontator/comments.css +24 -3
- data/app/controllers/commontator/application_controller.rb +8 -3
- data/app/controllers/commontator/comments_controller.rb +13 -11
- data/app/controllers/commontator/subscriptions_controller.rb +2 -2
- data/app/controllers/commontator/threads_controller.rb +2 -2
- data/app/mailers/commontator/subscriptions_mailer.rb +5 -8
- data/app/models/commontator/comment.rb +37 -19
- data/app/models/commontator/thread.rb +18 -20
- data/app/views/commontator/comments/_body.html.erb +1 -1
- data/app/views/commontator/comments/_show.html.erb +10 -9
- data/app/views/commontator/comments/_votes.html.erb +11 -6
- data/app/views/commontator/comments/delete.js.erb +1 -1
- data/app/views/commontator/comments/update.js.erb +1 -1
- data/app/views/commontator/subscriptions_mailer/comment_created.html.erb +2 -2
- data/app/views/commontator/threads/_show.html.erb +3 -2
- data/config/initializers/commontator.rb +117 -96
- data/config/locales/{en.yml → commontator/en.yml} +15 -14
- data/lib/commontator.rb +61 -17
- data/lib/commontator/acts_as_commontable.rb +4 -0
- data/lib/commontator/acts_as_commontator.rb +16 -0
- data/lib/commontator/engine.rb +3 -0
- data/lib/commontator/shared_helper.rb +7 -19
- data/lib/commontator/version.rb +1 -1
- data/lib/tasks/commontator_tasks.rake +5 -2
- data/spec/app/mailers/commontator/subscriptions_mailer_spec.rb +2 -2
- data/spec/app/models/commontator/comment_spec.rb +19 -0
- data/spec/dummy/config/application.rb +1 -0
- data/spec/dummy/config/initializers/commontator.rb +3 -5
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/test.log +120400 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/72b63dddbc5c995f79af8e3c94904fd9 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/a77b1a9223d168112e1705c29220116f +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/d2244ccef8e05bb993f75715af0344cc +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/decb63cac838a5314aa0c22a979f5ac9 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/f721383d531f067d82b071e14aed7a92 +0 -0
- data/spec/lib/commontator/acts_as_commontable_spec.rb +1 -0
- data/spec/lib/commontator/acts_as_commontator_spec.rb +4 -0
- data/spec/lib/commontator/commontator_config_spec.rb +6 -4
- data/spec/test_helper.rb +0 -6
- metadata +3 -9
- data/app/helpers/commontator/comments_helper.rb +0 -17
- data/app/helpers/commontator/threads_helper.rb +0 -7
- data/spec/app/helpers/commontator/comments_helper_spec.rb +0 -29
- data/spec/app/helpers/commontator/threads_helper_spec.rb +0 -13
@@ -2,15 +2,16 @@
|
|
2
2
|
# comment
|
3
3
|
# user
|
4
4
|
%>
|
5
|
-
|
5
|
+
|
6
|
+
<% creator = comment.creator
|
7
|
+
name = creator.commontator_name
|
8
|
+
link = creator.commontator_link(main_app)
|
9
|
+
avatar = creator.commontator_avatar(self) %>
|
10
|
+
|
6
11
|
<div id="comment_<%= comment.id.to_s %>_div" class="comment">
|
7
12
|
<div id="comment_<%= comment.id.to_s %>_top_div" class="comment_div">
|
8
13
|
<span id="comment_<%= comment.id.to_s %>_commontator_span" class="comment_commontator">
|
9
|
-
|
10
|
-
<%= link_to commontator_name(comment.creator), main_app.polymorphic_path(comment.creator) %>
|
11
|
-
<% else %>
|
12
|
-
<%= commontator_name comment.creator %>
|
13
|
-
<% end %>
|
14
|
+
<%= link.blank? ? name : link_to(name, link) %>
|
14
15
|
</span>
|
15
16
|
<span id="comment_<%= comment.id.to_s %>_actions_span" class="comment_actions">
|
16
17
|
<%= render :partial => 'commontator/comments/actions',
|
@@ -20,7 +21,7 @@
|
|
20
21
|
</div>
|
21
22
|
<div id="comment_<%= comment.id.to_s %>_middle_div" class="comment_div">
|
22
23
|
<span id="comment_<%= comment.id.to_s %>_avatar_span" class="comment_avatar">
|
23
|
-
<%=
|
24
|
+
<%= avatar %>
|
24
25
|
</span>
|
25
26
|
<span id="comment_<%= comment.id.to_s %>_votes_span" class="comment_votes">
|
26
27
|
<%= render :partial => 'commontator/comments/votes',
|
@@ -34,12 +35,12 @@
|
|
34
35
|
</div>
|
35
36
|
<div id="comment_<%= comment.id.to_s %>_bottom_div" class="comment_div">
|
36
37
|
<span id="comment_<%= comment.id.to_s %>_created_timestamp_span" class="comment_timestamp">
|
37
|
-
<%= created_timestamp
|
38
|
+
<%= comment.created_timestamp %>
|
38
39
|
</span>
|
39
40
|
<br/>
|
40
41
|
<span id="comment_<%= comment.id.to_s %>_updated_timestamp_span" class="comment_timestamp">
|
41
42
|
<% if comment.is_modified? %>
|
42
|
-
<%= updated_timestamp
|
43
|
+
<%= comment.updated_timestamp %>
|
43
44
|
<% end %>
|
44
45
|
</span>
|
45
46
|
</div>
|
@@ -6,8 +6,12 @@
|
|
6
6
|
<% if comment.can_be_voted_on? %>
|
7
7
|
<% can_vote = comment.can_be_voted_on_by?(user) %>
|
8
8
|
<% vote = comment.get_vote_by(user) %>
|
9
|
+
<% comment_voting = comment.thread.config.comment_voting.to_sym %>
|
9
10
|
|
10
|
-
|
11
|
+
<% if comment_voting == :ld || comment_voting == :l %>
|
12
|
+
<% vtype = (comment_voting == :ld) ? 'upvote' : 'like' %>
|
13
|
+
<span id="comment_<%= comment.id %>_<%= vtype %>_span"
|
14
|
+
class="comment_<%= vtype %>">
|
11
15
|
<% if can_vote && (vote.blank? || !vote.vote_flag) %>
|
12
16
|
<%= form_tag commontator.upvote_comment_path(comment),
|
13
17
|
:method => :put,
|
@@ -28,15 +32,15 @@
|
|
28
32
|
<%= image_tag "commontator/upvote_hover.png" %>
|
29
33
|
<% end %>
|
30
34
|
</span>
|
35
|
+
<% end %>
|
31
36
|
|
32
37
|
<span id="comment_<%= comment.id %>_vote_count_span" class="comment_vote_count">
|
33
|
-
<%
|
34
|
-
|
35
|
-
|
36
|
-
<p>+<%= comment.upvotes.size %>/-<%= comment.downvotes.size %></p>
|
37
|
-
<% end %>
|
38
|
+
<% config = comment.thread.config %>
|
39
|
+
<%= config.voting_text_proc.call(config.comment_voting,
|
40
|
+
comment.upvotes.size, comment.downvotes.size) %>
|
38
41
|
</span>
|
39
42
|
|
43
|
+
<% if comment_voting == :ld %>
|
40
44
|
<span id="comment_<%= comment.id %>_downvote_span" class="comment_downvote">
|
41
45
|
<% if can_vote && (vote.blank? || vote.vote_flag) %>
|
42
46
|
<%= form_tag commontator.downvote_comment_path(comment),
|
@@ -58,4 +62,5 @@
|
|
58
62
|
<%= image_tag "commontator/downvote_hover.png" %>
|
59
63
|
<% end %>
|
60
64
|
</span>
|
65
|
+
<% end %>
|
61
66
|
<% end %>
|
@@ -2,7 +2,7 @@ $("#comment_<%= @comment.id.to_s %>_body_div").html("<%= escape_javascript(
|
|
2
2
|
render :partial => 'body', :locals => {:comment => @comment}) %>");
|
3
3
|
|
4
4
|
$("#comment_<%= @comment.id.to_s %>_updated_timestamp_span").html("<%= escape_javascript(
|
5
|
-
|
5
|
+
@comment.updated_timestamp) %>");
|
6
6
|
|
7
7
|
$("#comment_<%= @comment.id.to_s %>_actions_span").html("<%= escape_javascript(
|
8
8
|
render :partial => 'actions',
|
@@ -2,6 +2,6 @@ $("#comment_<%= @comment.id.to_s %>_body_div").html("<%= escape_javascript(
|
|
2
2
|
render :partial => 'body', :locals => {:comment => @comment}) %>");
|
3
3
|
|
4
4
|
$("#comment_<%= @comment.id.to_s %>_updated_timestamp_span").html("<%= escape_javascript(
|
5
|
-
|
5
|
+
@comment.updated_timestamp) %>");
|
6
6
|
|
7
7
|
<%= javascript_proc %>
|
@@ -1,10 +1,10 @@
|
|
1
|
-
<h4><%= t 'commontator.
|
1
|
+
<h4><%= t 'commontator.email.comment_created.body',
|
2
2
|
:creator_name => @creator_name,
|
3
3
|
:commontable_name => @commontable_name %></h4>
|
4
4
|
|
5
5
|
<%= render :partial => 'commontator/comments/body',
|
6
6
|
:locals => { :comment => @comment } %>
|
7
7
|
|
8
|
-
<p><%= t 'commontator.
|
8
|
+
<p><%= t 'commontator.email.thread_link_html',
|
9
9
|
:commontable_url => @commontable_url,
|
10
10
|
:commontable_name => @commontable_name %></p>
|
@@ -7,7 +7,8 @@
|
|
7
7
|
<% can_edit = thread.can_be_edited_by?(user) %>
|
8
8
|
|
9
9
|
<span id="thread_<%= thread.id.to_s %>_header_span" class="thread_header">
|
10
|
-
<%= t "commontator.thread.status.#{thread.is_closed? ? 'closed' : 'open'}"
|
10
|
+
<%= t "commontator.thread.status.#{thread.is_closed? ? 'closed' : 'open'}",
|
11
|
+
:closer_name => thread.closer.try(:commontator_name) %>
|
11
12
|
</span>
|
12
13
|
|
13
14
|
<span id="thread_<%= thread.id.to_s %>_actions_span" class="thread_actions">
|
@@ -41,7 +42,7 @@
|
|
41
42
|
</div>
|
42
43
|
|
43
44
|
<% if thread.is_closed? %>
|
44
|
-
<p><%= t 'commontator.thread.status.
|
45
|
+
<p><%= t 'commontator.thread.status.cannot_post' %></p>
|
45
46
|
<% elsif !user %>
|
46
47
|
<p><%= t 'commontator.require_login' %>.</p>
|
47
48
|
<% else %>
|
@@ -1,5 +1,8 @@
|
|
1
1
|
# Change the settings below to suit your needs
|
2
2
|
# All settings are initially set to their default values
|
3
|
+
|
4
|
+
# Note: Do not "return" from procs
|
5
|
+
# Use "next" instead
|
3
6
|
Commontator.configure do |config|
|
4
7
|
# Engine Configuration
|
5
8
|
|
@@ -8,148 +11,166 @@ Commontator.configure do |config|
|
|
8
11
|
# Default: lambda { |controller| controller.current_user }
|
9
12
|
config.current_user_proc = lambda { |controller| controller.current_user }
|
10
13
|
|
11
|
-
# Proc called with the view_context
|
14
|
+
# Proc called with the current view_context as argument
|
12
15
|
# Returns a string to be appended to all JavaScript responses from Commontator
|
13
16
|
# Can be used, for example, to display/clear Rails error messages
|
14
17
|
# Objects visible in view templates can be accessed through
|
15
18
|
# the view_context object (for example, view_context.flash)
|
16
19
|
# However, the view_context does not include the main application's helpers
|
17
20
|
# Default: lambda { |view_context| '$("#error_explanation").remove();' }
|
18
|
-
config.javascript_proc = lambda { |view_context|
|
21
|
+
config.javascript_proc = lambda { |view_context|
|
22
|
+
'$("#error_explanation").remove();' }
|
23
|
+
|
19
24
|
|
20
25
|
|
21
26
|
# User (acts_as_commontator) Configuration
|
22
27
|
|
23
28
|
# Proc called with a user as argument
|
24
|
-
# Returns the user's name
|
25
|
-
# Important: change this to return
|
29
|
+
# Returns the user's display name
|
30
|
+
# Important: change this to return actual names or usernames
|
26
31
|
# Default: lambda { |user| t('commontator.anonymous') } (all users are Anonymous)
|
27
32
|
config.user_name_proc = lambda { |user| I18n.t('commontator.anonymous') }
|
28
33
|
|
29
|
-
#
|
30
|
-
# If enabled, the link will point to the comment creator's 'show' page
|
31
|
-
# Default: false
|
32
|
-
config.user_name_clickable = false
|
33
|
-
|
34
|
-
# Proc called with a user as argument
|
35
|
-
# Returns the user's email address
|
36
|
-
# Used in mailers
|
37
|
-
# Default: lambda { |user| user.email }
|
38
|
-
config.user_email_proc = lambda { |user| user.email }
|
39
|
-
|
40
|
-
# Proc called with a user as argument
|
41
|
-
# Returns true iif the user is an admin (a moderator for all threads)
|
42
|
-
# Moderators can delete other users' comments and close threads
|
43
|
-
# Default: lambda { |user| false } (no admins)
|
44
|
-
config.user_admin_proc = lambda { |user| false }
|
45
|
-
|
46
|
-
# Proc called with a user and the view_context object as arguments
|
34
|
+
# Proc called with a user and the current view_context as arguments
|
47
35
|
# Returns an HTML image tag containing the user's avatar image
|
48
36
|
# The commontator_gravatar_image_tag helper takes a user object,
|
49
37
|
# a border size, and an options hash for gravatar
|
50
38
|
# See available options at http://en.gravatar.com/site/implement/images/)
|
51
|
-
# Default: lambda { |user, view_context|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
39
|
+
# Default: lambda { |user, view_context|
|
40
|
+
# view_context.commontator_gravatar_image_tag(
|
41
|
+
# user, 1, :s => 60, :d => 'mm') }
|
42
|
+
config.user_avatar_proc = lambda { |user, view_context|
|
43
|
+
view_context.commontator_gravatar_image_tag(
|
44
|
+
user, 1, :s => 60, :d => 'mm') }
|
45
|
+
|
46
|
+
# Proc called with a user and a mailer object as arguments
|
47
|
+
# If the mailer argument is nil, the email is for internal use only and
|
48
|
+
# this method should always return the user's email, no matter what
|
49
|
+
# If the mailer argument is not nil, then an actual email will be sent to the
|
50
|
+
# address returned; you can prevent it from being sent by checking the
|
51
|
+
# arguments and returning a blank string, if appropriate
|
52
|
+
# Default: lambda { |user, mailer| user.email }
|
53
|
+
config.user_email_proc = lambda { |user, mailer| user.email }
|
54
|
+
|
55
|
+
# Proc called with a user and the current view_context as arguments
|
56
|
+
# Returns a link to the user's page
|
57
|
+
# If anything non-blank is returned, the user's name in comments
|
58
|
+
# will become a hyperlink pointing to this
|
59
|
+
# The main application's routes can be accessed through the main_app object
|
60
|
+
# Default: lambda { |user, main_app| '' } (no link)
|
61
|
+
config.user_link_proc = lambda { |user, main_app| '' }
|
62
|
+
|
59
63
|
|
60
64
|
|
61
65
|
# Thread/Commontable (acts_as_commontable) Configuration
|
62
66
|
|
63
|
-
# Proc called with a mailer as argument
|
67
|
+
# Proc called with a mailer object as argument
|
64
68
|
# Returns the address emails are sent 'from'
|
65
69
|
# Important: Change this to at least match your domain name
|
66
|
-
# Default:
|
67
|
-
# lambda { |mailer| 'no-reply@example.com' }
|
70
|
+
# Default: lambda { |mailer| 'no-reply@example.com' }
|
68
71
|
config.email_from_proc = lambda { |mailer| 'no-reply@example.com' }
|
69
72
|
|
70
|
-
#
|
71
|
-
#
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
# Default: false
|
76
|
-
config.auto_subscribe_on_comment = false
|
77
|
-
|
78
|
-
# Whether users can edit their own comments
|
79
|
-
# Default: true
|
80
|
-
config.can_edit_own_comments = true
|
81
|
-
|
82
|
-
# Whether users can edit their own comments
|
83
|
-
# after someone posted a newer comment
|
84
|
-
# Default: false
|
85
|
-
config.can_edit_old_comments = false
|
86
|
-
|
87
|
-
# Whether users can delete their own comments
|
88
|
-
# Default: true
|
89
|
-
config.can_delete_own_comments = true
|
90
|
-
|
91
|
-
# Whether users can delete their own comments
|
92
|
-
# after someone posted a newer comment
|
93
|
-
# Default: false
|
94
|
-
config.can_delete_old_comments = false
|
73
|
+
# Proc called with a thread and a user as arguments
|
74
|
+
# Returns true iif the user should be allowed to read that thread
|
75
|
+
# Note: can be called with a user object that is false or nil if not logged in
|
76
|
+
# Default: lambda { |thread, user| true } (anyone can read any thread)
|
77
|
+
config.thread_read_proc = lambda { |thread, user| true }
|
95
78
|
|
96
|
-
#
|
97
|
-
#
|
98
|
-
|
79
|
+
# Proc called with a thread and a user as arguments
|
80
|
+
# Returns true iif the user is a moderator for that thread
|
81
|
+
# Moderators can delete other users' comments and close threads
|
82
|
+
# If you want global moderators, make this proc true for them
|
83
|
+
# Note: moderators must "acts_as_commontator" too (like other users)
|
84
|
+
# Default: lambda { |thread, user| false } (no moderators)
|
85
|
+
config.thread_moderator_proc = lambda { |thread, user| false }
|
86
|
+
|
87
|
+
# Whether users can subscribe to threads to receive activity email notifications
|
88
|
+
# Valid options:
|
89
|
+
# :n (no subscriptions)
|
90
|
+
# :a (automatically subscribe when you comment; cannot do it manually)
|
91
|
+
# :m (manual subscriptions only)
|
92
|
+
# :b (both automatic, when commenting, and manual)
|
93
|
+
# Default: :m
|
94
|
+
config.thread_subscription = :m
|
99
95
|
|
100
96
|
# Whether users can vote on other users' comments
|
101
|
-
#
|
102
|
-
#
|
103
|
-
#
|
104
|
-
|
105
|
-
|
106
|
-
#
|
107
|
-
#
|
108
|
-
#
|
109
|
-
|
97
|
+
# Valid options:
|
98
|
+
# :n (no voting)
|
99
|
+
# :l (likes - requires acts_as_votable gem)
|
100
|
+
# :ld (likes/dislikes - requires acts_as_votable gem)
|
101
|
+
# Not yet implemented:
|
102
|
+
# :s (star ratings)
|
103
|
+
# :r (reputation system)
|
104
|
+
# Note: you can format how the votes are displayed by modifying the locale file
|
105
|
+
# Default: :n
|
106
|
+
config.comment_voting = :n
|
107
|
+
|
108
|
+
# This proc is called with the value of config.comment_voting as an argument,
|
109
|
+
# as well as pos and neg
|
110
|
+
# pos is the number of likes or the rating or the reputation
|
111
|
+
# neg is the number of dislikes, if applicable, or 0 otherwise
|
112
|
+
# Returns the text to be displayed in between the voting buttons
|
113
|
+
# Default: lambda { |comment_voting, pos, neg| "%+d" % (pos - neg) }
|
114
|
+
config.voting_text_proc = lambda { |comment_voting, pos, neg|
|
115
|
+
"%+d" % (pos - neg) }
|
110
116
|
|
111
117
|
# What order to use for comments
|
112
|
-
# Valid
|
118
|
+
# Valid options:
|
113
119
|
# :e (earliest comment first)
|
114
120
|
# :l (latest comment first)
|
115
121
|
# :ve (highest voted first; earliest first if tied)
|
116
122
|
# :vl (highest voted first; latest first if tied)
|
117
|
-
# Default: :e
|
118
|
-
config.
|
123
|
+
# Default: :e
|
124
|
+
config.comment_order = :e
|
119
125
|
|
120
|
-
# Whether users can
|
121
|
-
#
|
122
|
-
|
126
|
+
# Whether users can edit their own comments
|
127
|
+
# Valid options:
|
128
|
+
# :a (always)
|
129
|
+
# :l (only if it's the latest comment)
|
130
|
+
# :n (never)
|
131
|
+
# Default: :l
|
132
|
+
config.comment_editing = :l
|
123
133
|
|
124
|
-
# Whether
|
125
|
-
#
|
126
|
-
#
|
127
|
-
|
134
|
+
# Whether users can delete their own comments
|
135
|
+
# Valid options:
|
136
|
+
# :a (always)
|
137
|
+
# :l (only if it's the latest comment)
|
138
|
+
# :n (never)
|
139
|
+
# Note: moderators can always delete any comment
|
140
|
+
# Default: :l
|
141
|
+
config.comment_deletion = :l
|
128
142
|
|
129
|
-
#
|
130
|
-
#
|
131
|
-
|
132
|
-
# Default: lambda { |thread, user| true } (anyone can read threads even if not logged in)
|
133
|
-
config.can_read_thread_proc = lambda { |thread, user| true }
|
143
|
+
# Whether moderators can edit other users' comments
|
144
|
+
# Default: false
|
145
|
+
config.moderators_can_edit_comments = false
|
134
146
|
|
135
|
-
#
|
136
|
-
#
|
137
|
-
#
|
138
|
-
#
|
139
|
-
#
|
140
|
-
config.
|
147
|
+
# Whether to hide deleted comments completely or show a placeholder message
|
148
|
+
# that indicates when a comment was deleted in a thread
|
149
|
+
# (moderators will always see the placeholder;
|
150
|
+
# the content of the comment will be hidden from all users with either option)
|
151
|
+
# Default: false (show placeholder message)
|
152
|
+
config.hide_deleted_comments = false
|
153
|
+
|
154
|
+
# If set to true, threads closed by moderators will be invisible to normal users
|
155
|
+
# (moderators can still see them)
|
156
|
+
# Default: false (normal users can still read closed threads)
|
157
|
+
config.hide_closed_threads = false
|
141
158
|
|
142
159
|
# Proc called with the commontable object as argument
|
143
160
|
# Returns the name by which the commontable object will be called in email messages
|
144
161
|
# If you have multiple commontable models, you may want to pass this
|
145
162
|
# configuration value as an argument to acts_as_commontable in each one
|
146
|
-
# Default: lambda { |commontable|
|
147
|
-
|
163
|
+
# Default: lambda { |commontable|
|
164
|
+
# "#{commontable.class.name} ##{commontable.id}" }
|
165
|
+
config.commontable_name_proc = lambda { |commontable|
|
166
|
+
"#{commontable.class.name} ##{commontable.id}" }
|
148
167
|
|
149
168
|
# Proc called with main_app and a commontable object as arguments
|
150
169
|
# Return the url that contains the commontable's thread (to be used in the subscription email)
|
151
|
-
# The application's routes can be accessed
|
152
|
-
# Default: lambda { |
|
170
|
+
# The main application's routes can be accessed through the main_app object
|
171
|
+
# Default: lambda { |commontable, main_app|
|
172
|
+
# main_app.polymorphic_url(commontable) }
|
153
173
|
# (defaults to the commontable's show url)
|
154
|
-
config.commontable_url_proc = lambda { |
|
174
|
+
config.commontable_url_proc = lambda { |commontable, main_app|
|
175
|
+
main_app.polymorphic_url(commontable) }
|
155
176
|
end
|
@@ -19,29 +19,29 @@
|
|
19
19
|
# To learn more, please read the Rails Internationalization guide
|
20
20
|
# available at http://guides.rubyonrails.org/i18n.html.
|
21
21
|
|
22
|
+
---
|
22
23
|
en:
|
23
24
|
activerecord:
|
24
25
|
attributes:
|
25
|
-
commontator/comment:
|
26
|
+
commontator/comment:
|
26
27
|
body: Comment
|
27
28
|
creator: Creator
|
28
29
|
editor: Editor
|
29
30
|
thread: Discussion
|
30
|
-
commontator/subscription:
|
31
|
+
commontator/subscription:
|
31
32
|
subscriber: Subscriber
|
32
33
|
thread: Discussion
|
33
|
-
commontator/thread:
|
34
|
+
commontator/thread:
|
34
35
|
commontable: Commontable
|
35
|
-
models:
|
36
|
+
models:
|
36
37
|
commontator/comment: Comment
|
37
38
|
commontator/subscription: Subscription
|
38
39
|
commontator/thread: Discussion
|
39
|
-
time:
|
40
|
-
formats:
|
41
|
-
commontator: "%b %d %Y at %I:%M%p %Z"
|
42
40
|
commontator:
|
41
|
+
anonymous: Anonymous
|
43
42
|
comment:
|
44
43
|
actions:
|
44
|
+
cancel: Cancel
|
45
45
|
confirm_delete: "Are you sure you want to delete this comment?"
|
46
46
|
create: "Post Comment"
|
47
47
|
delete: Delete
|
@@ -49,7 +49,6 @@ en:
|
|
49
49
|
new: "New Comment"
|
50
50
|
undelete: Undelete
|
51
51
|
update: "Modify Comment"
|
52
|
-
cancel: Cancel
|
53
52
|
errors:
|
54
53
|
already_deleted: "This comment has already been deleted."
|
55
54
|
create: "This comment could not be posted because:"
|
@@ -60,12 +59,13 @@ en:
|
|
60
59
|
created_at: "Posted on %{created_at}."
|
61
60
|
deleted_by: "Comment deleted by %{deleter_name}."
|
62
61
|
updated_at: "Last modified by %{editor_name} on %{updated_at}."
|
63
|
-
|
62
|
+
email:
|
64
63
|
comment_created:
|
65
64
|
body: "%{creator_name} commented on %{commontable_name}:"
|
66
65
|
subject: "%{creator_name} posted a comment on %{commontable_name}"
|
67
|
-
thread_link_html: "<a href
|
66
|
+
thread_link_html: "<a href=\"%{commontable_url}\">Click here</a> to view all comments on %{commontable_name}."
|
68
67
|
undisclosed_recipients: "Undisclosed Recipients"
|
68
|
+
require_login: "You must login before you can post a comment."
|
69
69
|
subscription:
|
70
70
|
actions:
|
71
71
|
confirm_unsubscribe: "Are you sure you want to unsubscribe from this discussion?"
|
@@ -84,8 +84,9 @@ en:
|
|
84
84
|
already_closed: "This discussion has already been closed."
|
85
85
|
not_closed: "This discussion is not closed."
|
86
86
|
status:
|
87
|
-
|
88
|
-
|
87
|
+
cannot_post: "New comments cannot be posted at this time."
|
88
|
+
closed: "Comments (Closed by %{closer_name})"
|
89
89
|
open: Comments
|
90
|
-
|
91
|
-
|
90
|
+
time:
|
91
|
+
formats:
|
92
|
+
commontator: "%b %d %Y at %I:%M%p %Z"
|