Commit 13d70601fb96c9915631485c59128ed7e196de8e
Committed by
Antonio Terceiro
1 parent
79840d9f
Exists in
master
and in
28 other branches
Adding 'Unblock' button to the disabled enterprise block
* Adding an unblock method for enterprises * Adding the 'lock' icon to icon list * Adding 'block' and 'unblock' noosfero steps. (ActionItem1402)
Showing
10 changed files
with
84 additions
and
3 deletions
Show diff stats
app/controllers/public/profile_controller.rb
| @@ -113,6 +113,11 @@ class ProfileController < PublicController | @@ -113,6 +113,11 @@ class ProfileController < PublicController | ||
| 113 | render :text => '', :layout => false | 113 | render :text => '', :layout => false |
| 114 | end | 114 | end |
| 115 | 115 | ||
| 116 | + def unblock | ||
| 117 | + profile.unblock | ||
| 118 | + redirect_to :controller => 'profile', :action => 'index' | ||
| 119 | + end | ||
| 120 | + | ||
| 116 | protected | 121 | protected |
| 117 | 122 | ||
| 118 | def check_access_to_profile | 123 | def check_access_to_profile |
| @@ -157,4 +162,5 @@ class ProfileController < PublicController | @@ -157,4 +162,5 @@ class ProfileController < PublicController | ||
| 157 | def members_per_page | 162 | def members_per_page |
| 158 | 20 | 163 | 20 |
| 159 | end | 164 | end |
| 165 | + | ||
| 160 | end | 166 | end |
app/models/disabled_enterprise_message_block.rb
| @@ -14,7 +14,9 @@ class DisabledEnterpriseMessageBlock < Block | @@ -14,7 +14,9 @@ class DisabledEnterpriseMessageBlock < Block | ||
| 14 | 14 | ||
| 15 | def content | 15 | def content |
| 16 | message = self.owner.environment.message_for_disabled_enterprise || '' | 16 | message = self.owner.environment.message_for_disabled_enterprise || '' |
| 17 | - content_tag('div', message, :class => 'enterprise-disabled') | 17 | + lambda do |
| 18 | + render :file => 'blocks/disabled_enterprise_message', :locals => {:message => message} | ||
| 19 | + end | ||
| 18 | end | 20 | end |
| 19 | 21 | ||
| 20 | def editable? | 22 | def editable? |
app/models/enterprise.rb
| @@ -82,6 +82,11 @@ class Enterprise < Organization | @@ -82,6 +82,11 @@ class Enterprise < Organization | ||
| 82 | save | 82 | save |
| 83 | end | 83 | end |
| 84 | 84 | ||
| 85 | + def unblock | ||
| 86 | + data[:blocked] = false | ||
| 87 | + save | ||
| 88 | + end | ||
| 89 | + | ||
| 85 | def enable(owner) | 90 | def enable(owner) |
| 86 | return if enabled | 91 | return if enabled |
| 87 | affiliate(owner, Profile::Roles.all_roles(environment.id)) | 92 | affiliate(owner, Profile::Roles.all_roles(environment.id)) |
| @@ -0,0 +1,8 @@ | @@ -0,0 +1,8 @@ | ||
| 1 | +<div id='enterprise-disabled'> | ||
| 2 | + <%= message %> | ||
| 3 | + <% if profile.blocked? && user.is_admin?(profile.environment) %> | ||
| 4 | + <div class='unlock-button'> | ||
| 5 | + <%= button :lock, _('Unblock'), {:controller => 'profile', :action => 'unblock'} %> | ||
| 6 | + </div> | ||
| 7 | + <% end %> | ||
| 8 | +</div> |
features/step_definitions/noosfero_steps.rb
| @@ -150,3 +150,14 @@ end | @@ -150,3 +150,14 @@ end | ||
| 150 | Given /^"(.+)" is friend of "(.+)"$/ do |person, friend| | 150 | Given /^"(.+)" is friend of "(.+)"$/ do |person, friend| |
| 151 | Person[person].add_friend(Person[friend]) | 151 | Person[person].add_friend(Person[friend]) |
| 152 | end | 152 | end |
| 153 | + | ||
| 154 | +Given /^(.+) is blocked$/ do |enterprise_name| | ||
| 155 | + enterprise = Enterprise.find_by_name(enterprise_name) | ||
| 156 | + enterprise.block | ||
| 157 | +end | ||
| 158 | + | ||
| 159 | +Given /^(.+) is disabled$/ do |enterprise_name| | ||
| 160 | + enterprise = Enterprise.find_by_name(enterprise_name) | ||
| 161 | + enterprise.enabled = false | ||
| 162 | + enterprise.save | ||
| 163 | +end |
| @@ -0,0 +1,34 @@ | @@ -0,0 +1,34 @@ | ||
| 1 | +Feature: unblock button | ||
| 2 | + As an environment administrator | ||
| 3 | + I want to unblock an enterprise | ||
| 4 | + In order to try to activate it again | ||
| 5 | + | ||
| 6 | + Background: | ||
| 7 | + Given the following enterprise | ||
| 8 | + | identifier | name | | ||
| 9 | + | sample-enterprise | Sample Enterprise | | ||
| 10 | + And the following blocks | ||
| 11 | + | owner | type | | ||
| 12 | + | sample-enterprise | DisabledEnterpriseMessageBlock | | ||
| 13 | + And Sample Enterprise is disabled | ||
| 14 | + | ||
| 15 | + Scenario: the environment administrator unblocks a blocked enterprise | ||
| 16 | + Given I am logged in as admin | ||
| 17 | + And Sample Enterprise is blocked | ||
| 18 | + And I am on Sample Enterprise's homepage | ||
| 19 | + When I follow "Unblock" | ||
| 20 | + Then I should not see "Unblock" | ||
| 21 | + | ||
| 22 | + Scenario: a not administrator user can't see "Unblock" button | ||
| 23 | + Given the following user | ||
| 24 | + | login | name | | ||
| 25 | + | joaosilva | Joao Silva | | ||
| 26 | + And I am logged in as "joaosilva" | ||
| 27 | + And Sample Enterprise is blocked | ||
| 28 | + When I am on Sample Enterprise's homepage | ||
| 29 | + Then I should not see "Unblock" | ||
| 30 | + | ||
| 31 | + Scenario: a not blocked enterprise should not show "Unblock" button | ||
| 32 | + Given I am logged in as admin | ||
| 33 | + When I am on Sample Enterprise's homepage | ||
| 34 | + Then I should not see "Unblock" |
public/designs/icons/tango/style.css
| @@ -68,4 +68,5 @@ | @@ -68,4 +68,5 @@ | ||
| 68 | .icon-media-play { background-image: url(Tango/16x16/actions/media-playback-start.png) } | 68 | .icon-media-play { background-image: url(Tango/16x16/actions/media-playback-start.png) } |
| 69 | .icon-media-prev { background-image: url(Tango/16x16/actions/media-skip-backward.png) } | 69 | .icon-media-prev { background-image: url(Tango/16x16/actions/media-skip-backward.png) } |
| 70 | .icon-media-next { background-image: url(Tango/16x16/actions/media-skip-forward.png) } | 70 | .icon-media-next { background-image: url(Tango/16x16/actions/media-skip-forward.png) } |
| 71 | +.icon-lock { background-image: url(Tango/16x16/actions/lock.png) } | ||
| 71 | 72 |
public/stylesheets/common.css
| @@ -102,6 +102,10 @@ div#profile-disabled { | @@ -102,6 +102,10 @@ div#profile-disabled { | ||
| 102 | background: url("../images/icons-app/alert.png") no-repeat 5px #ffffa9; | 102 | background: url("../images/icons-app/alert.png") no-repeat 5px #ffffa9; |
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | +div#profile-disabled .unlock-button{ | ||
| 106 | + margin: 5px; | ||
| 107 | +} | ||
| 108 | + | ||
| 105 | .explanation { | 109 | .explanation { |
| 106 | font-style: italic; | 110 | font-style: italic; |
| 107 | font-size: 10px; | 111 | font-size: 10px; |
test/unit/disabled_enterprise_message_block_test.rb
| @@ -14,7 +14,8 @@ class DisabledEnterpriseMessageBlockTest < Test::Unit::TestCase | @@ -14,7 +14,8 @@ class DisabledEnterpriseMessageBlockTest < Test::Unit::TestCase | ||
| 14 | block.expects(:owner).returns(p) | 14 | block.expects(:owner).returns(p) |
| 15 | p.expects(:environment).returns(e) | 15 | p.expects(:environment).returns(e) |
| 16 | 16 | ||
| 17 | - assert_tag_in_string block.content, :tag => 'div', :content => /This message is for disabled enterprises/ | 17 | + expects(:render).with(:file => 'blocks/disabled_enterprise_message', :locals => { :message => 'This message is for disabled enterprises'}) |
| 18 | + instance_eval(&block.content) | ||
| 18 | end | 19 | end |
| 19 | 20 | ||
| 20 | should 'display nothing if environment has no message' do | 21 | should 'display nothing if environment has no message' do |
| @@ -24,7 +25,8 @@ class DisabledEnterpriseMessageBlockTest < Test::Unit::TestCase | @@ -24,7 +25,8 @@ class DisabledEnterpriseMessageBlockTest < Test::Unit::TestCase | ||
| 24 | block.expects(:owner).returns(p) | 25 | block.expects(:owner).returns(p) |
| 25 | p.expects(:environment).returns(e) | 26 | p.expects(:environment).returns(e) |
| 26 | 27 | ||
| 27 | - assert_no_tag_in_string block.content, :tag => 'div', :content => /This message is for disabled enterprises/ | 28 | + expects(:render).with(:file => 'blocks/disabled_enterprise_message', :locals => { :message => ''}) |
| 29 | + instance_eval(&block.content) | ||
| 28 | end | 30 | end |
| 29 | 31 | ||
| 30 | should 'not be editable' do | 32 | should 'not be editable' do |
test/unit/enterprise_test.rb
| @@ -145,6 +145,14 @@ class EnterpriseTest < Test::Unit::TestCase | @@ -145,6 +145,14 @@ class EnterpriseTest < Test::Unit::TestCase | ||
| 145 | assert Enterprise.find(ent.id).blocked? | 145 | assert Enterprise.find(ent.id).blocked? |
| 146 | end | 146 | end |
| 147 | 147 | ||
| 148 | + should 'unblock' do | ||
| 149 | + ent = Enterprise.create!(:name => 'test enteprise', :identifier => 'test_ent') | ||
| 150 | + ent.data[:blocked] = true | ||
| 151 | + ent.save | ||
| 152 | + ent.unblock | ||
| 153 | + assert !Enterprise.find(ent.id).blocked? | ||
| 154 | + end | ||
| 155 | + | ||
| 148 | should 'enable and make user admin' do | 156 | should 'enable and make user admin' do |
| 149 | ent = Enterprise.create!(:name => 'test enteprise', :identifier => 'test_ent', :enabled => false) | 157 | ent = Enterprise.create!(:name => 'test enteprise', :identifier => 'test_ent', :enabled => false) |
| 150 | p = create_user('test_user').person | 158 | p = create_user('test_user').person |