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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +104 -20
  3. data/app/assets/javascripts/the_comments.js.coffee +7 -6
  4. data/app/assets/stylesheets/the_comments.css.scss +11 -8
  5. data/app/controllers/concerns/{controller.rb → the_comments/controller.rb} +29 -48
  6. data/app/controllers/concerns/the_comments/view_token.rb +20 -0
  7. data/app/models/concerns/{comment.rb → the_comments/comment.rb} +22 -9
  8. data/app/models/concerns/{comment_states.rb → the_comments/comment_states.rb} +2 -8
  9. data/app/models/concerns/{commentable.rb → the_comments/commentable.rb} +0 -0
  10. data/app/models/concerns/{user.rb → the_comments/user.rb} +6 -2
  11. data/app/views/the_comments/haml/_additional_info.html.haml +1 -1
  12. data/app/views/the_comments/haml/_comment_body.html.haml +7 -2
  13. data/app/views/the_comments/haml/_comment_edit.html.haml +1 -1
  14. data/app/views/the_comments/haml/_form.html.haml +4 -23
  15. data/app/views/the_comments/haml/_guest_form.html.haml +22 -0
  16. data/app/views/the_comments/haml/_logined_form.html.haml +18 -0
  17. data/app/views/the_comments/haml/_manage_controls.html.haml +20 -17
  18. data/app/views/the_comments/haml/_sidebar.html.haml +6 -25
  19. data/app/views/the_comments/haml/_sidebar_admin.html.haml +12 -0
  20. data/app/views/the_comments/haml/_sidebar_backlink.html.haml +3 -0
  21. data/app/views/the_comments/haml/_sidebar_user.html.haml +29 -0
  22. data/app/views/the_comments/haml/_tree.html.haml +13 -1
  23. data/app/views/the_comments/haml/manage.html.haml +8 -7
  24. data/app/views/the_comments/slim/_comment_body.html.slim +5 -1
  25. data/app/views/the_comments/slim/_form.html.slim +4 -23
  26. data/app/views/the_comments/slim/_guest_form.html.slim +22 -0
  27. data/app/views/the_comments/slim/_logined_form.html.slim +18 -0
  28. data/app/views/the_comments/slim/_manage_controls.html.slim +19 -16
  29. data/app/views/the_comments/slim/_sidebar.html.slim +6 -25
  30. data/app/views/the_comments/slim/_sidebar_admin.html.slim +12 -0
  31. data/app/views/the_comments/slim/_sidebar_backlink.html.slim +3 -0
  32. data/app/views/the_comments/slim/_sidebar_user.html.slim +29 -0
  33. data/app/views/the_comments/slim/_tree.html.slim +13 -1
  34. data/app/views/the_comments/slim/index.html.slim +2 -2
  35. data/app/views/the_comments/slim/manage.html.slim +7 -6
  36. data/config/initializers/the_comments.rb +0 -1
  37. data/config/locales/ru.yml +14 -10
  38. data/config/routes.rb +4 -2
  39. data/docs/whats_wrong_with_other_gems.md +13 -13
  40. data/docs/where_is_example_application.md +3 -3
  41. data/gem_version.rb +2 -2
  42. data/lib/the_comments.rb +26 -7
  43. data/lib/the_comments/config.rb +1 -4
  44. data/spec/dummy_app/Gemfile +2 -2
  45. data/spec/dummy_app/config/routes.rb +1 -0
  46. data/spec/dummy_app/spec/models/user_counters_spec.rb +5 -5
  47. data/the_comments.gemspec +3 -2
  48. data/views_converter.rb +2 -2
  49. metadata +49 -26
  50. data/app/views/the_comments/haml/index.html.haml +0 -18
  51. data/app/views/the_comments/haml/my_comments.html.haml +0 -28
@@ -0,0 +1,22 @@
1
+ label= t('the_comments.form.title')
2
+ p= f.text_field :title, class: 'form-control'
3
+
4
+ label= t('the_comments.form.contacts')
5
+ p= f.text_field :contacts, class: 'form-control'
6
+
7
+ label= t('the_comments.form.content')
8
+ p= f.text_area :raw_content, class: 'form-control'
9
+
10
+ p.trap
11
+ - TheComments.config.empty_inputs.each do |name|
12
+ = text_field_tag name, nil, autocomplete: :off, tabindex: -1, id: nil
13
+
14
+ = hidden_field_tag :tolerance_time, 0, id: nil, class: :tolerance_time
15
+
16
+ = f.hidden_field :commentable_type, value: commentable.class
17
+ = f.hidden_field :commentable_id, value: commentable.id
18
+ = f.hidden_field :parent_id, class: :parent_id
19
+
20
+ p
21
+ = f.submit t('the_comments.form.create'), class: :btn
22
+ = t('the_comments.form.thank_you')
@@ -0,0 +1,18 @@
1
+ .logined_comment_form
2
+ .user_data
3
+ = link_to user_path(current_user), nopin: :nopin do
4
+ = image_tag current_user.avatar.url(:thumb)
5
+ .comment_data
6
+ = hidden_field_tag :tolerance_time, 0, id: nil, class: :tolerance_time
7
+ = f.hidden_field :commentable_type, value: commentable.class
8
+ = f.hidden_field :commentable_id, value: commentable.id
9
+ = f.hidden_field :parent_id, class: :parent_id
10
+
11
+ .user_name
12
+ b= current_user.username.present? ? current_user.username : current_user.login
13
+ label= t('the_comments.form.content')
14
+ p= f.text_area :raw_content
15
+
16
+ p
17
+ = f.submit t('the_comments.form.create'), class: :btn
18
+ = t('the_comments.form.thank_you')
@@ -1,24 +1,27 @@
1
1
  - hidden = "display:none"
2
2
 
3
3
  .row.controls
4
- .col-md-9
5
- = link_to t('the_comments.edit'), "#", class: "edit btn btn-success"
6
- = link_to t('the_comments.cancel'), "#", class: "btn btn-warning edit", style: "display:none"
4
+ .col-md-9.action_btns
5
+ = link_to '#', class: "edit btn btn-success" do
6
+ = t('the_comments.edit')
7
7
 
8
- - to_hide = comment.published? ? hidden : nil
9
- - opts = { remote: true, style: to_hide, method: :post }
10
- = link_to [:to_published, comment], opts.merge(class: "btn btn-primary to_published") do
11
- = t('the_comments.to_published')
12
-
13
- - to_hide = comment.draft? ? hidden : nil
14
- - opts = { remote: true, style: to_hide, method: :post }
15
- = link_to [:to_draft, comment], opts.merge(class: "btn btn-warning to_draft") do
16
- = t('the_comments.to_draft')
8
+ = link_to '#', class: "btn btn-warning edit", style: "display:none" do
9
+ = t('the_comments.cancel')
17
10
 
18
- - to_hide = comment.deleted? ? hidden : nil
19
- - opts = { remote: true, style: to_hide, method: :delete, data: { confirm: t('the_comments.delete_confirm') } }
20
- = link_to [:to_deleted, comment], opts.merge(class: "btn btn-danger to_deleted") do
21
- = t('the_comments.to_deleted')
11
+ - unless to_hide = comment.published? ? hidden : nil
12
+ - opts = { remote: true, style: to_hide, method: :post }
13
+ = link_to [:to_published, comment], opts.merge(class: "btn btn-primary to_published") do
14
+ = t('the_comments.to_published')
15
+
16
+ - unless to_hide = comment.draft? ? hidden : nil
17
+ - opts = { remote: true, style: to_hide, method: :post }
18
+ = link_to [:to_draft, comment], opts.merge(class: "btn btn-warning to_draft") do
19
+ = t('the_comments.to_draft')
20
+
21
+ - unless to_hide = comment.deleted? ? hidden : nil
22
+ - opts = { remote: true, style: to_hide, method: :delete, data: { confirm: t('the_comments.delete_confirm') } }
23
+ = link_to [:to_deleted, comment], opts.merge(class: "btn btn-danger to_deleted") do
24
+ = t('the_comments.to_deleted')
22
25
 
23
26
  - opts = { remote: true, method: :post}
24
27
  = link_to [:to_spam, comment], opts.merge(class: "btn btn-danger to_spam") do
@@ -1,28 +1,9 @@
1
- - cuser = current_user
2
-
3
- .panel.panel-primary
1
+ .panel.panel-default
4
2
  .panel-heading= t "the_comments.nav.header"
5
3
  .panel-body
6
- p= link_to raw(t('the_comments.back_to_root')), '/'
7
- hr
8
-
9
- h5= t 'the_comments.incoming'
10
- ul
11
- li= link_to t("the_comments.draft_comments", num: cuser.draft_comcoms_count), [:draft, :comments]
12
- li= link_to t("the_comments.published_comments", num: cuser.published_comcoms_count), [:published, :comments]
13
- li= link_to t("the_comments.deleted_comments", num: cuser.deleted_comcoms_count), [:deleted, :comments]
14
- li= link_to t("the_comments.spam_comments", num: cuser.spam_comcoms_count), [:spam, :comments]
15
-
16
- h5= t 'the_comments.written_by_me'
17
- ul
18
- li= link_to t("the_comments.draft_comments", num: cuser.my_draft_comments.count), [:my_draft, :comments]
19
- li= link_to t("the_comments.published_comments", num: cuser.my_published_comments.count), [:my_published, :comments]
20
- li= link_to t("the_comments.my_comments", num: cuser.my_comments_count), [:my_comments, :comments]
4
+ = render partial: 'the_comments/slim/sidebar_backlink'
21
5
 
22
- - if cuser.comments_admin?
23
- h5= t 'the_comments.in_system'
24
- ul
25
- li= link_to t("the_comments.draft_comments", num: Comment.with_state(:draft).count), [:total_draft, :comments]
26
- li= link_to t("the_comments.published_comments", num: Comment.with_state(:published).count), [:total_published, :comments]
27
- li= link_to t("the_comments.deleted_comments", num: Comment.with_state(:deleted).count), [:total_deleted, :comments]
28
- li= link_to t("the_comments.spam_comments", num: Comment.where(spam: true).count), [:total_spam, :comments]
6
+ - if current_user.comments_admin?
7
+ = render partial: 'the_comments/slim/sidebar_admin'
8
+ - else
9
+ = render partial: 'the_comments/slim/sidebar_user'
@@ -0,0 +1,12 @@
1
+ - cuser = current_user
2
+
3
+ = render partial: 'the_comments/slim/sidebar_user'
4
+
5
+ - if cuser.comments_admin?
6
+ br
7
+ h5= t 'the_comments.in_system', num: Comment.count
8
+ p= link_to t("the_comments.published_comments", num: Comment.with_state(:published).count), [:total_published, :comments], class: 'btn btn-success btn-sm'
9
+ p= link_to t("the_comments.draft_comments", num: Comment.with_state(:draft).count), [:total_draft, :comments], class: 'btn btn-info btn-sm'
10
+ p
11
+ = link_to t("the_comments.deleted_comments", num: Comment.with_state(:deleted).count), [:total_deleted, :comments], class: 'btn btn-default btn-sm'
12
+ = link_to t("the_comments.spam_comments", num: Comment.where(spam: true).count), [:total_spam, :comments], class: 'btn btn-default btn-sm'
@@ -0,0 +1,3 @@
1
+ p= link_to t('the_comments.nav.to_root'), root_path
2
+ p= link_to t('the_comments.nav.all_incoming'), manage_comments_url
3
+ hr
@@ -0,0 +1,29 @@
1
+ - cuser = current_user
2
+
3
+ h5=t 'the_comments.written_by_me', num: cuser.my_comments.count
4
+
5
+ p= link_to t("the_comments.published_comments", num: cuser.my_published_comments.count), [:my_published, :comments], class: 'btn btn-success btn-sm'
6
+ p= link_to t("the_comments.draft_comments", num: cuser.my_draft_comments.count), [:my_draft, :comments], class: 'btn btn-info btn-sm'
7
+
8
+ p
9
+ - if cuser.comments_admin?
10
+ = link_to t("the_comments.deleted_comments", num: cuser.my_deleted_comments.count), [:my_deleted, :comments], class: 'btn btn-default btn-sm'
11
+ = link_to t("the_comments.spam_comments", num: cuser.my_spam_comments.count), [:my_spam, :comments], class: 'btn btn-default btn-sm'
12
+ - else
13
+ span.btn.btn-default.btn-sm= t("the_comments.deleted_comments", num: cuser.my_deleted_comments.count)
14
+ span.btn.btn-default.btn-sm= t("the_comments.spam_comments", num: cuser.my_spam_comments.count)
15
+
16
+ br
17
+ h5= t 'the_comments.for_my_posts', num: cuser.comcoms.count
18
+
19
+ p= link_to t("the_comments.published_comments", num: cuser.published_comcoms_count), [:published, :comments], class: 'btn btn-success btn-sm'
20
+ p= link_to t("the_comments.draft_comments", num: cuser.draft_comcoms_count), [:draft, :comments], class: 'btn btn-info btn-sm'
21
+ p
22
+ - if cuser.comments_admin?
23
+ = link_to t("the_comments.deleted_comments", num: cuser.deleted_comcoms_count), [:deleted, :comments], class: 'btn btn-default btn-sm'
24
+ = link_to t("the_comments.spam_comments", num: cuser.spam_comcoms_count), [:spam, :comments], class: 'btn btn-default btn-sm'
25
+ - else
26
+ span.btn.btn-default.btn-sm= t("the_comments.deleted_comments", num: cuser.deleted_comcoms_count)
27
+ span.btn.btn-default.btn-sm= t("the_comments.spam_comments", num: cuser.spam_comcoms_count)
28
+
29
+
@@ -1,4 +1,16 @@
1
+ - if commentable.comments_on?
2
+ h4.comments_sum
3
+ - if commentable.comments_sum.zero?
4
+ | Вы можете стать первым, кто оставит комментарий!
5
+ - else
6
+ | Комментариев: #{ commentable.comments_sum }
7
+
8
+ - unless current_user
9
+ .comments_description
10
+ p &mdash; Комментарий можно оставить <b>без регистрации</b>, для этого достаточно заполнить одно обязательное поле <b class='nobr'>Текст комментария</b>. Анонимные комментарии проходят модерацию и до момента одобрения видны только в браузере автора
11
+ p &mdash; Комментарии зарегистрированных пользователей публикуются сразу после создания
12
+
1
13
  .comments#comments
2
- ol.comments_tree data= { comments: { tolarance_time: TheComments.config.tolerance_time } }
14
+ ol.comments_tree data: { comments: { tolarance_time: TheComments.config.tolerance_time } }
3
15
  = render partial: 'the_comments/slim/comment', locals: { tree: comments_tree }
4
16
  = render partial: 'the_comments/slim/form', locals: { commentable: commentable }
@@ -9,9 +9,9 @@
9
9
 
10
10
  .comments
11
11
  - @comments.each do |comment|
12
- - klass = { published: :primary, draft: :warning, deleted: :danger }[comment.state.to_sym]
12
+ - klass = { published: :success, draft: :info, deleted: :danger }[comment.state.to_sym]
13
13
  .panel class: "panel-#{klass}"
14
- .panel-heading= comment.title
14
+ .panel-heading= comment.header_title
15
15
  .panel-body
16
16
  = render partial: 'the_comments/slim/comment_body', locals: { comment: comment }
17
17
 
@@ -12,14 +12,15 @@
12
12
 
13
13
  .comments
14
14
  - @comments.each do |comment|
15
- - klass = { published: :primary, draft: :warning, deleted: :danger }[comment.state.to_sym]
15
+ - klass = { published: :success, draft: :info, deleted: :danger }[comment.state.to_sym]
16
16
  .panel class: "panel-#{klass}"
17
- .panel-heading= comment.title
17
+ .panel-heading= comment.header_title
18
18
  .panel-body
19
- = render partial: 'the_comments/slim/comment_edit', locals: { comment: comment }
20
19
  = render partial: 'the_comments/slim/comment_body', locals: { comment: comment }
21
20
 
22
- = render partial: 'the_comments/slim/manage_controls', locals: { comment: comment }
23
- = render partial: 'the_comments/slim/additional_info', locals: { comment: comment }
24
-
21
+ - if current_user.comments_admin?
22
+ = render partial: 'the_comments/slim/comment_edit', locals: { comment: comment }
23
+ = render partial: 'the_comments/slim/manage_controls', locals: { comment: comment }
24
+ = render partial: 'the_comments/slim/additional_info', locals: { comment: comment }
25
+
25
26
  = paginate @comments
@@ -11,5 +11,4 @@ TheComments.configure do |config|
11
11
 
12
12
  config.empty_trap_protection = true
13
13
  config.tolerance_time_protection = true
14
- config.delete_descendants_on_node_delete = true
15
14
  end
@@ -12,16 +12,18 @@ ru:
12
12
 
13
13
  the_comments:
14
14
  incoming: "Входящие:"
15
- in_system: "Все в системе:"
16
- written_by_me: "Написанные мной:"
15
+ in_system: "Все в системе: %{num}"
16
+ written_by_me: "Написаны мной: %{num}"
17
+ for_my_posts: "К моим постам: %{num}"
17
18
  back_to_root: "&larr; На главную"
18
-
19
- my_comments: "Мои комментарии (%{num})"
20
- draft_comments: "Новые (%{num})"
21
- published_comments: "Опубликованные (%{num})"
22
- deleted_comments: "Удаленные (%{num})"
23
- spam_comments: "Спам (%{num})"
24
19
 
20
+ my_comments: "Мои комментарии %{num}"
21
+ draft_comments: "На модерации: %{num}"
22
+ published_comments: "Опубликованы: %{num}"
23
+ deleted_comments: "Удалены: %{num}"
24
+ spam_comments: "Спам: %{num}"
25
+
26
+ waiting_for_moderation: Комментарий ожидает проверки
25
27
  management: Управление комментариями
26
28
  new: "Написать новый комментарий"
27
29
  update: "Обновить"
@@ -43,7 +45,9 @@ ru:
43
45
  no_comments_here: Здесь нет комментариев
44
46
 
45
47
  nav:
46
- header: "Навигация"
48
+ header: Комментарии
49
+ to_root: На главную
50
+ all_incoming: Все входящие
47
51
 
48
52
  form:
49
53
  title: "Ваше имя:"
@@ -64,4 +68,4 @@ ru:
64
68
  delete_confirm: Вы уверены?
65
69
  waiting_for_moderation: Ожидает модерации
66
70
  ajax_requests_required: 'Извините, ожидается JavaScript/Ajax запрос'
67
- undefined_commentable: Комментируемый объект не определен
71
+ undefined_commentable: Комментируемый объект не определен
@@ -3,10 +3,12 @@ module TheComments
3
3
  def call mapper, options = {}
4
4
  mapper.collection do
5
5
  mapper.get :manage
6
+ mapper.get :my_comments
6
7
 
7
8
  mapper.get :my_draft
8
9
  mapper.get :my_published
9
- mapper.get :my_comments
10
+ mapper.get :my_deleted
11
+ mapper.get :my_spam
10
12
 
11
13
  mapper.get :draft
12
14
  mapper.get :published
@@ -33,4 +35,4 @@ module TheComments
33
35
  end
34
36
  end
35
37
  end
36
- end
38
+ end
@@ -2,27 +2,27 @@
2
2
 
3
3
  ### What's wrong with other gems?
4
4
 
5
- Just look at [Ruby-Toolbox](https://www.ruby-toolbox.com/categories/rails_comments). What we can see?
5
+ Take a look at [Ruby-Toolbox](https://www.ruby-toolbox.com/categories/rails_comments). What can we see?
6
6
 
7
- * [Acts as commentable with threading](https://github.com/elight/acts_as_commentable_with_threading) - so, guys, where is the render helper for the tree? There is no helper! Should I make render helper for tree by myself? Nooooo!!! I'm so sorry, but I can't use this gem.
8
- * [acts_as_commentable](https://github.com/jackdempsey/acts_as_commentable) - so, I can see code for models. But I can't see code for controllers and views. Unfortunately, there is no threading. It's not enough for me.
9
- * [opinio](https://github.com/Draiken/opinio) - looks better, but there is no threading. I want to have more!
10
- * [has_threaded_comments](https://github.com/aarongough/has_threaded_comments) - Nice work! Nice gem! Models, controllers, views, view helper for tree rendering! **But**, last activity 2 years ago, I need few features, I think - I can make it better.
7
+ * [Acts as commentable with threading](https://github.com/elight/acts_as_commentable_with_threading) - Where is the render helper for the tree? There is no helper! Am I supposed to write a render helper for the tree myself? Nooooo!!! I'm sorry, I can't use this gem.
8
+ * [acts_as_commentable](https://github.com/jackdempsey/acts_as_commentable) - I can see the code for models. But I can't see the code for controllers and views. Unfortunately, there is no threading. This isn't enough for me.
9
+ * [opinio](https://github.com/Draiken/opinio) - Better, but still no threading. I can do better!
10
+ * [has_threaded_comments](https://github.com/aarongough/has_threaded_comments) - A solid gem. Has model, controller and view helpers for tree rendering! **But** last activity was 2 years ago, it still needs a few features - I can do better.
11
11
 
12
- ### Why TheComments is better than others gems?
12
+ ### Why is TheComments better than other gems?
13
13
 
14
14
  1. TheComments allows for threaded comments
15
15
  2. **Only TheComments has special helper for tree rendering** (based on [TheSortableTree](https://github.com/the-teacher/the_sortable_tree)).
16
- 3. TheComments designed to reduce requests to database. I say about useful cache counters.
17
- 4. TheComments has solution for [building of Recent Comments](https://github.com/the-teacher/the_comments/blob/master/docs/denormalization_and_recent_comments.md) (for polymorphic relations)
18
- 5. TheComments designed for text preprocessors (Textile, Markdown, Sanitize, Coderay etc.)
19
- 6. TheComments has admin UI based on bootstrap 3
20
- 7. TheComments is "all-in-one" solutions.<br>
16
+ 3. TheComments is designed to reduce database requests. Helpful for cache counters.
17
+ 4. TheComments has a solution for [building Recent Comments](https://github.com/the-teacher/the_comments/blob/master/docs/denormalization_and_recent_comments.md) (for polymorphic relations)
18
+ 5. TheComments is designed for text preprocessors (Textile, Markdown, Sanitize, Coderay etc.)
19
+ 6. TheComments has an admin UI based on bootstrap 3
20
+ 7. TheComments is an "all-in-one" solution.<br>
21
21
  It has: Models and Controllers logic (via concerns), Generators, Views, Helper for fast Tree rendering and Admin UI.
22
- 8. I'll try to help you via skype: **ilya.killich**, if you have problems with TheComments
22
+ 8. If you have problems with TheComments, I'll try to help you via skype: **ilya.killich**
23
23
 
24
24
  ### TheComments based on:
25
25
 
26
26
  1. [AwesomeNestedSet](https://github.com/collectiveidea/awesome_nested_set) - for comments threading
27
27
  2. [TheSortableTree](https://github.com/the-teacher/the_sortable_tree) - for fast rendering of comments tree
28
- 3. [State Machine](https://github.com/pluginaweek/state_machine) - to provide easy and correct recalculation cache counters on states transitions
28
+ 3. [State Machine](https://github.com/pluginaweek/state_machine) - to provide easy and correct recalculation cache counters on states transitions
@@ -2,11 +2,11 @@
2
2
 
3
3
  ### Dummy Application
4
4
 
5
- Repo of TheComments has dummy application for developmet and testing.
5
+ TheComments repository contains a dummy application for development and testing.
6
6
 
7
7
  It's here: [Dummy App](https://github.com/the-teacher/the_comments/tree/master/spec/dummy_app)
8
8
 
9
- For run dummy app, your should do that:
9
+ To run the dummy app:
10
10
 
11
11
  ```ruby
12
12
  git clone https://github.com/the-teacher/the_comments.git
@@ -22,7 +22,7 @@ rails s -p 3000 -b localhost
22
22
 
23
23
  ### Run tests
24
24
 
25
- Following instructions should helps to run simple tests:
25
+ To run the RSPEC tests:
26
26
 
27
27
  ```ruby
28
28
  git clone https://github.com/the-teacher/the_comments.git
@@ -1,3 +1,3 @@
1
1
  module TheComments
2
- VERSION = "2.2.2"
3
- end
2
+ VERSION = "2.3.1"
3
+ end
@@ -1,19 +1,38 @@
1
1
  require 'state_machine'
2
+ require 'state_machine/version'
3
+
4
+ require 'the_simple_sort'
2
5
  require 'the_sortable_tree'
3
6
 
4
7
  require 'the_comments/config'
5
8
  require 'the_comments/version'
6
9
 
7
- _root_ = File.expand_path('../../', __FILE__)
8
-
9
10
  module TheComments
10
- class Engine < Rails::Engine; end
11
+ COMMENTS_COOKIES_TOKEN = 'JustTheCommentsCookies'
12
+
13
+ class Engine < Rails::Engine
14
+ config.autoload_paths += Dir["#{config.root}/app/controllers/concerns/**/"]
15
+ config.autoload_paths += Dir["#{config.root}/app/models/concerns/**/"]
16
+ end
11
17
  end
12
18
 
13
19
  # Loading of concerns
20
+ _root_ = File.expand_path('../../', __FILE__)
14
21
  require "#{_root_}/config/routes.rb"
15
- require "#{_root_}/app/controllers/concerns/controller.rb"
16
22
 
17
- %w[ comment_states comment user commentable ].each do |concern|
18
- require "#{_root_}/app/models/concerns/#{concern}.rb"
19
- end
23
+ if StateMachine::VERSION.to_f <= 1.2
24
+ puts '~' * 50
25
+ puts 'TheComments'
26
+ puts '~' * 50
27
+ puts 'WARNING!'
28
+ puts 'StateMachine patch for Rails4 will be applied'
29
+ puts
30
+ puts '> private method *around_validation* from StateMachine::Integrations::ActiveModel will be public'
31
+ puts
32
+ puts 'https://github.com/pluginaweek/state_machine/issues/295'
33
+ puts 'https://github.com/pluginaweek/state_machine/issues/251'
34
+ puts '~' * 50
35
+ module StateMachine::Integrations::ActiveModel
36
+ public :around_validation
37
+ end
38
+ end
@@ -19,8 +19,7 @@ module TheComments
19
19
  :default_title,
20
20
  :template_engine,
21
21
  :empty_trap_protection,
22
- :tolerance_time_protection,
23
- :delete_descendants_on_node_delete
22
+ :tolerance_time_protection
24
23
  end
25
24
 
26
25
  configure do |config|
@@ -34,7 +33,5 @@ module TheComments
34
33
 
35
34
  config.empty_trap_protection = true
36
35
  config.tolerance_time_protection = true
37
-
38
- config.delete_descendants_on_node_delete = true
39
36
  end
40
37
  end
@@ -1,7 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Base gems
4
- gem 'rails', '4.0.1' #github: 'rails/rails', branch: 'master'
4
+ gem 'rails', '4.1.4 ' #github: 'rails/rails', branch: 'master'
5
5
  gem 'sqlite3'
6
6
 
7
7
  gem 'jquery-rails'
@@ -40,4 +40,4 @@ group :development, :test do
40
40
  gem 'rspec-rails', '~> 2.0'
41
41
 
42
42
  # gem 'database_cleaner'
43
- end
43
+ end