the_comments 2.2.2 → 2.3.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 +104 -20
- data/app/assets/javascripts/the_comments.js.coffee +7 -6
- data/app/assets/stylesheets/the_comments.css.scss +11 -8
- data/app/controllers/concerns/{controller.rb → the_comments/controller.rb} +29 -48
- data/app/controllers/concerns/the_comments/view_token.rb +20 -0
- data/app/models/concerns/{comment.rb → the_comments/comment.rb} +22 -9
- data/app/models/concerns/{comment_states.rb → the_comments/comment_states.rb} +2 -8
- data/app/models/concerns/{commentable.rb → the_comments/commentable.rb} +0 -0
- data/app/models/concerns/{user.rb → the_comments/user.rb} +6 -2
- data/app/views/the_comments/haml/_additional_info.html.haml +1 -1
- data/app/views/the_comments/haml/_comment_body.html.haml +7 -2
- data/app/views/the_comments/haml/_comment_edit.html.haml +1 -1
- data/app/views/the_comments/haml/_form.html.haml +4 -23
- data/app/views/the_comments/haml/_guest_form.html.haml +22 -0
- data/app/views/the_comments/haml/_logined_form.html.haml +18 -0
- data/app/views/the_comments/haml/_manage_controls.html.haml +20 -17
- data/app/views/the_comments/haml/_sidebar.html.haml +6 -25
- data/app/views/the_comments/haml/_sidebar_admin.html.haml +12 -0
- data/app/views/the_comments/haml/_sidebar_backlink.html.haml +3 -0
- data/app/views/the_comments/haml/_sidebar_user.html.haml +29 -0
- data/app/views/the_comments/haml/_tree.html.haml +13 -1
- data/app/views/the_comments/haml/manage.html.haml +8 -7
- data/app/views/the_comments/slim/_comment_body.html.slim +5 -1
- data/app/views/the_comments/slim/_form.html.slim +4 -23
- data/app/views/the_comments/slim/_guest_form.html.slim +22 -0
- data/app/views/the_comments/slim/_logined_form.html.slim +18 -0
- data/app/views/the_comments/slim/_manage_controls.html.slim +19 -16
- data/app/views/the_comments/slim/_sidebar.html.slim +6 -25
- data/app/views/the_comments/slim/_sidebar_admin.html.slim +12 -0
- data/app/views/the_comments/slim/_sidebar_backlink.html.slim +3 -0
- data/app/views/the_comments/slim/_sidebar_user.html.slim +29 -0
- data/app/views/the_comments/slim/_tree.html.slim +13 -1
- data/app/views/the_comments/slim/index.html.slim +2 -2
- data/app/views/the_comments/slim/manage.html.slim +7 -6
- data/config/initializers/the_comments.rb +0 -1
- data/config/locales/ru.yml +14 -10
- data/config/routes.rb +4 -2
- data/docs/whats_wrong_with_other_gems.md +13 -13
- data/docs/where_is_example_application.md +3 -3
- data/gem_version.rb +2 -2
- data/lib/the_comments.rb +26 -7
- data/lib/the_comments/config.rb +1 -4
- data/spec/dummy_app/Gemfile +2 -2
- data/spec/dummy_app/config/routes.rb +1 -0
- data/spec/dummy_app/spec/models/user_counters_spec.rb +5 -5
- data/the_comments.gemspec +3 -2
- data/views_converter.rb +2 -2
- metadata +49 -26
- data/app/views/the_comments/haml/index.html.haml +0 -18
- data/app/views/the_comments/haml/my_comments.html.haml +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d33700b0151040d95f8a455e475ad5d66eb8b928
|
4
|
+
data.tar.gz: 5d104aa0145c131bf1cc3a98002a0f1dff5e1365
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c37bcfd7ef8a5badd433e6eb711d3bc74d5e7a8b7349b13aa2bb7b3bb8e13e7d744e3ab5570c323a905a338f6efd75dc4b57dd38caf190d13c80ad97f81874d6
|
7
|
+
data.tar.gz: bf99d747ea1f2aa1e4df5fda067527e03571e596c34ea4226f5182ba6a0bd0657a008ed16323f611a9c7a1e2e54747d749d026c5f4e30ee2cc12f9206dd2315a
|
data/README.md
CHANGED
@@ -2,34 +2,36 @@
|
|
2
2
|
|
3
3
|
[](http://badge.fury.io/rb/the_comments) | [](https://travis-ci.org/the-teacher/the_comments) | [](https://codeclimate.com/github/the-teacher/the_comments) | [(rubygems)](http://rubygems.org/gems/the_comments)
|
4
4
|
|
5
|
-
TheComments -
|
5
|
+
TheComments - The best Rails gem for blog-style comments
|
6
6
|
|
7
|
-
:question: [Why TheComments
|
7
|
+
:question: [Why is TheComments better than other gems?](docs/whats_wrong_with_other_gems.md#why-thecomments-is-better-than-others-gems)
|
8
8
|
|
9
|
-
###
|
9
|
+
### Features
|
10
10
|
|
11
11
|
* Threaded comments
|
12
12
|
* Useful cache counters
|
13
13
|
* Admin UI for moderation
|
14
14
|
* Mountable Engine.routes
|
15
15
|
* Online Support via skype: **ilya.killich**
|
16
|
-
* [Denormalization](docs/denormalization_and_recent_comments.md) for
|
16
|
+
* [Denormalization](docs/denormalization_and_recent_comments.md) for recent comments
|
17
17
|
* Production-ready commenting system for Rails 4+
|
18
|
-
* Designed for preprocessors Sanitize, Textile,
|
18
|
+
* Designed for preprocessors such as Sanitize, Textile, Markdown etc.
|
19
19
|
|
20
20
|
### :books: [Documentation](docs/documentation.md)
|
21
21
|
|
22
22
|
## If you have any questions
|
23
23
|
|
24
|
-
Please
|
24
|
+
Please try playing around with the **[Dummy App](spec/dummy_app)** in the `spec` folder first. An example integration is often better than any documentation! Thanks.
|
25
25
|
|
26
|
-
## How to start dummy app (screencast)
|
26
|
+
## How to start the dummy app (screencast)
|
27
27
|
|
28
28
|
[](http://vk.com/video_ext.php?oid=49225742&id=166578209&hash=10be1dba625149bb&hd=3)
|
29
29
|
|
30
30
|
## Quick Start Installation
|
31
31
|
|
32
|
-
|
32
|
+
**NB: In the following examples, `Posts` is the model to which comments are being added. For your app, the model might be `Articles` or similar instead.**
|
33
|
+
|
34
|
+
### 1. Install Gems
|
33
35
|
|
34
36
|
**Gemfile**
|
35
37
|
|
@@ -46,9 +48,9 @@ gem 'awesome_nested_set' # or same gem
|
|
46
48
|
bundle
|
47
49
|
```
|
48
50
|
|
49
|
-
|
51
|
+
Don't forget to restart your server!
|
50
52
|
|
51
|
-
|
53
|
+
### 2. Add migrations
|
52
54
|
|
53
55
|
```
|
54
56
|
rake the_comments_engine:install:migrations
|
@@ -80,13 +82,36 @@ class ChangeCommentable < ActiveRecord::Migration
|
|
80
82
|
end
|
81
83
|
```
|
82
84
|
|
85
|
+
:warning: **Open and change xxxxx_change_user.rb migration**
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
class TheCommentsChangeUser < ActiveRecord::Migration
|
89
|
+
def change
|
90
|
+
#if you User class is not called User, you may want to change it.
|
91
|
+
change_table :users do |t|
|
92
|
+
# "Written by me" (cache counters)
|
93
|
+
t.integer :my_draft_comments_count, default: 0
|
94
|
+
t.integer :my_published_comments_count, default: 0
|
95
|
+
t.integer :my_comments_count, default: 0 # my_draft_comments_count + my_published_comments_count
|
96
|
+
|
97
|
+
# commentable's comments => comcoms (cache counters)
|
98
|
+
# Relation through Comment#holder_id field
|
99
|
+
t.integer :draft_comcoms_count, default: 0
|
100
|
+
t.integer :published_comcoms_count, default: 0
|
101
|
+
t.integer :deleted_comcoms_count, default: 0
|
102
|
+
t.integer :spam_comcoms_count, default: 0
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
```
|
107
|
+
|
83
108
|
**Invoke migrations**
|
84
109
|
|
85
110
|
```
|
86
111
|
rake db:migrate
|
87
112
|
```
|
88
113
|
|
89
|
-
### 3. Code
|
114
|
+
### 3. Code installation
|
90
115
|
|
91
116
|
```ruby
|
92
117
|
rails g the_comments install
|
@@ -98,7 +123,7 @@ Will create:
|
|
98
123
|
* app/controllers/comments_controller.rb
|
99
124
|
* app/models/comment.rb
|
100
125
|
|
101
|
-
:warning: **Open each file and follow
|
126
|
+
:warning: **Open each file and follow the instructions**
|
102
127
|
|
103
128
|
### 4. Models modifictions
|
104
129
|
|
@@ -110,10 +135,12 @@ class User < ActiveRecord::Base
|
|
110
135
|
|
111
136
|
has_many :posts
|
112
137
|
|
138
|
+
# IT'S JUST AN EXAMPLE OF ANY ROLE SYSTEM
|
113
139
|
def admin?
|
114
140
|
self == User.first
|
115
141
|
end
|
116
142
|
|
143
|
+
# YOU HAVE TO IMPLEMENT YOUR ROLE POLICY FOR COMMENTS HERE
|
117
144
|
def comments_admin?
|
118
145
|
admin?
|
119
146
|
end
|
@@ -133,7 +160,7 @@ class Post < ActiveRecord::Base
|
|
133
160
|
belongs_to :user
|
134
161
|
|
135
162
|
# Denormalization methods
|
136
|
-
#
|
163
|
+
# Check the documentation for information on advanced usage
|
137
164
|
def commentable_title
|
138
165
|
"Undefined Post Title"
|
139
166
|
end
|
@@ -166,9 +193,11 @@ MyApp::Application.routes.draw do
|
|
166
193
|
end
|
167
194
|
```
|
168
195
|
|
169
|
-
|
196
|
+
Refer to the [documentation](docs/documentation.md) for more information
|
170
197
|
|
171
|
-
### 6. Controller
|
198
|
+
### 6. Add to Application Controller
|
199
|
+
|
200
|
+
**app/controllers/application_controller.rb**
|
172
201
|
|
173
202
|
```ruby
|
174
203
|
class ApplicationController < ActionController::Base
|
@@ -180,7 +209,7 @@ class ApplicationController < ActionController::Base
|
|
180
209
|
end
|
181
210
|
```
|
182
211
|
|
183
|
-
### 7.
|
212
|
+
### 7. Install assets
|
184
213
|
|
185
214
|
**app/assets/stylesheets/application.css**
|
186
215
|
|
@@ -196,9 +225,9 @@ end
|
|
196
225
|
//= require the_comments
|
197
226
|
```
|
198
227
|
|
199
|
-
### 8.
|
228
|
+
### 8. Example controller code
|
200
229
|
|
201
|
-
**app/controllers/
|
230
|
+
**app/controllers/posts_controller.rb**
|
202
231
|
|
203
232
|
```ruby
|
204
233
|
def show
|
@@ -207,7 +236,7 @@ def show
|
|
207
236
|
end
|
208
237
|
```
|
209
238
|
|
210
|
-
### 9.
|
239
|
+
### 9. Example view code
|
211
240
|
|
212
241
|
**app/views/posts/show.html.haml**
|
213
242
|
|
@@ -217,11 +246,66 @@ end
|
|
217
246
|
|
218
247
|
<hr>
|
219
248
|
|
249
|
+
### Common problems
|
250
|
+
|
251
|
+
For error with `unpermitted parameters` in webserver output.
|
252
|
+
|
253
|
+
Example:
|
254
|
+
|
255
|
+
Unpermitted parameters: commentable_type, commentable_id
|
256
|
+
|
257
|
+
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 ORDER BY "users"."id" ASC LIMIT 1
|
258
|
+
|
259
|
+
Completed 500 Internal Server Error in 8ms
|
260
|
+
|
261
|
+
Add the following to your Comments Controller.
|
262
|
+
|
263
|
+
def comment_params
|
264
|
+
params
|
265
|
+
.require(:comment)
|
266
|
+
.permit(:title, :contacts, :raw_content, :parent_id, :commentable_type, :commentable_id)
|
267
|
+
.merge(denormalized_fields)
|
268
|
+
.merge(request_data_for_comment)
|
269
|
+
.merge(tolerance_time: params[:tolerance_time].to_i)
|
270
|
+
.merge(user: current_user, view_token: comments_view_token)
|
271
|
+
end
|
272
|
+
|
273
|
+
See [here](https://github.com/the-teacher/the_comments/issues/34).
|
274
|
+
|
275
|
+
<hr>
|
276
|
+
|
277
|
+
For errors with `around_validation`.
|
278
|
+
|
279
|
+
Example:
|
280
|
+
|
281
|
+
NoMethodError - protected method `around_validation' called for #<StateMachine::Machine:0x007f84148c3c60>:
|
282
|
+
|
283
|
+
Create a new file `config/state_machine.rb`.
|
284
|
+
|
285
|
+
# Rails 4.1.0.rc1 and StateMachine don't play nice
|
286
|
+
# https://github.com/pluginaweek/state_machine/issues/295
|
287
|
+
|
288
|
+
require 'state_machine/version'
|
289
|
+
|
290
|
+
unless StateMachine::VERSION == '1.2.0'
|
291
|
+
# If you see this message, please test removing this file
|
292
|
+
# If it's still required, please bump up the version above
|
293
|
+
Rails.logger.warn "Please remove me, StateMachine version has changed"
|
294
|
+
end
|
295
|
+
|
296
|
+
module StateMachine::Integrations::ActiveModel
|
297
|
+
public :around_validation
|
298
|
+
end
|
299
|
+
|
300
|
+
See [here](https://github.com/pluginaweek/state_machine/issues/295).
|
301
|
+
|
302
|
+
<hr>
|
303
|
+
|
220
304
|
### Feedback
|
221
305
|
|
222
306
|
:speech_balloon: My twitter: [@iam_teacher](https://twitter.com/iam_teacher) hashtag: **#the_comments**
|
223
307
|
|
224
|
-
###
|
308
|
+
### Acknowledgments
|
225
309
|
|
226
310
|
* Anna Nechaeva (my wife) - for love and my happy life
|
227
311
|
* @tanraya (Andrew Kozlov) - for code review
|
@@ -1,8 +1,9 @@
|
|
1
1
|
# ERROR MSG BUILDER
|
2
2
|
@comments_errors_builder = (errors) ->
|
3
3
|
error_msgs = ''
|
4
|
-
for
|
5
|
-
|
4
|
+
for field, errs of errors
|
5
|
+
for err in errs
|
6
|
+
error_msgs += "<p><b>#{ field }:</b> #{ err }</p>"
|
6
7
|
error_msgs
|
7
8
|
|
8
9
|
# FORM CLEANER
|
@@ -38,7 +39,7 @@ $ ->
|
|
38
39
|
|
39
40
|
if tolerance_time && (time_diff < tolerance_time)
|
40
41
|
delta = tolerance_time - time_diff
|
41
|
-
error_msgs = comments_errors_builder(["Please wait #{delta} secs"])
|
42
|
+
error_msgs = comments_errors_builder({ delay: ["Please wait #{delta} secs"] })
|
42
43
|
comments_error_notifier(form, error_msgs)
|
43
44
|
return false
|
44
45
|
|
@@ -53,7 +54,7 @@ $ ->
|
|
53
54
|
$(document).on 'ajax:error', comment_forms, (request, response, status) ->
|
54
55
|
form = $ @
|
55
56
|
$('input[type=submit]', form).show()
|
56
|
-
error_msgs = comments_errors_builder(
|
57
|
+
error_msgs = comments_errors_builder({ "Server Error: ": [response.status] })
|
57
58
|
comments_error_notifier(form, error_msgs)
|
58
59
|
|
59
60
|
# SUCCESS
|
@@ -86,7 +87,7 @@ $ ->
|
|
86
87
|
$(document).on 'click', '.reply_link', ->
|
87
88
|
link = $ @
|
88
89
|
comment = link.parent().parent().parent()
|
89
|
-
|
90
|
+
|
90
91
|
$(comment_forms).hide()
|
91
92
|
form = $('#new_comment').clone().removeAttr('id').addClass('reply_comments_form')
|
92
93
|
|
@@ -104,4 +105,4 @@ $ ->
|
|
104
105
|
|
105
106
|
$(window).on 'hashchange', ->
|
106
107
|
$('.comment.highlighted').removeClass 'highlighted'
|
107
|
-
highlight_anchor()
|
108
|
+
highlight_anchor()
|
@@ -22,17 +22,19 @@
|
|
22
22
|
}
|
23
23
|
}
|
24
24
|
|
25
|
+
.action_btns a{ margin-right: 15px; }
|
26
|
+
|
25
27
|
.comments, .comments_tree{
|
26
28
|
font-family: Arial;
|
27
29
|
font-size: 13px;
|
28
30
|
|
29
31
|
h3{ font-size: 1.6em; }
|
30
32
|
|
31
|
-
.error_notifier{
|
33
|
+
.error_notifier{
|
32
34
|
background-color: #F2DEDE;
|
33
35
|
border: 1px solid #B94A48;
|
34
36
|
color: #B94A48;
|
35
|
-
|
37
|
+
|
36
38
|
border-radius: 4px;
|
37
39
|
margin: 0 0 15px 0;
|
38
40
|
padding: 10px 10px 0 10px;
|
@@ -41,13 +43,13 @@
|
|
41
43
|
p{ margin: 0 0 10px 0; }
|
42
44
|
}
|
43
45
|
form{
|
44
|
-
|
46
|
+
|
45
47
|
background: #e0e4f5;
|
46
48
|
|
47
49
|
border: 1px solid #c6cff5;
|
48
50
|
border-radius: 5px;
|
49
51
|
padding: 10px;
|
50
|
-
|
52
|
+
|
51
53
|
p{ margin: 0 0 10px 0; }
|
52
54
|
|
53
55
|
input[type=text]{
|
@@ -88,7 +90,7 @@
|
|
88
90
|
}
|
89
91
|
|
90
92
|
.form_holder{ margin-left: 40px; }
|
91
|
-
|
93
|
+
|
92
94
|
.edit, .delete{
|
93
95
|
margin-bottom: 3px;
|
94
96
|
text-align:center;
|
@@ -142,6 +144,7 @@
|
|
142
144
|
.controls{
|
143
145
|
position: absolute;
|
144
146
|
top: 53px; left: 5px;
|
147
|
+
|
145
148
|
a{
|
146
149
|
font-size:11px;
|
147
150
|
display:block;
|
@@ -161,7 +164,7 @@
|
|
161
164
|
}
|
162
165
|
|
163
166
|
.form_holder{
|
164
|
-
form{ margin: 10px 0; }
|
167
|
+
form{ margin: 10px 0; }
|
165
168
|
}
|
166
169
|
}
|
167
170
|
|
@@ -187,7 +190,7 @@
|
|
187
190
|
border-left: 5px solid orange;
|
188
191
|
|
189
192
|
.controls{
|
190
|
-
a.to_draft{ display: none }
|
193
|
+
a.to_draft{ display: none }
|
191
194
|
}
|
192
195
|
}
|
193
196
|
.published{
|
@@ -242,4 +245,4 @@
|
|
242
245
|
}
|
243
246
|
}
|
244
247
|
}
|
245
|
-
}
|
248
|
+
}
|
@@ -1,25 +1,4 @@
|
|
1
1
|
module TheComments
|
2
|
-
COMMENTS_COOKIES_TOKEN = 'JustTheCommentsCookies'
|
3
|
-
|
4
|
-
# Cookies and View token for spam protection
|
5
|
-
# include TheComments::ViewToken
|
6
|
-
module ViewToken
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
included { before_action :set_the_comments_cookies }
|
10
|
-
|
11
|
-
def comments_view_token
|
12
|
-
cookies[:comments_view_token]
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def set_the_comments_cookies
|
18
|
-
cookies[:the_comment_cookies] = { value: TheComments::COMMENTS_COOKIES_TOKEN, expires: 1.year.from_now }
|
19
|
-
cookies[:comments_view_token] = { value: SecureRandom.hex, expires: 7.days.from_now } unless cookies[:comments_view_token]
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
2
|
# Base functionality of Comments Controller
|
24
3
|
# class CommentsController < ApplicationController
|
25
4
|
# include TheComments::Controller
|
@@ -50,23 +29,14 @@ module TheComments
|
|
50
29
|
end
|
51
30
|
|
52
31
|
# App side methods (you can overwrite them)
|
53
|
-
def index
|
54
|
-
@comments = ::Comment.with_state(:published).recent.page(params[:page])
|
55
|
-
render comment_template(:index)
|
56
|
-
end
|
57
32
|
|
58
33
|
def manage
|
59
|
-
@comments = current_user.comcoms.active.recent.page(params[:page])
|
34
|
+
@comments = current_user.comcoms.with_users.active.recent.page(params[:page])
|
60
35
|
render comment_template(:manage)
|
61
36
|
end
|
62
37
|
|
63
38
|
def my_comments
|
64
|
-
@comments = current_user.my_comments.active.recent.page(params[:page])
|
65
|
-
render comment_template(:my_comments)
|
66
|
-
end
|
67
|
-
|
68
|
-
def edit
|
69
|
-
@comments = current_user.comcoms.where(id: params[:id]).page(params[:page])
|
39
|
+
@comments = current_user.my_comments.with_users.active.recent.page(params[:page])
|
70
40
|
render comment_template(:manage)
|
71
41
|
end
|
72
42
|
|
@@ -74,40 +44,39 @@ module TheComments
|
|
74
44
|
# Methods for admin
|
75
45
|
%w[draft published deleted].each do |state|
|
76
46
|
define_method "#{state}" do
|
77
|
-
@comments = current_user.comcoms.with_state(state).recent.page(params[:page])
|
47
|
+
@comments = current_user.comcoms.with_users.with_state(state).recent.page(params[:page])
|
78
48
|
render comment_template(:manage)
|
79
49
|
end
|
80
50
|
|
81
51
|
define_method "total_#{state}" do
|
82
|
-
@comments = ::Comment.with_state(state).recent.page(params[:page])
|
52
|
+
@comments = ::Comment.with_state(state).with_users.recent.page(params[:page])
|
83
53
|
render comment_template(:manage)
|
84
54
|
end
|
85
55
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
render comment_template(:my_comments)
|
90
|
-
end
|
56
|
+
define_method "my_#{state}" do
|
57
|
+
@comments = current_user.my_comments.with_users.with_state(state).recent.page(params[:page])
|
58
|
+
render comment_template(:manage)
|
91
59
|
end
|
92
60
|
end
|
93
61
|
|
94
62
|
def spam
|
95
|
-
@comments = current_user.comcoms.where(spam: true).recent.page(params[:page])
|
63
|
+
@comments = current_user.comcoms.with_users.where(spam: true).recent.page(params[:page])
|
64
|
+
render comment_template(:manage)
|
65
|
+
end
|
66
|
+
|
67
|
+
def my_spam
|
68
|
+
@comments = current_user.my_comments.with_users.where(spam: true).recent.page(params[:page])
|
96
69
|
render comment_template(:manage)
|
97
70
|
end
|
98
71
|
|
99
72
|
def total_spam
|
100
|
-
@comments = ::Comment.where(spam: true).recent.page(params[:page])
|
73
|
+
@comments = ::Comment.where(spam: true).with_users.recent.page(params[:page])
|
101
74
|
render comment_template(:manage)
|
102
75
|
end
|
103
76
|
|
104
77
|
# BASE METHODS
|
78
|
+
|
105
79
|
# Public methods
|
106
|
-
def update
|
107
|
-
comment = ::Comment.find(params[:id])
|
108
|
-
comment.update_attributes!(patch_comment_params)
|
109
|
-
render(layout: false, partial: comment_partial(:comment_body), locals: { comment: comment })
|
110
|
-
end
|
111
80
|
|
112
81
|
def create
|
113
82
|
@comment = @commentable.comments.new comment_params
|
@@ -115,10 +84,22 @@ module TheComments
|
|
115
84
|
@comment.save
|
116
85
|
return render layout: false, partial: comment_partial(:comment), locals: { tree: @comment }
|
117
86
|
end
|
118
|
-
render json: { errors: @comment.errors
|
87
|
+
render json: { errors: @comment.errors }
|
119
88
|
end
|
120
89
|
|
121
90
|
# Restricted area
|
91
|
+
|
92
|
+
def edit
|
93
|
+
@comments = current_user.comcoms.where(id: params[:id]).page(params[:page])
|
94
|
+
render comment_template(:manage)
|
95
|
+
end
|
96
|
+
|
97
|
+
def update
|
98
|
+
comment = ::Comment.find(params[:id])
|
99
|
+
comment.update_attributes!(patch_comment_params)
|
100
|
+
render(layout: false, partial: comment_partial(:comment_body), locals: { comment: comment })
|
101
|
+
end
|
102
|
+
|
122
103
|
%w[draft published deleted].each do |state|
|
123
104
|
define_method "to_#{state}" do
|
124
105
|
::Comment.find(params[:id]).try "to_#{state}"
|
@@ -213,4 +194,4 @@ module TheComments
|
|
213
194
|
end
|
214
195
|
end
|
215
196
|
end
|
216
|
-
end
|
197
|
+
end
|