commontator 4.0.2 → 4.1.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.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -5
  3. data/app/assets/stylesheets/commontator/comments.css +16 -5
  4. data/app/assets/stylesheets/commontator/comments.css~ +98 -0
  5. data/app/controllers/commontator/application_controller.rb +6 -3
  6. data/app/controllers/commontator/application_controller.rb~ +30 -0
  7. data/app/controllers/commontator/threads_controller.rb +2 -0
  8. data/app/controllers/commontator/threads_controller.rb~ +44 -0
  9. data/app/helpers/commontator/threads_helper.rb +1 -8
  10. data/app/helpers/commontator/threads_helper.rb~ +11 -0
  11. data/app/mailers/commontator/subscriptions_mailer.rb +2 -4
  12. data/app/mailers/commontator/subscriptions_mailer.rb~ +50 -0
  13. data/app/models/commontator/comment.rb +23 -19
  14. data/app/models/commontator/comment.rb~ +106 -0
  15. data/app/models/commontator/thread.rb +10 -10
  16. data/app/models/commontator/thread.rb~ +124 -0
  17. data/app/views/commontator/comments/_show.html.erb +36 -34
  18. data/app/views/commontator/comments/_show.html.erb~ +47 -0
  19. data/app/views/commontator/comments/_votes.html.erb +6 -2
  20. data/app/views/commontator/comments/_votes.html.erb~ +61 -0
  21. data/app/views/commontator/comments/delete.js.erb +2 -2
  22. data/app/views/commontator/comments/delete.js.erb~ +17 -0
  23. data/app/views/commontator/comments/update.js.erb +2 -2
  24. data/app/views/commontator/comments/update.js.erb~ +7 -0
  25. data/app/views/commontator/subscriptions_mailer/comment_created.html.erb +2 -2
  26. data/app/views/commontator/subscriptions_mailer/comment_created.html.erb~ +6 -0
  27. data/app/views/commontator/threads/_show.html.erb +3 -7
  28. data/app/views/commontator/threads/_show.html.erb~ +58 -0
  29. data/config/initializers/commontator.rb +52 -47
  30. data/config/initializers/commontator.rb~ +176 -0
  31. data/lib/commontator.rb +6 -7
  32. data/lib/commontator.rb~ +61 -0
  33. data/lib/commontator/controller_includes.rb +1 -3
  34. data/lib/commontator/controller_includes.rb~ +22 -0
  35. data/lib/commontator/shared_helper.rb +3 -8
  36. data/lib/commontator/shared_helper.rb~ +37 -0
  37. data/lib/commontator/version.rb +1 -1
  38. data/lib/commontator/version.rb~ +3 -0
  39. data/spec/app/controllers/commontator/comments_controller_spec.rb +64 -45
  40. data/spec/app/controllers/commontator/comments_controller_spec.rb~ +580 -0
  41. data/spec/app/controllers/commontator/subscriptions_controller_spec.rb +3 -3
  42. data/spec/app/controllers/commontator/subscriptions_controller_spec.rb~ +99 -0
  43. data/spec/app/controllers/commontator/threads_controller_spec.rb +15 -9
  44. data/spec/app/controllers/commontator/threads_controller_spec.rb~ +126 -0
  45. data/spec/app/helpers/commontator/application_helper_spec.rb +1 -1
  46. data/spec/app/helpers/commontator/application_helper_spec.rb~ +9 -0
  47. data/spec/app/helpers/commontator/threads_helper_spec.rb +1 -5
  48. data/spec/app/helpers/commontator/threads_helper_spec.rb~ +13 -0
  49. data/spec/app/models/commontator/comment_spec.rb +4 -3
  50. data/spec/app/models/commontator/comment_spec.rb~ +62 -0
  51. data/spec/dummy/config/application.rb +1 -1
  52. data/spec/dummy/config/application.rb~ +27 -0
  53. data/spec/dummy/config/initializers/commontator.rb +67 -55
  54. data/spec/dummy/config/initializers/commontator.rb~ +176 -0
  55. data/spec/dummy/config/initializers/commontator2.rb~ +169 -0
  56. data/spec/dummy/db/test.sqlite3 +0 -0
  57. data/spec/dummy/log/test.log +84489 -0
  58. data/spec/dummy/tmp/cache/assets/test/sprockets/02d4b791eb831cf2057bf4703a1218d1 +0 -0
  59. data/spec/dummy/tmp/cache/assets/test/sprockets/0f196a1a50363b0a076ec6e1ee5417f6 +0 -0
  60. data/spec/dummy/tmp/cache/assets/test/sprockets/a41c8be5379abec3c0d0d98e2f0d5609 +0 -0
  61. data/spec/dummy/tmp/cache/assets/test/sprockets/e1f674c11941d62aac1764ef3a7134e4 +0 -0
  62. data/spec/dummy/tmp/cache/assets/test/sprockets/e85565206c3e5fdf9dfeb367c85557b1 +0 -0
  63. data/spec/lib/commontator/commontable_config_spec.rb +1 -1
  64. data/spec/lib/commontator/commontable_config_spec.rb~ +26 -0
  65. data/spec/lib/commontator/commontator_config_spec.rb +5 -5
  66. data/spec/lib/commontator/commontator_config_spec.rb~ +26 -0
  67. data/spec/lib/commontator_spec.rb +6 -4
  68. data/spec/lib/commontator_spec.rb~ +28 -0
  69. data/spec/test_helper.rb +4 -4
  70. data/spec/test_helper.rb~ +37 -0
  71. metadata +46 -2
@@ -3,7 +3,7 @@ require File.expand_path('../boot', __FILE__)
3
3
  require 'rails/all'
4
4
 
5
5
  Bundler.require(*Rails.groups)
6
- require "commontator"
6
+ require 'commontator'
7
7
 
8
8
  module Dummy
9
9
  class Application < Rails::Application
@@ -0,0 +1,27 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ require 'rails/all'
4
+
5
+ Bundler.require(*Rails.groups)
6
+ require "commontator"
7
+
8
+ module Dummy
9
+ class Application < Rails::Application
10
+ # Settings in config/environments/* take precedence over those specified here.
11
+ # Application configuration should go into files in config/initializers
12
+ # -- all .rb files in that directory are automatically loaded.
13
+
14
+ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
15
+ # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
16
+ # config.time_zone = 'Central Time (US & Canada)'
17
+
18
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
19
+ # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
20
+ # config.i18n.default_locale = :de
21
+
22
+ config.generators do |g|
23
+ g.test_framework :mini_test, :spec => true, :fixture => false
24
+ end
25
+ end
26
+ end
27
+
@@ -1,12 +1,12 @@
1
1
  # Change the settings below to suit your needs
2
2
  # All settings are initially set to their default values
3
3
  Commontator.configure do |config|
4
-
5
4
  # Engine Configuration
6
5
 
7
- # Name of the ApplicationController helper method that returns the current user
8
- # Default: 'current_user'
9
- config.current_user_method = 'current_user'
6
+ # Proc that is passed the current controller as argument
7
+ # Returns the current user
8
+ # Default: lambda { |controller| controller.current_user }
9
+ config.current_user_proc = lambda { |controller| controller.current_user }
10
10
 
11
11
  # Proc that is called after any javascript runs (e.g. to display/clear flash messages)
12
12
  # It is passed the view_context object (self from the view template), so you should be able to
@@ -14,36 +14,35 @@ Commontator.configure do |config|
14
14
  # However, be aware that it does not have access to the main application's helpers
15
15
  # Should return a string containing JS to be appended to all Commontator JS responses
16
16
  # Default: lambda { |view| '$("#error_explanation").remove();' }
17
- config.javascript_proc = lambda { |view| 'Dummy Javascript' }
17
+ config.javascript_proc = lambda { |view| '' }
18
18
 
19
19
 
20
20
  # User (acts_as_commontator) Configuration
21
-
22
- # The name used if the user's name cannot be retrieved
23
- # Default: 'Anonymous'
24
- config.user_missing_name = 'Anonymous'
25
21
 
26
22
  # Whether the comment creator's name is clickable in the comment view
27
- # If enabled, the link will point to the comment creator's show page
23
+ # If enabled, the link will point to the comment creator's 'show' page
28
24
  # Default: false
29
25
  config.user_name_clickable = false
30
26
 
31
- # The method that returns the user's email address
32
- # Default: 'email'
33
- config.user_email_method = 'email'
27
+ # Proc called with user as argument
28
+ # Returns the user's name
29
+ # Default: lambda { |user| 'Anonymous' } (all users are Anonymous)
30
+ config.user_name_proc = lambda { |user| 'Anonymous' }
34
31
 
35
- # The method that returns the user's name
36
- # Default: '' (use user_missing_name)
37
- config.user_name_method = ''
32
+ # Proc called with user as argument
33
+ # Returns the user's email address
34
+ # Used in the subscription mailer
35
+ # Default: lambda { |user| user.email }
36
+ config.user_email_proc = lambda { |user| user.email }
38
37
 
39
- # Proc called with user as argument that returns true if the user is an admin
40
- # Admins can always delete other users' comments and close threads
41
- # Note: user can be nil
38
+ # Proc called with user as argument
39
+ # Returns true iif the user is an admin
40
+ # Admins can delete other users' comments and close threads
42
41
  # Default: lambda { |user| false } (no admins)
43
- config.user_admin_proc = lambda { |user| user.try(:is_admin) }
42
+ config.user_admin_proc = lambda { |user| user.is_admin }
44
43
 
45
- # Proc called with user as argument that returns true
46
- # if the user should receive subscription emails
44
+ # Proc called with user as argument
45
+ # Returns true iif the user should receive subscription emails
47
46
  # Default: lambda { |user| true } (always receive subscription emails)
48
47
  config.subscription_email_enable_proc = lambda { |user| true }
49
48
 
@@ -62,16 +61,17 @@ Commontator.configure do |config|
62
61
  # Default: 'posted'
63
62
  config.comment_create_verb_past = 'posted'
64
63
 
65
- # What a commontable is called in your application
66
- # If you have multiple commontable models,
67
- # you might want to pass this configuration value
68
- # as an argument to acts_as_commontable in each one
69
- # Default: 'commontable'
70
- config.commontable_name = 'dummy model'
64
+ # Verb used when editing comments (present)
65
+ # Default: 'modify'
66
+ config.comment_edit_verb_present = 'modify'
67
+
68
+ # Verb used when editing comments (past)
69
+ # Default: 'modified'
70
+ config.comment_edit_verb_past = 'modified'
71
71
 
72
72
  # The format of the timestamps used by Commontator
73
- # Default: '%b %d %Y, %I:%M %p'
74
- config.timestamp_format = '%b %d %Y, %I:%M %p'
73
+ # Default: '%b %d %Y at %I:%M %p'
74
+ config.timestamp_format = '%b %d %Y at %I:%M %p'
75
75
 
76
76
  # Whether admins can edit other users' comments
77
77
  # Default: false
@@ -109,56 +109,68 @@ Commontator.configure do |config|
109
109
  # Default: false
110
110
  config.can_vote_on_comments = true
111
111
 
112
+ # Whether to display upvotes and downvotes
113
+ # combined or separately
114
+ # Default: true
115
+ config.combine_upvotes_and_downvotes = true
116
+
112
117
  # Whether comments should be ordered by vote score
113
118
  # instead of by order posted
114
119
  # Default: false
115
120
  config.comments_ordered_by_votes = false
116
121
 
117
- # Whether users can read threads closed by admins
122
+ # Whether users can read threads closed by moderators
118
123
  # Default: true
119
124
  config.closed_threads_are_readable = true
120
125
 
121
- # Whether comments deleted by admins can be seen
122
- # (the content will still be hidden)
126
+ # Whether to show that comments deleted by a moderator actually existed
127
+ # (the content will be hidden either way)
123
128
  # Default: true
124
129
  config.deleted_comments_are_visible = true
125
130
 
126
- # The method which returns the commontable's id, sent to users in email messages
127
- # Default: 'id'
128
- config.commontable_id_method = 'id'
129
-
130
131
  # Proc called with thread and user as arguments
131
- # If it returns true, that user is a moderator for that particular thread
132
- # and is given admin-like capabilities for that thread only
133
- # Note: user can be nil
134
- # Default: lambda { |thread, user| false } (no thread-specific moderators)
135
- config.can_edit_thread_proc = lambda { |thread, user| user.try(:can_edit) }
132
+ # Returns true iif the user should be allowed to read that thread
133
+ # Note: can be called with a user object that is false or nil if not logged in
134
+ # Default: lambda { |thread, user| true } (anyone can read threads even if not logged in)
135
+ config.can_read_thread_proc = lambda { |thread, user| user && user.can_read }
136
136
 
137
137
  # Proc called with thread and user as arguments
138
- # If it returns true, that user is allowed to read that thread
139
- # Note: user can be nil
140
- # Default: lambda { |thread, user| true } (no read restrictions)
141
- config.can_read_thread_proc = lambda { |thread, user| user.try(:can_read) }
142
-
143
- # Proc that returns the commontable url that contains the thread
144
- # (defaults to the commontable show url)
145
- # Main application's routes can be accessed using main_app object
138
+ # Returns true iif the user is a moderator for that particular thread
139
+ # and can delete users' comments in the thread or close it
140
+ # Default: lambda { |thread, user| false } (no thread-specific moderators)
141
+ config.can_edit_thread_proc = lambda { |thread, user| user.can_edit }
142
+
143
+ # Proc called with the commontable object as argument
144
+ # Returns the name by which the commontable object will be called in email messages
145
+ # If you have multiple commontable models, you may want to pass this
146
+ # configuration value as an argument to acts_as_commontable in each one
147
+ # Default: lambda { |commontable| "#{commontable.class.name} ##{commontable.id}" }
148
+ config.commontable_name_proc = lambda { |commontable| "#{commontable.class.name} ##{commontable.id}" }
149
+
150
+ # Proc called with main_app and commontable objects as arguments
151
+ # Return the url that contains the commontable's thread to be used in the subscription email
152
+ # The application's routes can be accessed using the main_app object
146
153
  # Default: lambda { |main_app, commontable| main_app.polymorphic_url(commontable) }
154
+ # (defaults to the commontable's show url)
147
155
  config.commontable_url_proc = lambda { |main_app, commontable| main_app.polymorphic_url(commontable) }
148
-
149
- # Proc that returns the subscription email 'from' address
156
+
157
+ # Proc called with params from the subscription mailer as arguments
158
+ # Returns the subscription email 'from' address
159
+ # Available params can be seen in the subscription mailer
150
160
  # Default:
151
161
  # lambda { |params| 'no-reply@example.com' }
152
162
  config.subscription_email_from_proc = lambda { |params| 'no-reply@example.com' }
153
163
 
154
- # Proc that returns the subscription email 'subject' string
164
+ # Proc called with params from the subscription mailer as arguments
165
+ # Returns the subscription email 'subject' string
166
+ # Available params can be seen in the subscription mailer
155
167
  # Default:
156
168
  # lambda do |params|
157
169
  # "#{params[:creator_name]} #{params[:config].comment_create_verb_past} a " + \
158
- # "#{params[:config].comment_name} on #{params[:commontable_name]} #{params[:commontable_id]}"
170
+ # "#{params[:config].comment_name} on #{params[:commontable_name]}"
159
171
  # end
160
172
  config.subscription_email_subject_proc = lambda do |params|
161
173
  "#{params[:creator_name]} #{params[:config].comment_create_verb_past} a " + \
162
- "#{params[:config].comment_name} on #{params[:commontable_name]} #{params[:commontable_id]}"
174
+ "#{params[:config].comment_name} on #{params[:commontable_name]}"
163
175
  end
164
176
  end
@@ -0,0 +1,176 @@
1
+ # Change the settings below to suit your needs
2
+ # All settings are initially set to their default values
3
+ Commontator.configure do |config|
4
+ # Engine Configuration
5
+
6
+ # Proc that is passed the current controller as argument
7
+ # Returns the current user
8
+ # Default: lambda { |controller| controller.current_user }
9
+ config.current_user_proc = lambda { |controller| controller.current_user }
10
+
11
+ # Proc that is called after any javascript runs (e.g. to display/clear flash messages)
12
+ # It is passed the view_context object (self from the view template), so you should be able to
13
+ # access anything you normally could in a view template (by using, e.g. view.flash)
14
+ # However, be aware that it does not have access to the main application's helpers
15
+ # Should return a string containing JS to be appended to all Commontator JS responses
16
+ # Default: lambda { |view| '$("#error_explanation").remove();' }
17
+ config.javascript_proc = lambda { |view| 'DummyJS' }
18
+
19
+
20
+ # User (acts_as_commontator) Configuration
21
+
22
+ # Whether the comment creator's name is clickable in the comment view
23
+ # If enabled, the link will point to the comment creator's 'show' page
24
+ # Default: false
25
+ config.user_name_clickable = false
26
+
27
+ # Proc called with user as argument
28
+ # Returns the user's name
29
+ # Default: lambda { |user| 'Anonymous' } (all users are Anonymous)
30
+ config.user_name_proc = lambda { |user| 'Anonymous' }
31
+
32
+ # Proc called with user as argument
33
+ # Returns the user's email address
34
+ # Used in the subscription mailer
35
+ # Default: lambda { |user| user.email }
36
+ config.user_email_proc = lambda { |user| user.email }
37
+
38
+ # Proc called with user as argument
39
+ # Returns true iif the user is an admin
40
+ # Admins can delete other users' comments and close threads
41
+ # Default: lambda { |user| false } (no admins)
42
+ config.user_admin_proc = lambda { |user| user.is_admin }
43
+
44
+ # Proc called with user as argument
45
+ # Returns true iif the user should receive subscription emails
46
+ # Default: lambda { |user| true } (always receive subscription emails)
47
+ config.subscription_email_enable_proc = lambda { |user| true }
48
+
49
+
50
+ # Commontable (acts_as_commontable) Configuration
51
+
52
+ # What a comment is called in your application
53
+ # Default: 'comment'
54
+ config.comment_name = 'dummy comment'
55
+
56
+ # Verb used when creating comments (present)
57
+ # Default: 'post'
58
+ config.comment_create_verb_present = 'post'
59
+
60
+ # Verb used when creating comments (past)
61
+ # Default: 'posted'
62
+ config.comment_create_verb_past = 'posted'
63
+
64
+ # Verb used when editing comments (present)
65
+ # Default: 'modify'
66
+ config.comment_edit_verb_present = 'modify'
67
+
68
+ # Verb used when editing comments (past)
69
+ # Default: 'modified'
70
+ config.comment_edit_verb_past = 'modified'
71
+
72
+ # The format of the timestamps used by Commontator
73
+ # Default: '%b %d %Y at %I:%M %p'
74
+ config.timestamp_format = '%b %d %Y at %I:%M %p'
75
+
76
+ # Whether admins can edit other users' comments
77
+ # Default: false
78
+ config.admin_can_edit_comments = false
79
+
80
+ # Whether users automatically subscribe to a thread when commenting
81
+ # Default: false
82
+ config.auto_subscribe_on_comment = false
83
+
84
+ # Whether users can edit their own comments
85
+ # Default: true
86
+ config.can_edit_own_comments = true
87
+
88
+ # Whether users can edit their own comments
89
+ # after someone posted a newer comment
90
+ # Default: false
91
+ config.can_edit_old_comments = false
92
+
93
+ # Whether users can delete their own comments
94
+ # Default: true
95
+ config.can_delete_own_comments = true
96
+
97
+ # Whether users can delete their own comments
98
+ # after someone posted a newer comment
99
+ # Default: false
100
+ config.can_delete_old_comments = false
101
+
102
+ # Whether users can manually subscribe or unsubscribe to threads
103
+ # Default: true
104
+ config.can_subscribe_to_thread = true
105
+
106
+ # Whether users can vote on other users' comments
107
+ # Note: requires acts_as_votable gem installed
108
+ # and configured for your application
109
+ # Default: false
110
+ config.can_vote_on_comments = true
111
+
112
+ # Whether to display upvotes and downvotes
113
+ # combined or separately
114
+ # Default: true
115
+ config.combine_upvotes_and_downvotes = true
116
+
117
+ # Whether comments should be ordered by vote score
118
+ # instead of by order posted
119
+ # Default: false
120
+ config.comments_ordered_by_votes = false
121
+
122
+ # Whether users can read threads closed by moderators
123
+ # Default: true
124
+ config.closed_threads_are_readable = true
125
+
126
+ # Whether to show that comments deleted by a moderator actually existed
127
+ # (the content will be hidden either way)
128
+ # Default: true
129
+ config.deleted_comments_are_visible = true
130
+
131
+ # Proc called with thread and user as arguments
132
+ # Returns true iif the user should be allowed to read that thread
133
+ # Note: can be called with a user object that is false or nil if not logged in
134
+ # Default: lambda { |thread, user| true } (anyone can read threads even if not logged in)
135
+ config.can_read_thread_proc = lambda { |thread, user| user && user.can_read }
136
+
137
+ # Proc called with thread and user as arguments
138
+ # Returns true iif the user is a moderator for that particular thread
139
+ # and can delete users' comments in the thread or close it
140
+ # Default: lambda { |thread, user| false } (no thread-specific moderators)
141
+ config.can_edit_thread_proc = lambda { |thread, user| user.can_edit }
142
+
143
+ # Proc called with the commontable object as argument
144
+ # Returns the name by which the commontable object will be called in email messages
145
+ # If you have multiple commontable models, you may want to pass this
146
+ # configuration value as an argument to acts_as_commontable in each one
147
+ # Default: lambda { |commontable| "#{commontable.class.name} ##{commontable.id}" }
148
+ config.commontable_name_proc = lambda { |commontable| "#{commontable.class.name} ##{commontable.id}" }
149
+
150
+ # Proc called with main_app and commontable objects as arguments
151
+ # Return the url that contains the commontable's thread to be used in the subscription email
152
+ # The application's routes can be accessed using the main_app object
153
+ # Default: lambda { |main_app, commontable| main_app.polymorphic_url(commontable) }
154
+ # (defaults to the commontable's show url)
155
+ config.commontable_url_proc = lambda { |main_app, commontable| main_app.polymorphic_url(commontable) }
156
+
157
+ # Proc called with params from the subscription mailer as arguments
158
+ # Returns the subscription email 'from' address
159
+ # Available params can be seen in the subscription mailer
160
+ # Default:
161
+ # lambda { |params| 'no-reply@example.com' }
162
+ config.subscription_email_from_proc = lambda { |params| 'no-reply@example.com' }
163
+
164
+ # Proc called with params from the subscription mailer as arguments
165
+ # Returns the subscription email 'subject' string
166
+ # Available params can be seen in the subscription mailer
167
+ # Default:
168
+ # lambda do |params|
169
+ # "#{params[:creator_name]} #{params[:config].comment_create_verb_past} a " + \
170
+ # "#{params[:config].comment_name} on #{params[:commontable_name]}"
171
+ # end
172
+ config.subscription_email_subject_proc = lambda do |params|
173
+ "#{params[:creator_name]} #{params[:config].comment_create_verb_past} a " + \
174
+ "#{params[:config].comment_name} on #{params[:commontable_name]}"
175
+ end
176
+ end
@@ -0,0 +1,169 @@
1
+ # Change the settings below to suit your needs
2
+ # All settings are initially set to their default values
3
+ Commontator.configure do |config|
4
+ # Engine Configuration
5
+
6
+ # Name of the ApplicationController helper method that returns the current user
7
+ # Default: 'current_user'
8
+ config.current_user_method = 'current_user'
9
+
10
+ # Proc that is called after any javascript runs (e.g. to display/clear flash messages)
11
+ # It is passed the view_context object (self from the view template), so you should be able to
12
+ # access anything you normally could in a view template (by using, e.g. view.flash)
13
+ # However, be aware that it does not have access to the main application's helpers
14
+ # Should return a string containing JS to be appended to all Commontator JS responses
15
+ # Default: lambda { |view| '$("#error_explanation").remove();' }
16
+ config.javascript_proc = lambda { |view| 'Dummy Javascript' }
17
+
18
+
19
+ # User (acts_as_commontator) Configuration
20
+
21
+ # The name used if the user's name cannot be retrieved
22
+ # Default: 'Anonymous'
23
+ config.user_missing_name = 'Anonymous'
24
+
25
+ # Whether the comment creator's name is clickable in the comment view
26
+ # If enabled, the link will point to the comment creator's 'show' page
27
+ # Default: false
28
+ config.user_name_clickable = false
29
+
30
+ # The method that returns the user's email address
31
+ # Default: 'email'
32
+ config.user_email_method = 'email'
33
+
34
+ # The method that returns the user's name
35
+ # Default: '' (use user_missing_name)
36
+ config.user_name_method = ''
37
+
38
+ # Proc called with user as argument that returns true if the user is an admin
39
+ # Admins can delete other users' comments and close threads
40
+ # Default: lambda { |user| false } (no admins)
41
+ config.user_admin_proc = lambda { |user| user.try(:is_admin) }
42
+
43
+ # Proc called with user as argument that returns true
44
+ # if the user should receive subscription emails
45
+ # Default: lambda { |user| true } (always receive subscription emails)
46
+ config.subscription_email_enable_proc = lambda { |user| true }
47
+
48
+
49
+ # Commontable (acts_as_commontable) Configuration
50
+
51
+ # What a comment is called in your application
52
+ # Default: 'comment'
53
+ config.comment_name = 'dummy comment'
54
+
55
+ # Verb used when creating comments (present)
56
+ # Default: 'post'
57
+ config.comment_create_verb_present = 'post'
58
+
59
+ # Verb used when creating comments (past)
60
+ # Default: 'posted'
61
+ config.comment_create_verb_past = 'posted'
62
+
63
+ # Verb used when editing comments (present)
64
+ # Default: 'modify'
65
+ config.comment_edit_verb_present = 'modify'
66
+
67
+ # Verb used when editing comments (past)
68
+ # Default: 'modified'
69
+ config.comment_edit_verb_past = 'modified'
70
+
71
+ # What a commontable is called in your application
72
+ # If you have multiple commontable models,
73
+ # you will want to pass this configuration value
74
+ # as an argument to acts_as_commontable in each one
75
+ # Default: 'commontable'
76
+ config.commontable_name = 'dummy model'
77
+
78
+ # The format of the timestamps used by Commontator
79
+ # Default: '%b %d %Y, %I:%M %p'
80
+ config.timestamp_format = '%b %d %Y, %I:%M %p'
81
+
82
+ # Whether admins can edit other users' comments
83
+ # Default: false
84
+ config.admin_can_edit_comments = false
85
+
86
+ # Whether users automatically subscribe to a thread when commenting
87
+ # Default: false
88
+ config.auto_subscribe_on_comment = false
89
+
90
+ # Whether users can edit their own comments
91
+ # Default: true
92
+ config.can_edit_own_comments = true
93
+
94
+ # Whether users can edit their own comments
95
+ # after someone posted a newer comment
96
+ # Default: false
97
+ config.can_edit_old_comments = false
98
+
99
+ # Whether users can delete their own comments
100
+ # Default: true
101
+ config.can_delete_own_comments = true
102
+
103
+ # Whether users can delete their own comments
104
+ # after someone posted a newer comment
105
+ # Default: false
106
+ config.can_delete_old_comments = false
107
+
108
+ # Whether users can manually subscribe or unsubscribe to threads
109
+ # Default: true
110
+ config.can_subscribe_to_thread = true
111
+
112
+ # Whether users can vote on other users' comments
113
+ # Note: requires acts_as_votable gem installed
114
+ # and configured for your application
115
+ # Default: false
116
+ config.can_vote_on_comments = true
117
+
118
+ # Whether comments should be ordered by vote score
119
+ # instead of by order posted
120
+ # Default: false
121
+ config.comments_ordered_by_votes = false
122
+
123
+ # Whether users can read threads closed by moderators
124
+ # Default: true
125
+ config.closed_threads_are_readable = true
126
+
127
+ # Whether to show that comments deleted by a moderator actually existed
128
+ # (the content will be hidden either way)
129
+ # Default: true
130
+ config.deleted_comments_are_visible = true
131
+
132
+ # The method which returns the commontable's id, sent to users in email messages
133
+ # Default: 'id'
134
+ config.commontable_id_method = 'id'
135
+
136
+ # Proc called with thread and user as arguments
137
+ # If it returns true, that user is a moderator for that particular thread
138
+ # and can delete users' comments in the thread or close it
139
+ # Default: lambda { |thread, user| false } (no thread-specific moderators)
140
+ config.can_edit_thread_proc = lambda { |thread, user| false }
141
+
142
+ # Proc called with thread and user as arguments
143
+ # If it returns true, that user is allowed to read that thread
144
+ # Note: user can be false or nil
145
+ # Default: lambda { |thread, user| true } (anyone can read threads even if not logged in)
146
+ config.can_read_thread_proc = lambda { |thread, user| true }
147
+
148
+ # Proc that returns the commontable url that contains the thread
149
+ # (defaults to the commontable show url)
150
+ # Main application's routes can be accessed using main_app object
151
+ # Default: lambda { |main_app, commontable| main_app.polymorphic_url(commontable) }
152
+ config.commontable_url_proc = lambda { |main_app, commontable| main_app.polymorphic_url(commontable) }
153
+
154
+ # Proc that returns the subscription email 'from' address
155
+ # Default:
156
+ # lambda { |params| 'no-reply@example.com' }
157
+ config.subscription_email_from_proc = lambda { |params| 'no-reply@example.com' }
158
+
159
+ # Proc that returns the subscription email 'subject' string
160
+ # Default:
161
+ # lambda do |params|
162
+ # "#{params[:creator_name]} #{params[:config].comment_create_verb_past} a " + \
163
+ # "#{params[:config].comment_name} on #{params[:commontable_name]} #{params[:commontable_id]}"
164
+ # end
165
+ config.subscription_email_subject_proc = lambda do |params|
166
+ "#{params[:creator_name]} #{params[:config].comment_create_verb_past} a " + \
167
+ "#{params[:config].comment_name} on #{params[:commontable_name]} #{params[:commontable_id]}"
168
+ end
169
+ end