commontator 4.3.0 → 4.4.1
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|