Commit 7f93cfa3bf15cd347a5d5ca0d126a5941344c9fc
1 parent
c3c68ac2
Exists in
master
and in
29 other branches
ActionItem295: switching profile visualization as public/private (still
missing user interface) git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1801 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
7 changed files
with
89 additions
and
0 deletions
Show diff stats
app/controllers/public/profile_controller.rb
1 | 1 | class ProfileController < ApplicationController |
2 | + | |
2 | 3 | needs_profile |
4 | + before_filter :check_public_profile | |
3 | 5 | |
4 | 6 | helper TagsHelper |
5 | 7 | |
... | ... | @@ -31,4 +33,13 @@ class ProfileController < ApplicationController |
31 | 33 | def favorite_enterprises |
32 | 34 | @favorite_enterprises = profile.favorite_enterprises |
33 | 35 | end |
36 | + | |
37 | + protected | |
38 | + | |
39 | + def check_public_profile | |
40 | + if !profile.public_profile | |
41 | + render :action => 'private_profile', :status => 403, :layout => false | |
42 | + end | |
43 | + end | |
44 | + | |
34 | 45 | end | ... | ... |
app/models/profile.rb
... | ... | @@ -35,6 +35,8 @@ class Profile < ActiveRecord::Base |
35 | 35 | |
36 | 36 | acts_as_having_settings :field => :data |
37 | 37 | |
38 | + settings_items :public_profile, :public_content, :type => :boolean, :default => true | |
39 | + | |
38 | 40 | acts_as_mappable :default_units => :kms |
39 | 41 | |
40 | 42 | # Valid identifiers must match this format. | ... | ... |
test/functional/content_viewer_controller_test.rb
... | ... | @@ -229,4 +229,31 @@ class ContentViewerControllerTest < Test::Unit::TestCase |
229 | 229 | assert_tag :tag => 'div', :attributes => { :class => 'article-tags' }, :descendant => { :content => /This article's tags:/ } |
230 | 230 | end |
231 | 231 | |
232 | + should 'not display articles from private content' do | |
233 | + profile.articles.create!(:name => 'test') | |
234 | + profile.update_attributes!(:public_content => false) | |
235 | + | |
236 | + get :view_page, :profile => profile.identifier, :page => [ 'test' ] | |
237 | + assert_response 403 | |
238 | + end | |
239 | + | |
240 | + #should 'display articles to its owner' do | |
241 | + #profile.articles.create!(:name => 'test') | |
242 | + #profile.update_attributes!(:public_content => false) | |
243 | + | |
244 | + #login_as(@profile.identifier) | |
245 | + #get :view_page, :profile => profile.identifier, :page => [ 'test' ] | |
246 | + #assert_response 200 | |
247 | + #end | |
248 | + | |
249 | + #should 'display articles to profile members' do | |
250 | + #c = Community.create!(:name => 'my community') | |
251 | + #c.update_attributes!(:public_content => false) | |
252 | + #c.add_member(@profile) | |
253 | + | |
254 | + #login_as(@profile.identifier) | |
255 | + #get :view_page, :profile => profile.identifier, :page => [ 'test' ] | |
256 | + #assert_response 200 | |
257 | + #end | |
258 | + | |
232 | 259 | end | ... | ... |
test/functional/profile_controller_test.rb
... | ... | @@ -187,4 +187,10 @@ class ProfileControllerTest < Test::Unit::TestCase |
187 | 187 | assert_no_tag :tag => 'a', :content => 'Leave this community' |
188 | 188 | end |
189 | 189 | |
190 | + should 'not display private profile' do | |
191 | + @profile.update_attributes!(:public_profile => false) | |
192 | + get :index, :profile => @profile.identifier | |
193 | + assert_response 403 | |
194 | + end | |
195 | + | |
190 | 196 | end | ... | ... |
test/functional/profile_editor_controller_test.rb
... | ... | @@ -192,6 +192,23 @@ class ProfileEditorControllerTest < Test::Unit::TestCase |
192 | 192 | assert_tag :tag => 'input', :attributes => { :name => 'profile_data[info][contact_person]', :value => 'my contact' } |
193 | 193 | end |
194 | 194 | |
195 | + should 'display profile publication option in edit profile screen' do | |
196 | + profile = Profile['ze'] | |
197 | + get :edit, :profile => 'ze' | |
198 | + assert_tag :tag => 'input', :attributes => { :type => 'checkbox', :checked => 'checked', :name => 'profile_data[public_profile]', :value => 'true' } | |
199 | + assert_tag :tag => 'input', :attributes => { :type => 'hidden', :name => 'profile_data[public_profile]', :value => false } | |
200 | + end | |
201 | + | |
202 | + should 'save profile publication option set to true' do | |
203 | + post :edit, :profile => 'ze', :profile_data => { :public_profile => 'true' } | |
204 | + assert_equal true, Profile['ze'].public_profile | |
205 | + end | |
206 | + | |
207 | + should 'save profile publication option set to false' do | |
208 | + post :edit, :profile => 'ze', :profile_data => { :public_profile => 'false' } | |
209 | + assert_equal false, Profile['ze'].public_profile | |
210 | + end | |
211 | + | |
195 | 212 | should 'show error messages for' |
196 | 213 | |
197 | 214 | end | ... | ... |
test/unit/profile_test.rb
... | ... | @@ -467,6 +467,26 @@ class ProfileTest < Test::Unit::TestCase |
467 | 467 | assert_not_includes c.members, p |
468 | 468 | end |
469 | 469 | |
470 | + should 'have a public profile by default' do | |
471 | + assert_equal true, Profile.new.public_profile | |
472 | + end | |
473 | + | |
474 | + should 'be able to turn profile private' do | |
475 | + p = Profile.new | |
476 | + p.public_profile = false | |
477 | + assert_equal false, p.public_profile | |
478 | + end | |
479 | + | |
480 | + should 'have public content by default' do | |
481 | + assert_equal true, Profile.new.public_content | |
482 | + end | |
483 | + | |
484 | + should 'be able to turn content private' do | |
485 | + p = Profile.new | |
486 | + p.public_content = false | |
487 | + assert_equal false, p.public_content | |
488 | + end | |
489 | + | |
470 | 490 | private |
471 | 491 | |
472 | 492 | def assert_invalid_identifier(id) | ... | ... |