browsercms 3.0.2 → 3.0.3
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/app/controllers/cms/content_block_controller.rb +25 -2
- data/app/controllers/cms/content_controller.rb +31 -2
- data/app/controllers/cms/dashboard_controller.rb +2 -1
- data/app/controllers/cms/error_handling.rb +9 -2
- data/app/controllers/cms/links_controller.rb +2 -0
- data/app/controllers/cms/pages_controller.rb +22 -18
- data/app/controllers/cms/section_nodes_controller.rb +1 -1
- data/app/controllers/cms/sections_controller.rb +12 -7
- data/app/controllers/cms/sessions_controller.rb +17 -10
- data/app/controllers/cms/users_controller.rb +8 -6
- data/app/helpers/cms/application_helper.rb +2 -6
- data/app/helpers/cms/menu_helper.rb +118 -146
- data/app/helpers/cms/page_helper.rb +2 -2
- data/app/models/attachment.rb +2 -2
- data/app/models/group.rb +13 -2
- data/app/models/guest_user.rb +9 -3
- data/app/models/link.rb +2 -2
- data/app/models/page.rb +1 -1
- data/app/models/section.rb +7 -2
- data/app/models/user.rb +35 -17
- data/app/views/cms/blocks/_toolbar_for_member.html.erb +3 -3
- data/app/views/cms/blocks/index.html.erb +11 -6
- data/app/views/cms/content/show.html.erb +3 -3
- data/app/views/cms/menus/_menu.html.erb +9 -0
- data/app/views/cms/menus/_menu_item.html.erb +11 -0
- data/app/views/cms/pages/_edit_connector.html.erb +1 -1
- data/app/views/cms/pages/_edit_container.html.erb +1 -1
- data/app/views/cms/section_nodes/_node.html.erb +1 -1
- data/app/views/cms/sections/_form.html.erb +36 -34
- data/app/views/cms/shared/access_denied.html.erb +3 -0
- data/app/views/cms/users/change_password.html.erb +8 -6
- data/app/views/cms/users/index.html.erb +1 -1
- data/app/views/cms/users/show.html.erb +50 -0
- data/app/views/layouts/_cms_toolbar.html.erb +1 -1
- data/app/views/layouts/_page_toolbar.html.erb +7 -7
- data/app/views/layouts/cms/administration.html.erb +24 -7
- data/browsercms.gemspec +13 -7
- data/lib/acts_as_list.rb +8 -4
- data/lib/cms/acts/content_block.rb +1 -1
- data/lib/cms/authentication/controller.rb +26 -7
- data/lib/cms/behaviors/attaching.rb +3 -3
- data/lib/cms/behaviors/publishing.rb +12 -1
- data/lib/cms/behaviors/rendering.rb +17 -4
- data/lib/cms/behaviors/versioning.rb +2 -2
- data/lib/cms/routes.rb +4 -0
- data/lib/tasks/cms.rake +0 -18
- data/public/javascripts/cms/content_library.js +36 -0
- data/public/javascripts/cms/sitemap.js +21 -9
- data/public/stylesheets/cms/form_layout.css +16 -2
- data/public/stylesheets/cms/nav.css +4 -3
- data/test/functional/cms/content_block_controller_test.rb +120 -0
- data/test/functional/cms/content_controller_test.rb +135 -80
- data/test/functional/cms/links_controller_test.rb +89 -1
- data/test/functional/cms/pages_controller_test.rb +138 -0
- data/test/functional/cms/section_nodes_controller_test.rb +45 -5
- data/test/functional/cms/sections_controller_test.rb +148 -1
- data/test/functional/cms/sessions_controller_test.rb +26 -2
- data/test/functional/cms/users_controller_test.rb +49 -2
- data/test/test_helper.rb +3 -1
- data/test/unit/behaviors/attaching_test.rb +26 -0
- data/test/unit/helpers/menu_helper_test.rb +118 -278
- data/test/unit/models/group_test.rb +6 -0
- data/test/unit/models/user_test.rb +127 -29
- metadata +12 -4
@@ -16,7 +16,6 @@ class UserTest < ActiveSupport::TestCase
|
|
16
16
|
@user.disable!
|
17
17
|
assert_nil User.authenticate(@user.login, @user.password)
|
18
18
|
end
|
19
|
-
|
20
19
|
def test_expiration
|
21
20
|
@user = Factory.build(:user)
|
22
21
|
assert_nil @user.expires_at
|
@@ -32,7 +31,6 @@ class UserTest < ActiveSupport::TestCase
|
|
32
31
|
@user.expires_at = 1.day.ago
|
33
32
|
assert @user.expired?
|
34
33
|
end
|
35
|
-
|
36
34
|
def test_disable_enable
|
37
35
|
@user = Factory(:user)
|
38
36
|
|
@@ -52,12 +50,29 @@ class UserTest < ActiveSupport::TestCase
|
|
52
50
|
assert !@user.expired?
|
53
51
|
assert User.active.all.include?(@user)
|
54
52
|
end
|
53
|
+
test "email validation" do
|
54
|
+
@user = Factory(:user)
|
55
|
+
assert @user.valid?
|
56
|
+
|
57
|
+
valid_emails = ['t@test.com', 'T@test.com', 'test@somewhere.mobi', 'test@somewhere.tv', 'joe_blow@somewhere.co.nz', 'joe_blow@somewhere.com.au', 't@t-t.co']
|
58
|
+
valid_emails.each do |email|
|
59
|
+
@user.email = email
|
60
|
+
assert @user.valid?
|
61
|
+
end
|
62
|
+
|
63
|
+
invalid_emails = ['', '@test.com', '@test', 'test@test', 'test@somewhere', 'test@somewhere.', 'test@somewhere.x', 'test@somewhere..']
|
64
|
+
invalid_emails.each do |email|
|
65
|
+
@user.email = email
|
66
|
+
assert !@user.valid?
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
55
70
|
end
|
56
71
|
|
57
|
-
class
|
72
|
+
class UserPermissionsTest < ActiveSupport::TestCase
|
58
73
|
def setup
|
59
74
|
@user = Factory(:user)
|
60
|
-
@guest_group = Group.
|
75
|
+
@guest_group = Group.guest
|
61
76
|
end
|
62
77
|
|
63
78
|
def test_user_permissions
|
@@ -75,36 +90,119 @@ class UserPermssionsTest < ActiveSupport::TestCase
|
|
75
90
|
assert !@user.able_to?("do something the group does not have permission to do")
|
76
91
|
end
|
77
92
|
|
78
|
-
|
93
|
+
test "cms user access to nodes" do
|
94
|
+
@group = Factory(:group, :name => "Test", :group_type => Factory(:group_type, :name => "CMS User", :cms_access => true))
|
95
|
+
@user.groups << @group
|
96
|
+
|
97
|
+
@modifiable_section = Factory(:section, :parent => root_section, :name => "Modifiable")
|
98
|
+
@non_modifiable_section = Factory(:section, :parent => root_section, :name => "Not Modifiable")
|
99
|
+
|
100
|
+
@group.sections << @modifiable_section
|
101
|
+
|
102
|
+
@modifiable_page = Factory(:page, :section => @modifiable_section)
|
103
|
+
@non_modifiable_page = Factory(:page, :section => @non_modifiable_section)
|
104
|
+
|
105
|
+
@modifiable_link = Factory(:link, :section => @modifiable_section)
|
106
|
+
@non_modifiable_link = Factory(:link, :section => @non_modifiable_section)
|
107
|
+
|
108
|
+
assert @user.able_to_modify?(@modifiable_section)
|
109
|
+
assert !@user.able_to_modify?(@non_modifiable_section)
|
110
|
+
|
111
|
+
assert @user.able_to_modify?(@modifiable_page)
|
112
|
+
assert !@user.able_to_modify?(@non_modifiable_page)
|
113
|
+
|
114
|
+
assert @user.able_to_modify?(@modifiable_link)
|
115
|
+
assert !@user.able_to_modify?(@non_modifiable_link)
|
116
|
+
end
|
117
|
+
|
118
|
+
test "cms user access to connectables" do
|
79
119
|
@group = Factory(:group, :name => "Test", :group_type => Factory(:group_type, :name => "CMS User", :cms_access => true))
|
80
|
-
@group.permissions << create_or_find_permission_named("edit_content")
|
81
|
-
@group.permissions << create_or_find_permission_named("publish_content")
|
82
120
|
@user.groups << @group
|
83
|
-
|
84
|
-
@
|
85
|
-
@
|
86
|
-
|
87
|
-
@
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
121
|
+
|
122
|
+
@modifiable_section = Factory(:section, :parent => root_section, :name => "Modifiable")
|
123
|
+
@non_modifiable_section = Factory(:section, :parent => root_section, :name => "Not Modifiable")
|
124
|
+
|
125
|
+
@group.sections << @modifiable_section
|
126
|
+
|
127
|
+
@modifiable_page = Factory(:page, :section => @modifiable_section)
|
128
|
+
@non_modifiable_page = Factory(:page, :section => @non_modifiable_section)
|
129
|
+
|
130
|
+
@all_modifiable_connectable = stub(
|
131
|
+
:class => stub(:content_block? => true, :connectable? => true),
|
132
|
+
:connected_pages => [@modifiable_page])
|
133
|
+
@some_modifiable_connectable = stub(
|
134
|
+
:class => stub(:content_block? => true, :connectable? => true),
|
135
|
+
:connected_pages => [@modifiable_page, @non_modifiable_page])
|
136
|
+
@none_modifiable_connectable = stub(
|
137
|
+
:class => stub(:content_block? => true, :connectable? => true),
|
138
|
+
:connected_pages => [@non_modifiable_page])
|
139
|
+
|
140
|
+
assert @user.able_to_modify?(@all_modifiable_connectable)
|
141
|
+
assert !@user.able_to_modify?(@some_modifiable_connectable)
|
142
|
+
assert !@user.able_to_modify?(@none_modifiable_connectable)
|
143
|
+
end
|
144
|
+
|
145
|
+
test "cms user access to non-connectable content blocks" do
|
146
|
+
@content_block = stub(:class => stub(:content_block? => true))
|
147
|
+
assert @user.able_to_modify?(@content_block)
|
93
148
|
end
|
94
149
|
|
95
|
-
|
150
|
+
test "non cms user access to nodes" do
|
96
151
|
@group = Factory(:group, :name => "Test", :group_type => Factory(:group_type, :name => "Registered User"))
|
97
152
|
@user.groups << @group
|
98
|
-
|
99
|
-
@
|
100
|
-
@
|
101
|
-
@
|
102
|
-
|
153
|
+
|
154
|
+
@modifiable_section = Factory(:section, :parent => root_section, :name => "Modifiable")
|
155
|
+
@group.sections << @modifiable_section
|
156
|
+
@non_modifiable_section = Factory(:section, :parent => root_section, :name => "Not Modifiable")
|
157
|
+
|
158
|
+
@modifiable_page = Factory(:page, :section => @modifiable_section)
|
159
|
+
@non_modifiable_page = Factory(:page, :section => @non_modifiable_section)
|
103
160
|
|
104
|
-
assert !@user.
|
105
|
-
assert !@user.
|
106
|
-
|
107
|
-
assert
|
161
|
+
assert !@user.able_to_modify?(@modifiable_section)
|
162
|
+
assert !@user.able_to_modify?(@non_modifiable_section)
|
163
|
+
|
164
|
+
assert @user.able_to_view?(@modifiable_page)
|
165
|
+
assert !@user.able_to_view?(@non_modifiable_page)
|
166
|
+
end
|
167
|
+
|
168
|
+
test "cms user with no permissions should still be able to view pages" do
|
169
|
+
@group = Factory(:group, :name => "Test", :group_type => Factory(:group_type, :name => "CMS User", :cms_access => true))
|
170
|
+
@user.groups << @group
|
171
|
+
|
172
|
+
@page = Factory(:page)
|
173
|
+
assert @user.able_to_view?(@page)
|
174
|
+
end
|
175
|
+
|
176
|
+
test "cms user who can edit content" do
|
177
|
+
@group = Factory(:group, :name => "Test", :group_type => Factory(:group_type, :name => "CMS User", :cms_access => true))
|
178
|
+
@group.permissions << create_or_find_permission_named("edit_content")
|
179
|
+
@user.groups << @group
|
180
|
+
|
181
|
+
node = stub
|
182
|
+
|
183
|
+
@user.stubs(:able_to_modify?).with(node).returns(true)
|
184
|
+
assert @user.able_to_edit?(node)
|
185
|
+
assert !@user.able_to_publish?(node)
|
186
|
+
|
187
|
+
@user.stubs(:able_to_modify?).with(node).returns(false)
|
188
|
+
assert !@user.able_to_edit?(node)
|
189
|
+
assert !@user.able_to_publish?(node)
|
190
|
+
end
|
191
|
+
|
192
|
+
test "cms user who can publish content" do
|
193
|
+
@group = Factory(:group, :name => "Test", :group_type => Factory(:group_type, :name => "CMS User", :cms_access => true))
|
194
|
+
@group.permissions << create_or_find_permission_named("publish_content")
|
195
|
+
@user.groups << @group
|
196
|
+
|
197
|
+
node = stub
|
198
|
+
|
199
|
+
@user.stubs(:able_to_modify?).with(node).returns(true)
|
200
|
+
assert !@user.able_to_edit?(node)
|
201
|
+
assert @user.able_to_publish?(node)
|
202
|
+
|
203
|
+
@user.stubs(:able_to_modify?).with(node).returns(false)
|
204
|
+
assert !@user.able_to_edit?(node)
|
205
|
+
assert !@user.able_to_publish?(node)
|
108
206
|
end
|
109
207
|
|
110
208
|
end
|
@@ -112,7 +210,7 @@ end
|
|
112
210
|
class GuestUserTest < ActiveSupport::TestCase
|
113
211
|
def setup
|
114
212
|
@user = User.guest
|
115
|
-
@guest_group = Group.
|
213
|
+
@guest_group = Group.guest
|
116
214
|
@public_page = Factory(:page, :section => root_section)
|
117
215
|
@protected_section = Factory(:section, :parent => root_section)
|
118
216
|
@protected_page = Factory(:page, :section => @protected_section)
|
@@ -127,4 +225,4 @@ class GuestUserTest < ActiveSupport::TestCase
|
|
127
225
|
assert !@user.able_to_view?(@protected_page)
|
128
226
|
end
|
129
227
|
|
130
|
-
end
|
228
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: browsercms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- BrowserMedia
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-11-06 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -162,6 +162,8 @@ files:
|
|
162
162
|
- app/views/cms/links/destroy.js.rjs
|
163
163
|
- app/views/cms/links/edit.html.erb
|
164
164
|
- app/views/cms/links/new.html.erb
|
165
|
+
- app/views/cms/menus/_menu.html.erb
|
166
|
+
- app/views/cms/menus/_menu_item.html.erb
|
165
167
|
- app/views/cms/page_routes/_form.html.erb
|
166
168
|
- app/views/cms/page_routes/edit.html.erb
|
167
169
|
- app/views/cms/page_routes/index.html.erb
|
@@ -198,6 +200,7 @@ files:
|
|
198
200
|
- app/views/cms/shared/_pagination.html.erb
|
199
201
|
- app/views/cms/shared/_version_conflict_diff.html.erb
|
200
202
|
- app/views/cms/shared/_version_conflict_error.html.erb
|
203
|
+
- app/views/cms/shared/access_denied.html.erb
|
201
204
|
- app/views/cms/shared/error.html.erb
|
202
205
|
- app/views/cms/tags/_form.html.erb
|
203
206
|
- app/views/cms/tags/render.html.erb
|
@@ -212,6 +215,7 @@ files:
|
|
212
215
|
- app/views/cms/users/edit.html.erb
|
213
216
|
- app/views/cms/users/index.html.erb
|
214
217
|
- app/views/cms/users/new.html.erb
|
218
|
+
- app/views/cms/users/show.html.erb
|
215
219
|
- app/views/layouts/_cms_toolbar.html.erb
|
216
220
|
- app/views/layouts/_page_toolbar.html.erb
|
217
221
|
- app/views/layouts/application.html.erb
|
@@ -1175,6 +1179,7 @@ files:
|
|
1175
1179
|
- public/images/cms/usercontrols_bg.png
|
1176
1180
|
- public/images/cms/usercontrols_bg_cap.png
|
1177
1181
|
- public/javascripts/cms/application.js
|
1182
|
+
- public/javascripts/cms/content_library.js
|
1178
1183
|
- public/javascripts/cms/editor.js
|
1179
1184
|
- public/javascripts/cms/sitemap.js
|
1180
1185
|
- public/javascripts/jquery-ui.js
|
@@ -1238,6 +1243,8 @@ files:
|
|
1238
1243
|
- README.markdown
|
1239
1244
|
has_rdoc: true
|
1240
1245
|
homepage: http://www.browsercms.org
|
1246
|
+
licenses: []
|
1247
|
+
|
1241
1248
|
post_install_message:
|
1242
1249
|
rdoc_options:
|
1243
1250
|
- --charset=UTF-8
|
@@ -1258,9 +1265,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1258
1265
|
requirements: []
|
1259
1266
|
|
1260
1267
|
rubyforge_project: browsercms
|
1261
|
-
rubygems_version: 1.3.
|
1268
|
+
rubygems_version: 1.3.5
|
1262
1269
|
signing_key:
|
1263
|
-
specification_version:
|
1270
|
+
specification_version: 3
|
1264
1271
|
summary: BrowserCMS is a general purpose, open source Web Content Management System (CMS), written in Ruby on Rails.
|
1265
1272
|
test_files:
|
1266
1273
|
- test/functional/cms/file_blocks_controller_test.rb
|
@@ -1275,6 +1282,7 @@ test_files:
|
|
1275
1282
|
- test/functional/cms/links_controller_test.rb
|
1276
1283
|
- test/functional/cms/dynamic_views_controller_test.rb
|
1277
1284
|
- test/functional/cms/categories_controller_test.rb
|
1285
|
+
- test/functional/cms/content_block_controller_test.rb
|
1278
1286
|
- test/functional/cms/pages_controller_test.rb
|
1279
1287
|
- test/functional/cms/connectors_controller_test.rb
|
1280
1288
|
- test/functional/cms/home_controller_test.rb
|