the_comments 1.1.0 → 2.0.0
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.
- data/.rvmrc.example +1 -0
- data/.travis.yml +5 -0
- data/README.md +105 -425
- data/app/assets/javascripts/the_comments.js.coffee +12 -9
- data/app/assets/javascripts/the_comments_manage.js.coffee +19 -49
- data/app/assets/stylesheets/the_comments.css.scss +20 -29
- data/app/controllers/_templates_/comments_controller.rb +44 -0
- data/app/controllers/concerns/controller.rb +216 -0
- data/app/helpers/render_comments_tree_helper.rb +4 -7
- data/app/models/_templates_/comment.rb +38 -0
- data/app/models/concerns/comment.rb +103 -0
- data/app/models/concerns/comment_states.rb +80 -0
- data/app/models/concerns/commentable.rb +69 -0
- data/app/models/concerns/user.rb +52 -0
- data/app/views/the_comments/_tree.html.erb +3 -0
- data/app/views/the_comments/haml/_additional_info.html.haml +13 -0
- data/app/views/the_comments/{_comment.html.haml → haml/_comment.html.haml} +0 -0
- data/app/views/the_comments/haml/_comment_body.html.haml +20 -0
- data/app/views/the_comments/haml/_comment_edit.html.haml +26 -0
- data/app/views/the_comments/{_form.html.haml → haml/_form.html.haml} +8 -6
- data/app/views/the_comments/haml/_manage_controls.html.haml +27 -0
- data/app/views/the_comments/haml/_sidebar.html.haml +28 -0
- data/app/views/the_comments/haml/_tree.html.haml +4 -0
- data/app/views/the_comments/haml/index.html.haml +18 -0
- data/app/views/the_comments/haml/manage.html.haml +25 -0
- data/app/views/the_comments/haml/my_comments.html.haml +28 -0
- data/app/views/the_comments/slim/_additional_info.html.slim +13 -0
- data/app/views/the_comments/slim/_comment.html.slim +1 -0
- data/app/views/the_comments/slim/_comment_body.html.slim +20 -0
- data/app/views/the_comments/slim/_comment_edit.html.slim +26 -0
- data/app/views/the_comments/slim/_form.html.slim +27 -0
- data/app/views/the_comments/slim/_manage_controls.html.slim +27 -0
- data/app/views/the_comments/slim/_sidebar.html.slim +28 -0
- data/app/views/the_comments/slim/_tree.html.slim +4 -0
- data/app/views/the_comments/slim/index.html.slim +18 -0
- data/app/views/the_comments/slim/manage.html.slim +25 -0
- data/app/views/the_comments/slim/my_comments.html.slim +28 -0
- data/{lib/generators/the_comments/templates → config/initializers}/the_comments.rb +3 -0
- data/config/locales/en.yml +39 -14
- data/config/locales/ru.yml +67 -0
- data/config/routes.rb +17 -13
- data/db/migrate/20130101010101_change_user.rb +18 -0
- data/db/migrate/20130101010102_create_comments.rb +50 -0
- data/db/migrate/20130101010103_change_commentable.rb +13 -0
- data/docs/admin_ui_installation.md +145 -0
- data/docs/advanced_installation.md +182 -0
- data/docs/comment_api.md +58 -0
- data/docs/commentable_api.md +59 -0
- data/docs/config_file.md +27 -0
- data/docs/content_preprocessors.md +73 -0
- data/docs/customazation_of_views.md +30 -0
- data/docs/denormalization_and_recent_comments.md +40 -0
- data/docs/documentation.md +28 -0
- data/docs/mountable_routes.md +80 -0
- data/docs/pagination.md +123 -0
- data/docs/screencast.jpg +0 -0
- data/docs/user_api.md +75 -0
- data/docs/what_is_comcoms.md +63 -0
- data/docs/whats_wrong_with_other_gems.md +18 -0
- data/docs/where_is_example_application.md +37 -0
- data/gem_version.rb +3 -0
- data/lib/generators/the_comments/USAGE +31 -20
- data/lib/generators/the_comments/the_comments_generator.rb +35 -18
- data/lib/generators/the_comments/views_generator.rb +52 -16
- data/lib/the_comments/config.rb +14 -1
- data/lib/the_comments/version.rb +1 -3
- data/lib/the_comments.rb +10 -0
- data/spec/dummy_app/.gitignore +17 -0
- data/spec/dummy_app/.rspec +1 -0
- data/spec/dummy_app/.ruby-gemset +1 -0
- data/spec/dummy_app/.ruby-version +1 -0
- data/spec/dummy_app/Gemfile +43 -0
- data/spec/dummy_app/README.md +50 -0
- data/spec/dummy_app/Rakefile +6 -0
- data/spec/dummy_app/app/assets/images/.keep +0 -0
- data/spec/dummy_app/app/assets/javascripts/admin_panel.js +5 -0
- data/spec/dummy_app/app/assets/javascripts/application.js +16 -0
- data/spec/dummy_app/app/assets/stylesheets/admin_panel.css +3 -0
- data/spec/dummy_app/app/assets/stylesheets/app.css.scss +4 -0
- data/spec/dummy_app/app/assets/stylesheets/application.css +16 -0
- data/spec/dummy_app/app/controllers/application_controller.rb +7 -0
- data/{lib/generators/the_comments/templates → spec/dummy_app/app/controllers}/comments_controller.rb +3 -1
- data/spec/dummy_app/app/controllers/concerns/.keep +0 -0
- data/spec/dummy_app/app/controllers/posts_controller.rb +13 -0
- data/spec/dummy_app/app/controllers/users_controller.rb +7 -0
- data/spec/dummy_app/app/helpers/application_helper.rb +2 -0
- data/spec/dummy_app/app/mailers/.keep +0 -0
- data/spec/dummy_app/app/models/.keep +0 -0
- data/spec/dummy_app/app/models/comment.rb +32 -0
- data/spec/dummy_app/app/models/concerns/.keep +0 -0
- data/spec/dummy_app/app/models/post.rb +17 -0
- data/spec/dummy_app/app/models/user.rb +21 -0
- data/spec/dummy_app/app/views/layouts/admin.html.haml +25 -0
- data/spec/dummy_app/app/views/layouts/application.html.haml +20 -0
- data/spec/dummy_app/app/views/posts/index.html.haml +22 -0
- data/spec/dummy_app/app/views/posts/show.html.haml +7 -0
- data/spec/dummy_app/bin/bundle +3 -0
- data/spec/dummy_app/bin/rails +4 -0
- data/spec/dummy_app/bin/rake +4 -0
- data/spec/dummy_app/config/application.rb +23 -0
- data/spec/dummy_app/config/boot.rb +4 -0
- data/spec/dummy_app/config/database.yml +11 -0
- data/spec/dummy_app/config/environment.rb +5 -0
- data/spec/dummy_app/config/environments/development.rb +29 -0
- data/spec/dummy_app/config/environments/production.rb +80 -0
- data/spec/dummy_app/config/environments/test.rb +36 -0
- data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy_app/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy_app/config/initializers/inflections.rb +16 -0
- data/spec/dummy_app/config/initializers/mime_types.rb +5 -0
- data/spec/dummy_app/config/initializers/secret_token.rb +12 -0
- data/spec/dummy_app/config/initializers/session_store.rb +3 -0
- data/spec/dummy_app/config/initializers/sorcery.rb +437 -0
- data/spec/dummy_app/config/initializers/the_comments.rb +13 -0
- data/spec/dummy_app/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy_app/config/locales/en.yml +23 -0
- data/spec/dummy_app/config/routes.rb +15 -0
- data/spec/dummy_app/config.ru +4 -0
- data/spec/dummy_app/db/migrate/20130712061503_sorcery_core.rb +16 -0
- data/spec/dummy_app/db/migrate/20130712065951_create_posts.rb +11 -0
- data/spec/dummy_app/db/migrate/20131027185332_change_user.the_comments_engine.rb +19 -0
- data/spec/dummy_app/db/migrate/20131027185333_create_comments.the_comments_engine.rb +51 -0
- data/spec/dummy_app/db/migrate/20131027185334_change_commentable.the_comments_engine.rb +14 -0
- data/spec/dummy_app/db/schema.rb +74 -0
- data/spec/dummy_app/db/seeds.rb +42 -0
- data/spec/dummy_app/lib/assets/.keep +0 -0
- data/spec/dummy_app/lib/tasks/.keep +0 -0
- data/spec/dummy_app/lib/tasks/app_bootstrap.rake +15 -0
- data/spec/dummy_app/log/.keep +0 -0
- data/spec/dummy_app/public/404.html +58 -0
- data/spec/dummy_app/public/422.html +58 -0
- data/spec/dummy_app/public/500.html +57 -0
- data/spec/dummy_app/public/favicon.ico +0 -0
- data/spec/dummy_app/public/robots.txt +5 -0
- data/spec/dummy_app/spec/factories/post.rb +6 -0
- data/spec/dummy_app/spec/factories/user.rb +6 -0
- data/spec/dummy_app/spec/models/user_counters_spec.rb +339 -0
- data/spec/dummy_app/spec/spec_helper.rb +29 -0
- data/spec/dummy_app/test/controllers/.keep +0 -0
- data/spec/dummy_app/test/fixtures/.keep +0 -0
- data/spec/dummy_app/test/helpers/.keep +0 -0
- data/spec/dummy_app/test/integration/.keep +0 -0
- data/spec/dummy_app/test/mailers/.keep +0 -0
- data/spec/dummy_app/test/models/.keep +0 -0
- data/spec/dummy_app/test/test_helper.rb +15 -0
- data/spec/dummy_app/vendor/assets/javascripts/.keep +0 -0
- data/spec/dummy_app/vendor/assets/stylesheets/.keep +0 -0
- data/views_converter.rb +16 -0
- metadata +223 -45
- data/app/controllers/concerns/the_comments_controller.rb +0 -229
- data/app/controllers/concerns/the_comments_ip_controller.rb +0 -17
- data/app/controllers/concerns/the_comments_user_agent_controller.rb +0 -15
- data/app/models/concerns/the_comments_base.rb +0 -69
- data/app/models/concerns/the_comments_black_ip.rb +0 -9
- data/app/models/concerns/the_comments_black_user_agent.rb +0 -9
- data/app/models/concerns/the_comments_commentable.rb +0 -66
- data/app/models/concerns/the_comments_states.rb +0 -65
- data/app/models/concerns/the_comments_user.rb +0 -32
- data/app/views/ip_black_lists/index.html.haml +0 -17
- data/app/views/the_comments/_comment_body.html.haml +0 -30
- data/app/views/the_comments/_manage_controls.html.haml +0 -4
- data/app/views/the_comments/_tree.html.haml +0 -4
- data/app/views/the_comments/index.html.haml +0 -19
- data/app/views/the_comments/manage.html.haml +0 -29
- data/app/views/user_agent_black_lists/index.html.haml +0 -17
- data/db/migrate/20130101010101_create_comments.rb +0 -90
- data/lib/generators/the_comments/templates/ip_black_list.rb +0 -3
- data/lib/generators/the_comments/templates/ip_black_lists_controller.rb +0 -10
- data/lib/generators/the_comments/templates/the_comments_black_ip.rb +0 -9
- data/lib/generators/the_comments/templates/the_comments_black_user_agent.rb +0 -9
- data/lib/generators/the_comments/templates/user_agent_black_list.rb +0 -3
- data/lib/generators/the_comments/templates/user_agent_black_lists_controller.rb +0 -10
|
@@ -1,33 +1,44 @@
|
|
|
1
1
|
Description:
|
|
2
|
-
TheComments
|
|
2
|
+
TheComments: generators will copy files for organize comments tree in your web project
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
bundle exec rails g the_comments
|
|
4
|
+
Usage: [bundle exec] rails g the_comments NAME
|
|
5
|
+
Usage: [bundle exec] rails g the_comments:views NAME
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
# This text:
|
|
8
|
+
> rails g the_comments --help
|
|
9
|
+
|
|
10
|
+
# Main generators:
|
|
11
|
+
> rails g the_comments install
|
|
9
12
|
|
|
10
13
|
This will create:
|
|
11
14
|
config/initializers/the_comments.rb
|
|
12
|
-
|
|
13
|
-
app/models/ip_black_list.rb
|
|
14
|
-
app/models/user_agent_black_list.rb
|
|
15
|
-
|
|
16
15
|
app/controllers/comments_controller.rb
|
|
17
|
-
app/
|
|
18
|
-
app/controllers/user_agent_black_lists_controller.rb
|
|
16
|
+
app/models/comment.rb
|
|
19
17
|
|
|
20
|
-
|
|
18
|
+
# Controller generators:
|
|
19
|
+
> rails g the_comments controllers
|
|
21
20
|
|
|
22
21
|
This will create:
|
|
23
22
|
app/controllers/comments_controller.rb
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
|
|
24
|
+
# Model generators:
|
|
25
|
+
> rails g the_comments models
|
|
26
|
+
|
|
27
|
+
This will create:
|
|
28
|
+
app/models/comment.rb
|
|
29
|
+
|
|
30
|
+
# Config generators:
|
|
31
|
+
> rails g the_comments config
|
|
32
|
+
|
|
33
|
+
# Locals generators:
|
|
34
|
+
> rails g the_comments locales
|
|
26
35
|
|
|
27
|
-
View Generators:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
36
|
+
# View Generators:
|
|
37
|
+
> rails g the_comments:views js
|
|
38
|
+
> rails g the_comments:views css
|
|
39
|
+
> rails g the_comments:views assets
|
|
40
|
+
> rails g the_comments:views helper
|
|
41
|
+
> rails g the_comments:views views
|
|
31
42
|
|
|
32
|
-
Migrations:
|
|
33
|
-
|
|
43
|
+
# Migrations:
|
|
44
|
+
> rake the_comments_engine:install:migrations
|
|
@@ -2,38 +2,55 @@ class TheCommentsGenerator < Rails::Generators::NamedBase
|
|
|
2
2
|
source_root File.expand_path('../templates', __FILE__)
|
|
3
3
|
# argument :xname, type: :string, default: :xname
|
|
4
4
|
|
|
5
|
+
# > rails g the_comments NAME
|
|
5
6
|
def generate_controllers
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
case gen_name
|
|
8
|
+
when 'locales'
|
|
9
|
+
cp_locales
|
|
10
|
+
when 'models'
|
|
11
|
+
cp_models
|
|
12
|
+
when 'controllers'
|
|
13
|
+
cp_controllers
|
|
14
|
+
when 'config'
|
|
15
|
+
cp_config
|
|
16
|
+
when 'install'
|
|
17
|
+
cp_config
|
|
18
|
+
cp_models
|
|
19
|
+
cp_controllers
|
|
20
|
+
else
|
|
21
|
+
puts 'TheComments Generator - wrong Name'
|
|
22
|
+
puts 'Try to use [ install | config | controllers | models ]'
|
|
16
23
|
end
|
|
17
24
|
end
|
|
18
25
|
|
|
19
26
|
private
|
|
20
27
|
|
|
28
|
+
def root_path; TheComments::Engine.root; end
|
|
29
|
+
|
|
21
30
|
def gen_name
|
|
22
31
|
name.to_s.downcase
|
|
23
32
|
end
|
|
24
33
|
|
|
25
|
-
def
|
|
26
|
-
copy_file
|
|
34
|
+
def cp_config
|
|
35
|
+
copy_file "#{root_path}/config/initializers/the_comments.rb",
|
|
36
|
+
"config/initializers/the_comments.rb"
|
|
27
37
|
end
|
|
28
38
|
|
|
29
39
|
def cp_models
|
|
30
|
-
copy_file
|
|
31
|
-
|
|
40
|
+
copy_file "#{root_path}/app/models/_templates_/comment.rb",
|
|
41
|
+
"app/models/comment.rb"
|
|
32
42
|
end
|
|
33
43
|
|
|
34
44
|
def cp_controllers
|
|
35
|
-
copy_file
|
|
36
|
-
|
|
37
|
-
|
|
45
|
+
copy_file "#{root_path}/app/controllers/_templates_/comments_controller.rb",
|
|
46
|
+
"app/controllers/comments_controller.rb"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def cp_locales
|
|
50
|
+
copy_file "#{root_path}/config/locales/en.yml",
|
|
51
|
+
"config/locales/en.the_comments.yml"
|
|
52
|
+
|
|
53
|
+
copy_file "#{root_path}/config/locales/ru.yml",
|
|
54
|
+
"config/locales/ru.the_comments.yml"
|
|
38
55
|
end
|
|
39
|
-
end
|
|
56
|
+
end
|
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
module TheComments
|
|
2
2
|
module Generators
|
|
3
3
|
class ViewsGenerator < Rails::Generators::NamedBase
|
|
4
|
-
source_root
|
|
4
|
+
source_root TheComments::Engine.root
|
|
5
5
|
|
|
6
6
|
def self.banner
|
|
7
7
|
<<-BANNER.chomp
|
|
8
8
|
|
|
9
|
-
bundle exec rails g the_comments:views
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
USAGE: [bundle exec] rails g the_comments:views NAME
|
|
10
|
+
|
|
11
|
+
> rails g the_comments:views js
|
|
12
|
+
> rails g the_comments:views css
|
|
13
|
+
> rails g the_comments:views assets
|
|
14
|
+
|
|
15
|
+
> rails g the_comments:views views
|
|
16
|
+
> rails g the_comments:views helper
|
|
17
|
+
|
|
18
|
+
> rails g the_comments:views all
|
|
12
19
|
|
|
13
20
|
BANNER
|
|
14
21
|
end
|
|
@@ -24,20 +31,49 @@ BANNER
|
|
|
24
31
|
end
|
|
25
32
|
|
|
26
33
|
def copy_gem_files
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
case param_name
|
|
35
|
+
when 'js'
|
|
36
|
+
js_copy
|
|
37
|
+
when 'css'
|
|
38
|
+
css_copy
|
|
39
|
+
when 'assets'
|
|
40
|
+
js_copy; css_copy
|
|
41
|
+
when 'views'
|
|
42
|
+
views_copy
|
|
43
|
+
when 'helper'
|
|
44
|
+
helper_copy
|
|
45
|
+
when 'all'
|
|
46
|
+
js_copy
|
|
47
|
+
css_copy
|
|
48
|
+
views_copy
|
|
49
|
+
helper_copy
|
|
50
|
+
else
|
|
51
|
+
puts 'TheComments View Generator - wrong Name'
|
|
52
|
+
puts "Wrong params - use only [ js | css | assets | views | helper | all ] values"
|
|
38
53
|
end
|
|
39
54
|
end
|
|
40
55
|
|
|
56
|
+
def js_copy
|
|
57
|
+
f1 = "app/assets/javascripts/the_comments.js.coffee"
|
|
58
|
+
f2 = "app/assets/javascripts/the_comments_manage.js.coffee"
|
|
59
|
+
copy_file f1, f1
|
|
60
|
+
copy_file f2, f2
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def css_copy
|
|
64
|
+
f1 = "app/assets/stylesheets/the_comments.css.scss"
|
|
65
|
+
copy_file f1, f1
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def views_copy
|
|
69
|
+
d1 = "app/views/the_comments"
|
|
70
|
+
directory d1, d1
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def helper_copy
|
|
74
|
+
f1 = "app/helpers/render_comments_tree_helper.rb"
|
|
75
|
+
copy_file f1, f1
|
|
76
|
+
end
|
|
41
77
|
end
|
|
42
78
|
end
|
|
43
|
-
end
|
|
79
|
+
end
|
data/lib/the_comments/config.rb
CHANGED
|
@@ -10,7 +10,16 @@ module TheComments
|
|
|
10
10
|
# Configuration class
|
|
11
11
|
class Configuration
|
|
12
12
|
include ActiveSupport::Configurable
|
|
13
|
-
|
|
13
|
+
|
|
14
|
+
config_accessor :max_reply_depth,
|
|
15
|
+
:tolerance_time,
|
|
16
|
+
:default_state,
|
|
17
|
+
:default_owner_state,
|
|
18
|
+
:empty_inputs,
|
|
19
|
+
:default_title,
|
|
20
|
+
:template_engine,
|
|
21
|
+
:empty_trap_protection,
|
|
22
|
+
:tolerance_time_protection
|
|
14
23
|
end
|
|
15
24
|
|
|
16
25
|
configure do |config|
|
|
@@ -20,5 +29,9 @@ module TheComments
|
|
|
20
29
|
config.default_owner_state = :published
|
|
21
30
|
config.empty_inputs = [:message]
|
|
22
31
|
config.default_title = 'Undefined title'
|
|
32
|
+
config.template_engine = :haml
|
|
33
|
+
|
|
34
|
+
config.empty_trap_protection = true
|
|
35
|
+
config.tolerance_time_protection = true
|
|
23
36
|
end
|
|
24
37
|
end
|
data/lib/the_comments/version.rb
CHANGED
data/lib/the_comments.rb
CHANGED
|
@@ -7,3 +7,13 @@ require 'the_comments/version'
|
|
|
7
7
|
module TheComments
|
|
8
8
|
class Engine < Rails::Engine; end
|
|
9
9
|
end
|
|
10
|
+
|
|
11
|
+
# Loading of concerns
|
|
12
|
+
|
|
13
|
+
# controllers
|
|
14
|
+
require "../../app/controllers/concerns/controller"
|
|
15
|
+
|
|
16
|
+
# models
|
|
17
|
+
%w[ comment_states comment user commentable ].each do |concern|
|
|
18
|
+
require "../../app/models/concerns/#{concern}"
|
|
19
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# See http://help.github.com/ignore-files/ for more about ignoring files.
|
|
2
|
+
#
|
|
3
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
|
4
|
+
# or operating system, you probably want to add a global ignore instead:
|
|
5
|
+
# git config --global core.excludesfile '~/.gitignore_global'
|
|
6
|
+
|
|
7
|
+
# Ignore bundler config.
|
|
8
|
+
/.bundle
|
|
9
|
+
|
|
10
|
+
# Ignore the default SQLite database.
|
|
11
|
+
/db/*.db
|
|
12
|
+
/db/*.sqlite3
|
|
13
|
+
/db/*.sqlite3-journal
|
|
14
|
+
|
|
15
|
+
# Ignore all logfiles and tempfiles.
|
|
16
|
+
/log/*.log
|
|
17
|
+
/tmp
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--color
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
the_comments
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ruby-2.0.0-p247
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
# Base gems
|
|
4
|
+
gem 'rails', '4.0.1' #github: 'rails/rails', branch: 'master'
|
|
5
|
+
gem 'sqlite3'
|
|
6
|
+
|
|
7
|
+
gem 'jquery-rails'
|
|
8
|
+
gem 'jbuilder', '~> 1.2'
|
|
9
|
+
|
|
10
|
+
gem 'uglifier', '>= 1.3.0'
|
|
11
|
+
gem 'sass-rails', '~> 4.0.0'
|
|
12
|
+
gem 'coffee-rails', '~> 4.0.0'
|
|
13
|
+
|
|
14
|
+
gem 'thin', group: [:development]
|
|
15
|
+
gem 'therubyracer', platforms: :ruby
|
|
16
|
+
gem 'sdoc', require: false, group: [:doc]
|
|
17
|
+
|
|
18
|
+
# App gems
|
|
19
|
+
gem 'haml'
|
|
20
|
+
gem 'sorcery'
|
|
21
|
+
gem 'kaminari'
|
|
22
|
+
gem 'haml-rails'
|
|
23
|
+
|
|
24
|
+
# TheComments requires
|
|
25
|
+
gem 'the_comments',
|
|
26
|
+
path: '../../'
|
|
27
|
+
|
|
28
|
+
gem 'bootstrap-sass',
|
|
29
|
+
github: 'thomas-mcdonald/bootstrap-sass'
|
|
30
|
+
|
|
31
|
+
gem 'awesome_nested_set',
|
|
32
|
+
git: 'https://github.com/collectiveidea/awesome_nested_set.git',
|
|
33
|
+
branch: 'master'
|
|
34
|
+
|
|
35
|
+
# Test gems
|
|
36
|
+
group :development, :test do
|
|
37
|
+
gem 'faker'
|
|
38
|
+
gem 'factory_girl'
|
|
39
|
+
gem "factory_girl_rails"
|
|
40
|
+
gem 'rspec-rails', '~> 2.0'
|
|
41
|
+
|
|
42
|
+
# gem 'database_cleaner'
|
|
43
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
## TheComments Dummy App
|
|
2
|
+
|
|
3
|
+
### First step
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
git clone https://github.com/the-teacher/the_comments.git
|
|
7
|
+
|
|
8
|
+
cd the_comments/spec/dummy_app/
|
|
9
|
+
|
|
10
|
+
bundle
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### App start
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
rake db:bootstrap_and_seed
|
|
17
|
+
|
|
18
|
+
rails s -p 3000 -b localhost
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Browser
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
http://localhost:3000/
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Tests start
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
rake db:bootstrap RAILS_ENV=test
|
|
31
|
+
|
|
32
|
+
rspec --format documentation
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Only for me (don't read this)
|
|
36
|
+
|
|
37
|
+
base install commands
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
rails g sorcery:install
|
|
41
|
+
rails generate rspec:install
|
|
42
|
+
|
|
43
|
+
rails g the_comments install
|
|
44
|
+
rails g the_comments:views views
|
|
45
|
+
rails g model post user_id:integer title:string content:text
|
|
46
|
+
|
|
47
|
+
rake the_comments_engine:install:migrations (EDIT!)
|
|
48
|
+
|
|
49
|
+
rake db:bootstrap
|
|
50
|
+
```
|
|
File without changes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
|
2
|
+
// listed below.
|
|
3
|
+
//
|
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
|
5
|
+
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
|
6
|
+
//
|
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
|
8
|
+
// compiled file.
|
|
9
|
+
//
|
|
10
|
+
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
|
|
11
|
+
// about supported directives.
|
|
12
|
+
//
|
|
13
|
+
//= require jquery
|
|
14
|
+
//= require jquery_ujs
|
|
15
|
+
|
|
16
|
+
//= require the_comments
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
|
3
|
+
* listed below.
|
|
4
|
+
*
|
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
|
6
|
+
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
|
7
|
+
*
|
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the top of the
|
|
9
|
+
* compiled file, but it's generally better to create a new file per style scope.
|
|
10
|
+
*
|
|
11
|
+
|
|
12
|
+
*= require_self
|
|
13
|
+
*= require app
|
|
14
|
+
*= require the_comments
|
|
15
|
+
|
|
16
|
+
*/
|
data/{lib/generators/the_comments/templates → spec/dummy_app/app/controllers}/comments_controller.rb
RENAMED
|
@@ -6,7 +6,9 @@ class CommentsController < ApplicationController
|
|
|
6
6
|
# before_action :owner_required, only: [:my, :incoming, :edit, :trash]
|
|
7
7
|
# before_action :moderator_required, only: [:update, :to_published, :to_draft, :to_spam, :to_trash]
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
layout 'admin'
|
|
10
|
+
|
|
11
|
+
include TheComments::Controller
|
|
10
12
|
|
|
11
13
|
# Public methods:
|
|
12
14
|
#
|
|
File without changes
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class PostsController < ApplicationController
|
|
2
|
+
def index
|
|
3
|
+
@posts = Post.all
|
|
4
|
+
@recent_comments = Comment.with_state(:published)
|
|
5
|
+
.where(commentable_state: [:published])
|
|
6
|
+
.recent.page(params[:page])
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def show
|
|
10
|
+
@post = Post.find params[:id]
|
|
11
|
+
@comments = @post.comments.with_state([:draft, :published]).nested_set
|
|
12
|
+
end
|
|
13
|
+
end
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
class Comment < ActiveRecord::Base
|
|
2
|
+
include TheComments::Comment
|
|
3
|
+
# ---------------------------------------------------
|
|
4
|
+
# Define comment's avatar url
|
|
5
|
+
# Usually we use Comment#user (owner of comment) to define avatar
|
|
6
|
+
# @blog.comments.includes(:user) <= use includes(:user) to decrease queries count
|
|
7
|
+
# comment#user.avatar_url
|
|
8
|
+
# ---------------------------------------------------
|
|
9
|
+
|
|
10
|
+
# ---------------------------------------------------
|
|
11
|
+
# Simple way to define avatar url
|
|
12
|
+
|
|
13
|
+
# def avatar_url
|
|
14
|
+
# hash = Digest::MD5.hexdigest self.id.to_s
|
|
15
|
+
# "http://www.gravatar.com/avatar/#{hash}?s=30&d=identicon"
|
|
16
|
+
# end
|
|
17
|
+
# ---------------------------------------------------
|
|
18
|
+
|
|
19
|
+
# ---------------------------------------------------
|
|
20
|
+
# Define your filters for content
|
|
21
|
+
# Expample for: gem 'RedCloth', gem 'sanitize'
|
|
22
|
+
# your personal SmilesProcessor
|
|
23
|
+
|
|
24
|
+
# def prepare_content
|
|
25
|
+
# text = self.raw_content
|
|
26
|
+
# text = RedCloth.new(text).to_html
|
|
27
|
+
# text = SmilesProcessor.new(text)
|
|
28
|
+
# text = Sanitize.clean(text, Sanitize::Config::RELAXED)
|
|
29
|
+
# self.content = text
|
|
30
|
+
# end
|
|
31
|
+
# ---------------------------------------------------
|
|
32
|
+
end
|
|
File without changes
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
class Post < ActiveRecord::Base
|
|
2
|
+
include TheComments::Commentable
|
|
3
|
+
|
|
4
|
+
belongs_to :user
|
|
5
|
+
|
|
6
|
+
def commentable_title
|
|
7
|
+
title
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def commentable_url
|
|
11
|
+
['', self.class.to_s.tableize, id].join('/')
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def commentable_state
|
|
15
|
+
:published.to_s
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
class User < ActiveRecord::Base
|
|
2
|
+
include TheComments::User
|
|
3
|
+
include TheComments::Commentable
|
|
4
|
+
|
|
5
|
+
authenticates_with_sorcery!
|
|
6
|
+
|
|
7
|
+
has_many :posts
|
|
8
|
+
|
|
9
|
+
# can be replaced to TheCommentsUser as default
|
|
10
|
+
def admin?
|
|
11
|
+
self == User.first
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def comments_admin?
|
|
15
|
+
admin?
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def comments_moderator? comment
|
|
19
|
+
id == comment.holder_id
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
!!! 5
|
|
2
|
+
%html(lang="ru")
|
|
3
|
+
%head
|
|
4
|
+
%meta(charset="utf-8")
|
|
5
|
+
%meta(http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1")
|
|
6
|
+
%meta(name="viewport" content="width=device-width, initial-scale=1.0")
|
|
7
|
+
%title= content_for?(:title) ? yield(:title) : "Admin Panel"
|
|
8
|
+
%link(href="favicon.ico" rel="shortcut icon")
|
|
9
|
+
|
|
10
|
+
= stylesheet_link_tag :admin_panel
|
|
11
|
+
= javascript_include_tag :admin_panel
|
|
12
|
+
= csrf_meta_tags
|
|
13
|
+
|
|
14
|
+
%body
|
|
15
|
+
.container
|
|
16
|
+
.row
|
|
17
|
+
.col-md-12
|
|
18
|
+
%h3= content_for?(:title) ? yield(:title) : "Admin Panel"
|
|
19
|
+
.row
|
|
20
|
+
.col-md-3
|
|
21
|
+
= yield :comments_sidebar
|
|
22
|
+
.col-md-9
|
|
23
|
+
= yield :comments_main
|
|
24
|
+
|
|
25
|
+
= stylesheet_link_tag "//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.min.css"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
!!!
|
|
2
|
+
%html
|
|
3
|
+
%head
|
|
4
|
+
%title TheComments Dummy App
|
|
5
|
+
= stylesheet_link_tag :application, media: :all
|
|
6
|
+
= javascript_include_tag :application
|
|
7
|
+
= csrf_meta_tags
|
|
8
|
+
|
|
9
|
+
%body
|
|
10
|
+
.body
|
|
11
|
+
%p
|
|
12
|
+
= link_to 'Home', root_path
|
|
13
|
+
\|
|
|
14
|
+
- if current_user
|
|
15
|
+
User: #{current_user.username}
|
|
16
|
+
\|
|
|
17
|
+
= link_to "Comments Manage (+#{current_user.draft_comcoms_count})", comments.manage_comments_path
|
|
18
|
+
- else
|
|
19
|
+
Guest
|
|
20
|
+
= yield
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
%h3 Posts:
|
|
2
|
+
%ul
|
|
3
|
+
- @posts.each do |post|
|
|
4
|
+
%li
|
|
5
|
+
= link_to post_url(post) do
|
|
6
|
+
= "#{post.title} (#{post.comments_sum})"
|
|
7
|
+
|
|
8
|
+
%h3 Autologin Users:
|
|
9
|
+
%ul
|
|
10
|
+
- User.all.each do |user|
|
|
11
|
+
%li
|
|
12
|
+
= link_to autologin_url(user) do
|
|
13
|
+
- admin = user.comments_admin? ? '[Admin]' : nil
|
|
14
|
+
= "#{user.username} (#{user.draft_comcoms_count}) #{admin}"
|
|
15
|
+
|
|
16
|
+
%h3 Recent Comments:
|
|
17
|
+
%ul
|
|
18
|
+
- @recent_comments.each do |comment|
|
|
19
|
+
%p
|
|
20
|
+
%b= link_to comment.commentable_title, comment.commentable_url
|
|
21
|
+
%br
|
|
22
|
+
%i= comment.content
|