community_engine 2.3.1 → 2.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +6 -14
  2. data/.travis.yml +2 -2
  3. data/CHANGELOG +1 -0
  4. data/Gemfile +2 -0
  5. data/README.markdown +101 -57
  6. data/about.yml +1 -1
  7. data/app/controllers/authorizations_controller.rb +2 -1
  8. data/app/controllers/base_controller.rb +31 -43
  9. data/app/controllers/comments_controller.rb +11 -5
  10. data/app/controllers/messages_controller.rb +1 -1
  11. data/app/controllers/password_resets_controller.rb +4 -4
  12. data/app/controllers/sessions_controller.rb +3 -4
  13. data/app/helpers/base_helper.rb +47 -43
  14. data/app/models/album.rb +3 -3
  15. data/app/models/authorization.rb +14 -14
  16. data/app/models/clipping.rb +13 -13
  17. data/app/models/clipping_image.rb +4 -4
  18. data/app/models/comment.rb +18 -10
  19. data/app/models/event.rb +12 -12
  20. data/app/models/homepage_feature.rb +4 -4
  21. data/app/models/message.rb +2 -2
  22. data/app/models/metro_area.rb +1 -1
  23. data/app/models/photo.rb +4 -4
  24. data/app/models/poll.rb +1 -1
  25. data/app/models/post.rb +48 -48
  26. data/app/models/sb_post.rb +1 -1
  27. data/app/models/topic.rb +2 -2
  28. data/app/models/user.rb +3 -2
  29. data/app/views/admin/comments.html.haml +11 -8
  30. data/app/views/admin/users.html.haml +6 -4
  31. data/app/views/comments/_comment.html.haml +3 -0
  32. data/app/views/comments/approve.js.haml +1 -0
  33. data/app/views/layouts/application.html.haml +16 -16
  34. data/app/views/messages/_sent.html.haml +2 -2
  35. data/app/views/users/_search_options.html.haml +2 -2
  36. data/app/views/users/new.html.haml +4 -4
  37. data/community_engine.gemspec +4 -3
  38. data/config/locales/en.yml +10 -4
  39. data/config/routes.rb +35 -34
  40. data/db/migrate/090_add_comment_role.rb +15 -0
  41. data/lib/community_engine/authenticated_system.rb +11 -11
  42. data/lib/community_engine/engines_extensions.rb +14 -2
  43. data/lib/community_engine/version.rb +1 -1
  44. data/lib/tasks/community_engine_tasks.rake +3 -72
  45. data/test/functional/authorizations_controller_test.rb +60 -0
  46. data/test/functional/comments_controller_test.rb +44 -67
  47. data/test/functional/password_reset_controller_test.rb +14 -6
  48. data/test/functional/sessions_controller_test.rb +3 -3
  49. data/test/functional/topics_controller_test.rb +2 -2
  50. data/test/test_helper.rb +1 -8
  51. data/test/testapp/config/application.rb +4 -0
  52. data/test/testapp/db/schema.rb +4 -3
  53. data/test/unit/comment_test.rb +85 -28
  54. metadata +53 -49
  55. data/lib/community_engine/rails_asset_extensions.rb +0 -131
@@ -16,11 +16,19 @@ class PasswordResetsControllerTest < ActionController::TestCase
16
16
  assert_redirected_to login_path
17
17
  end
18
18
  end
19
-
19
+
20
+ test "should post to create and ignore email case" do
21
+ assert_difference ActionMailer::Base.deliveries, :length, 1 do
22
+ post :create, :email => users(:quentin).email.capitalize
23
+ assert_response :redirect
24
+ assert_redirected_to login_path
25
+ end
26
+ end
27
+
20
28
  test "should get edit and respond with success" do
21
- get :edit, :id => users(:quentin).perishable_token
22
-
23
- assert_response :success
29
+ get :edit, :id => users(:quentin).perishable_token
30
+
31
+ assert_response :success
24
32
  end
25
33
 
26
34
  test "should put to update and redirect to dashboard" do
@@ -28,7 +36,7 @@ class PasswordResetsControllerTest < ActionController::TestCase
28
36
 
29
37
  put :update, :id => @user.perishable_token, :user => { :password => "newpassword" }
30
38
 
31
- assert_redirected_to dashboard_user_path(@user)
39
+ assert_redirected_to dashboard_user_path(@user)
32
40
  end
33
41
 
34
- end
42
+ end
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class SessionsControllerTest < ActionController::TestCase
3
+ class SessionsControllerTest < ActionController::TestCase
4
4
  fixtures :all
5
5
 
6
6
  def test_should_login_and_redirect
@@ -21,7 +21,7 @@ class SessionsControllerTest < ActionController::TestCase
21
21
  assert_nil UserSession.find
22
22
  assert_response :redirect
23
23
  end
24
-
24
+
25
25
  def test_should_delete_token_on_logout
26
26
  login_as :quentin
27
27
  get :destroy
@@ -42,7 +42,7 @@ class SessionsControllerTest < ActionController::TestCase
42
42
  @request.cookies["user_credentials"] = {:value => {:value => 'invalid_token'}, :expires => nil}
43
43
  assert !@controller.send(:logged_in?)
44
44
  end
45
-
45
+
46
46
  def test_should_login_with_reset_password
47
47
  quentin = users(:quentin)
48
48
  quentin.reset_password
@@ -54,7 +54,7 @@ class TopicsControllerTest < ActionController::TestCase
54
54
 
55
55
  def test_should_allow_admin_to_sticky_and_lock
56
56
  login_as :admin
57
- post :create, :forum_id => forums(:rails).id, :topic => { :title => 'blah2', :sticky => "1", :locked => "1", :body => 'foo' }
57
+ post :create, :forum_id => forums(:rails).id, :topic => { :title => 'blah2', :sticky => "1", :locked => "1", :sb_posts_attributes => { "0" => { :body => 'foo' } } }
58
58
  assert assigns(:topic).sticky?
59
59
  assert assigns(:topic).locked?
60
60
  end
@@ -174,7 +174,7 @@ class TopicsControllerTest < ActionController::TestCase
174
174
 
175
175
  def test_should_not_update_user_id_of_own_post
176
176
  login_as :sam
177
- put :update, :forum_id => forums(:rails).id, :id => topics(:ponies).id, :topic => { :user_id => 32 }
177
+ put :update, :forum_id => forums(:rails).id, :id => topics(:ponies).id, :topic => { :user_id => users(:aaron).id }
178
178
  assert_redirected_to forum_topic_path(forums(:rails), assigns(:topic))
179
179
  assert_equal users(:sam).id, sb_posts(:ponies).reload.user_id
180
180
  end
@@ -12,18 +12,11 @@ Rails.backtrace_cleaner.remove_silencers!
12
12
 
13
13
  require "authlogic/test_case"
14
14
  require "community_engine/authenticated_test_helper"
15
+ require "mocha/setup"
15
16
 
16
17
  ActiveSupport::TestCase.fixture_path = (Rails.root + "../fixtures").to_s #we want a string here, not a Pathname
17
18
  ActionController::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path
18
19
 
19
- # OmniAuth.config.test_mode = true
20
- # OmniAuth.config.mock_auth[:default] = {
21
- # 'uid' => '123545'
22
- # 'nickname' => 'Omniauth-user'
23
- # 'email' => 'email@example.com'
24
- # }
25
-
26
-
27
20
  class ActionController::TestCase
28
21
  setup :activate_authlogic
29
22
  end
@@ -41,5 +41,9 @@ module Dummy
41
41
 
42
42
  # Configure sensitive parameters which will be filtered from the log file.
43
43
  config.filter_parameters += [:password]
44
+
45
+ # Raise exception on mass assignment protection for Active Record models
46
+ config.active_record.mass_assignment_sanitizer = :strict
47
+
44
48
  end
45
49
  end
@@ -11,7 +11,7 @@
11
11
  #
12
12
  # It's strongly recommended to check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(:version => 80) do
14
+ ActiveRecord::Schema.define(:version => 90) do
15
15
 
16
16
  create_table "activities", :force => true do |t|
17
17
  t.integer "user_id", :limit => 10
@@ -107,14 +107,15 @@ ActiveRecord::Schema.define(:version => 80) do
107
107
  t.string "commentable_type"
108
108
  t.integer "user_id"
109
109
  t.integer "recipient_id"
110
- t.datetime "created_at", :null => false
111
- t.datetime "updated_at", :null => false
110
+ t.datetime "created_at", :null => false
111
+ t.datetime "updated_at", :null => false
112
112
  t.text "comment"
113
113
  t.string "author_name"
114
114
  t.string "author_email"
115
115
  t.string "author_url"
116
116
  t.string "author_ip"
117
117
  t.boolean "notify_by_email", :default => true
118
+ t.string "role", :default => "comments"
118
119
  end
119
120
 
120
121
  add_index "comments", ["commentable_id"], :name => "index_comments_on_commentable_id"
@@ -7,101 +7,158 @@ class CommentTest < ActiveSupport::TestCase
7
7
  comments = Comment.find_comments_by_user(users(:quentin))
8
8
  assert !comments.empty?
9
9
  end
10
-
10
+
11
11
  def test_comment_can_be_deleted_by
12
12
  comment = comments(:aarons_comment_on_quentins_post)
13
13
  assert comment.can_be_deleted_by(users(:aaron))
14
- assert comment.can_be_deleted_by(users(:quentin))
14
+ assert comment.can_be_deleted_by(users(:quentin))
15
15
  assert !comment.can_be_deleted_by(users(:florian))
16
16
  end
17
-
18
- def test_should_be_created_anonymously
17
+
18
+ def test_should_be_created_anonymously
19
19
  configatron.allow_anonymous_commenting = true
20
20
  assert_difference Comment, :count, 1 do
21
21
  comment = users(:quentin).comments.create!(
22
- :comment => 'foo',
23
- :author_email => 'bar@foo.com',
24
- :author_ip => '123.123.123',
22
+ :comment => 'foo',
23
+ :author_email => 'bar@foo.com',
24
+ :author_ip => '123.123.123',
25
25
  :recipient => users(:quentin)
26
26
  )
27
27
  end
28
28
  configatron.allow_anonymous_commenting = false
29
29
  end
30
-
30
+
31
31
  def test_should_notify_previous_anonymous_commenter
32
32
  configatron.allow_anonymous_commenting = true
33
33
  users(:quentin).comments.create!(:comment => 'foo', :author_email => 'bruno@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin))
34
- users(:quentin).comments.create!(:comment => 'bar', :author_email => 'bruno@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin))
34
+ users(:quentin).comments.create!(:comment => 'bar', :author_email => 'bruno@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin))
35
35
 
36
- comment = users(:quentin).comments.create!(:comment => 'bar', :author_email => 'alicia@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin))
36
+ comment = users(:quentin).comments.create!(:comment => 'bar', :author_email => 'alicia@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin))
37
37
 
38
38
  assert_difference ActionMailer::Base.deliveries, :length, 1 do
39
39
  comment.notify_previous_anonymous_commenters
40
40
  end
41
41
  configatron.allow_anonymous_commenting = false
42
- end
43
-
42
+ end
43
+
44
44
  def test_should_not_notify_previous_anonymous_commenter_if_self
45
45
  configatron.allow_anonymous_commenting = true
46
46
  users(:quentin).comments.create!(:comment => 'foo', :author_email => 'bruno@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin))
47
- users(:quentin).comments.create!(:comment => 'bar', :author_email => 'bruno@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin))
47
+ users(:quentin).comments.create!(:comment => 'bar', :author_email => 'bruno@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin))
48
48
 
49
- comment = users(:quentin).comments.create!(:comment => 'bar', :author_email => 'bruno@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin))
49
+ comment = users(:quentin).comments.create!(:comment => 'bar', :author_email => 'bruno@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin))
50
50
 
51
51
  assert_difference ActionMailer::Base.deliveries, :length, 0 do
52
52
  comment.notify_previous_anonymous_commenters
53
53
  end
54
54
  configatron.allow_anonymous_commenting = nil
55
- end
56
-
55
+ end
56
+
57
57
  def test_should_not_notify_previous_anonymous_commenter_if_notify_by_email_is_false
58
58
  configatron.allow_anonymous_commenting = true
59
59
  users(:quentin).comments.create!(:comment => 'foo', :author_email => 'bruno@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin), :notify_by_email => false)
60
60
 
61
- comment = users(:quentin).comments.create!(:comment => 'bar', :author_email => 'alicia@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin))
61
+ comment = users(:quentin).comments.create!(:comment => 'bar', :author_email => 'alicia@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin))
62
62
 
63
63
  assert_difference ActionMailer::Base.deliveries, :length, 0 do
64
64
  comment.notify_previous_anonymous_commenters
65
65
  end
66
66
  configatron.allow_anonymous_commenting = false
67
67
  end
68
-
68
+
69
69
  def test_should_not_be_created_anonymously
70
70
  assert_no_difference Comment, :count do
71
71
  comment = users(:quentin).comments.create(:comment => 'foo', :author_email => 'bar@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin))
72
72
  end
73
73
  end
74
-
74
+
75
75
  def test_should_be_created_without_recipient
76
76
  assert_difference Comment, :count, 1 do
77
77
  comment = users(:aaron).comments.create!(:comment => 'foo', :user => users(:quentin))
78
- end
78
+ end
79
79
  end
80
80
 
81
81
  def test_should_unsubscribe_notifications
82
82
  configatron.allow_anonymous_commenting = true
83
- first_comment = users(:quentin).comments.create!(:comment => 'foo', :author_email => 'alicia@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin), :notify_by_email => true)
84
- comment = users(:quentin).comments.create!(:comment => 'bar', :author_email => 'alicia@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin), :notify_by_email => true)
83
+ first_comment = users(:quentin).comments.create!(:comment => 'foo', :author_email => 'alicia@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin), :notify_by_email => true)
84
+ comment = users(:quentin).comments.create!(:comment => 'bar', :author_email => 'alicia@foo.com', :author_ip => '123.123.123', :recipient => users(:quentin), :notify_by_email => true)
85
85
  assert_equal first_comment.notify_by_email, true
86
86
  assert_equal comment.notify_by_email, true
87
- configatron.allow_anonymous_commenting = false
88
-
87
+ configatron.allow_anonymous_commenting = false
88
+
89
89
  comment.unsubscribe_notifications('alicia@foo.com')
90
90
  assert comment.reload.notify_by_email.eql?(false)
91
91
  assert first_comment.reload.notify_by_email.eql?(false)
92
92
  end
93
-
93
+
94
94
  def test_should_not_notify_of_comments_on_post_with_send_notifications_off
95
95
  post = posts(:funny_post)
96
96
  post.send_comment_notifications = false
97
97
  post.save!
98
98
 
99
99
  comment = post.comments.create!(:comment => 'foo', :user => users(:aaron), :recipient => users(:quentin))
100
- assert_difference ActionMailer::Base.deliveries, :length, 0 do
101
- comment.send_notifications
100
+ assert_difference ActionMailer::Base.deliveries, :length, 0 do
101
+ comment.send_notifications
102
102
  end
103
103
  end
104
104
 
105
+ def test_new_comment_should_have_published_role
106
+ post = posts(:funny_post)
107
+ comment = post.comments.create!(:comment => 'foo', :user => users(:aaron), :recipient => users(:quentin))
108
+
109
+ assert_equal 'published', comment.role
110
+ end
111
+
112
+ def test_spam_comment_should_have_pending_role
113
+ post = posts(:funny_post)
114
+
115
+ Comment.any_instance.stubs(:spam?).returns(true)
116
+ configatron.stubs(:akismet_key).returns('1234')
117
+
118
+ comment = post.comments.create!(:comment => 'foo', :user => users(:aaron), :recipient => users(:quentin))
119
+
120
+ assert_equal 'pending', comment.role
121
+ end
122
+
123
+ def test_spam_comment_notification_handling
124
+ post = posts(:funny_post)
125
+
126
+ Comment.any_instance.stubs(:spam?).returns(true)
127
+ configatron.stubs(:akismet_key).returns('1234')
128
+
129
+ comment = post.comments.new(:comment => 'foo', :user => users(:aaron), :recipient => users(:quentin))
130
+
131
+ #no notifications for pending comments
132
+ assert_no_difference ActionMailer::Base.deliveries, :length do
133
+ comment.save!
134
+ end
135
+
136
+ Comment.any_instance.stubs(:spam?).returns(false)
137
+ comment.role = 'published'
138
+ assert_difference ActionMailer::Base.deliveries, :length, 1 do
139
+ comment.save!
140
+ end
141
+ end
142
+
143
+ def test_should_create_user_comment_with_notification
144
+ Comment.any_instance.stubs(:spam?).returns(false)
145
+ user = users(:aaron)
146
+ assert_difference ActionMailer::Base.deliveries, :length, 2 do
147
+ user.comments.create!(:comment => 'foo', :user => users(:dwr), :recipient => users(:aaron))
148
+ end
149
+ end
150
+
151
+ def test_should_create_user_comment_without_notification
152
+ user = users(:aaron)
153
+ user.notify_comments = false
154
+ user.save!
155
+
156
+ assert_no_difference ActionMailer::Base.deliveries, :length do
157
+ user.comments.create!(:comment => 'foo', :user => users(:quentin), :recipient => users(:aaron))
158
+ end
159
+ end
160
+
161
+
105
162
 
106
163
  end
107
-
164
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: community_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.1
4
+ version: 2.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bruno Bornsztein
@@ -14,112 +14,112 @@ dependencies:
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rack
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: 1.4.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.4.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: authlogic
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: bcrypt-ruby
56
+ name: bcrypt
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: configatron
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ! '>='
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '2.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ! '>='
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '2.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: hpricot
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ! '>='
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ! '>='
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: htmlentities
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ! '>='
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ! '>='
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: haml
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ! '>='
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ! '>='
122
+ - - '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
@@ -140,70 +140,70 @@ dependencies:
140
140
  name: ri_cal
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ! '>='
143
+ - - '>='
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ! '>='
150
+ - - '>='
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: rakismet
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ! '>='
157
+ - - '>='
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - ! '>='
164
+ - - '>='
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: aws-sdk
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - ! '>='
171
+ - - '>='
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0'
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - ! '>='
178
+ - - '>='
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: kaminari
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - ! '>='
185
+ - - '>='
186
186
  - !ruby/object:Gem::Version
187
187
  version: '0'
188
188
  type: :runtime
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - ! '>='
192
+ - - '>='
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: dynamic_form
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
- - - ! '>='
199
+ - - '>='
200
200
  - !ruby/object:Gem::Version
201
201
  version: '0'
202
202
  type: :runtime
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
- - - ! '>='
206
+ - - '>='
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0'
209
209
  - !ruby/object:Gem::Dependency
@@ -252,28 +252,28 @@ dependencies:
252
252
  name: acts_as_commentable
253
253
  requirement: !ruby/object:Gem::Requirement
254
254
  requirements:
255
- - - '='
255
+ - - ~>
256
256
  - !ruby/object:Gem::Version
257
- version: 3.0.1
257
+ version: 4.0.1
258
258
  type: :runtime
259
259
  prerelease: false
260
260
  version_requirements: !ruby/object:Gem::Requirement
261
261
  requirements:
262
- - - '='
262
+ - - ~>
263
263
  - !ruby/object:Gem::Version
264
- version: 3.0.1
264
+ version: 4.0.1
265
265
  - !ruby/object:Gem::Dependency
266
266
  name: recaptcha
267
267
  requirement: !ruby/object:Gem::Requirement
268
268
  requirements:
269
- - - ! '>='
269
+ - - '>='
270
270
  - !ruby/object:Gem::Version
271
271
  version: '0'
272
272
  type: :runtime
273
273
  prerelease: false
274
274
  version_requirements: !ruby/object:Gem::Requirement
275
275
  requirements:
276
- - - ! '>='
276
+ - - '>='
277
277
  - !ruby/object:Gem::Version
278
278
  version: '0'
279
279
  - !ruby/object:Gem::Dependency
@@ -294,28 +294,28 @@ dependencies:
294
294
  name: prototype-rails
295
295
  requirement: !ruby/object:Gem::Requirement
296
296
  requirements:
297
- - - ! '>='
297
+ - - '>='
298
298
  - !ruby/object:Gem::Version
299
299
  version: '0'
300
300
  type: :runtime
301
301
  prerelease: false
302
302
  version_requirements: !ruby/object:Gem::Requirement
303
303
  requirements:
304
- - - ! '>='
304
+ - - '>='
305
305
  - !ruby/object:Gem::Version
306
306
  version: '0'
307
307
  - !ruby/object:Gem::Dependency
308
308
  name: rails_autolink
309
309
  requirement: !ruby/object:Gem::Requirement
310
310
  requirements:
311
- - - ! '>='
311
+ - - '>='
312
312
  - !ruby/object:Gem::Version
313
313
  version: '0'
314
314
  type: :runtime
315
315
  prerelease: false
316
316
  version_requirements: !ruby/object:Gem::Requirement
317
317
  requirements:
318
- - - ! '>='
318
+ - - '>='
319
319
  - !ruby/object:Gem::Version
320
320
  version: '0'
321
321
  - !ruby/object:Gem::Dependency
@@ -336,14 +336,14 @@ dependencies:
336
336
  name: koala
337
337
  requirement: !ruby/object:Gem::Requirement
338
338
  requirements:
339
- - - ! '>='
339
+ - - '>='
340
340
  - !ruby/object:Gem::Version
341
341
  version: '0'
342
342
  type: :runtime
343
343
  prerelease: false
344
344
  version_requirements: !ruby/object:Gem::Requirement
345
345
  requirements:
346
- - - ! '>='
346
+ - - '>='
347
347
  - !ruby/object:Gem::Version
348
348
  version: '0'
349
349
  - !ruby/object:Gem::Dependency
@@ -378,14 +378,14 @@ dependencies:
378
378
  name: sanitize
379
379
  requirement: !ruby/object:Gem::Requirement
380
380
  requirements:
381
- - - ! '>='
381
+ - - '>='
382
382
  - !ruby/object:Gem::Version
383
383
  version: 2.0.3
384
384
  type: :runtime
385
385
  prerelease: false
386
386
  version_requirements: !ruby/object:Gem::Requirement
387
387
  requirements:
388
- - - ! '>='
388
+ - - '>='
389
389
  - !ruby/object:Gem::Version
390
390
  version: 2.0.3
391
391
  description: CommunityEngine is a free, open-source social network platform for Ruby
@@ -646,6 +646,7 @@ files:
646
646
  - app/views/comments/_comment.html.haml
647
647
  - app/views/comments/_comment_form.html.haml
648
648
  - app/views/comments/_edit_form.html.haml
649
+ - app/views/comments/approve.js.haml
649
650
  - app/views/comments/create.js.rjs
650
651
  - app/views/comments/edit.js.rjs
651
652
  - app/views/comments/index.html.haml
@@ -910,6 +911,7 @@ files:
910
911
  - db/migrate/078_create_authorizations.rb
911
912
  - db/migrate/079_create_slugs.rb
912
913
  - db/migrate/080_migrate_to_acts_as_taggable_on.rb
914
+ - db/migrate/090_add_comment_role.rb
913
915
  - db/sample/users.rb
914
916
  - generators/ce_plugin/USAGE
915
917
  - generators/ce_plugin/ce_plugin_generator.rb
@@ -928,7 +930,6 @@ files:
928
930
  - lib/community_engine/engines_extensions.rb
929
931
  - lib/community_engine/i18n_extensions.rb
930
932
  - lib/community_engine/localized_application.rb
931
- - lib/community_engine/rails_asset_extensions.rb
932
933
  - lib/community_engine/url_upload.rb
933
934
  - lib/community_engine/version.rb
934
935
  - lib/community_engine/viewable.rb
@@ -968,6 +969,7 @@ files:
968
969
  - test/functional/admin_controller_test.rb
969
970
  - test/functional/ads_controller_test.rb
970
971
  - test/functional/albums_controller_test.rb
972
+ - test/functional/authorizations_controller_test.rb
971
973
  - test/functional/base_controller_test.rb
972
974
  - test/functional/categories_controller_test.rb
973
975
  - test/functional/clippings_controller_test.rb
@@ -1148,7 +1150,9 @@ files:
1148
1150
  - vendor/plugins/white_list/lib/white_list_helper.rb
1149
1151
  - vendor/plugins/white_list/test/white_list_test.rb
1150
1152
  homepage: http://www.communityengine.org
1151
- licenses: []
1153
+ licenses:
1154
+ - MIT
1155
+ - see each plugin
1152
1156
  metadata: {}
1153
1157
  post_install_message:
1154
1158
  rdoc_options: []
@@ -1156,17 +1160,17 @@ require_paths:
1156
1160
  - lib
1157
1161
  required_ruby_version: !ruby/object:Gem::Requirement
1158
1162
  requirements:
1159
- - - ! '>='
1163
+ - - '>='
1160
1164
  - !ruby/object:Gem::Version
1161
1165
  version: '0'
1162
1166
  required_rubygems_version: !ruby/object:Gem::Requirement
1163
1167
  requirements:
1164
- - - ! '>'
1168
+ - - '>'
1165
1169
  - !ruby/object:Gem::Version
1166
1170
  version: 1.3.1
1167
1171
  requirements: []
1168
1172
  rubyforge_project:
1169
- rubygems_version: 2.0.6
1173
+ rubygems_version: 2.1.11
1170
1174
  signing_key:
1171
1175
  specification_version: 4
1172
1176
  summary: CommunityEngine for Rails 3