Commit 06b4d17aa5f84997438aae45addc2809efd3fd5d
1 parent
d88e7095
Exists in
master
and in
29 other branches
ActionItem103: adding organizanization_approval_method for environment features
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@655 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
5 changed files
with
52 additions
and
20 deletions
Show diff stats
app/controllers/environment_admin/features_controller.rb
@@ -8,15 +8,12 @@ class FeaturesController < EnvironmentAdminController | @@ -8,15 +8,12 @@ class FeaturesController < EnvironmentAdminController | ||
8 | 8 | ||
9 | post_only :update | 9 | post_only :update |
10 | def update | 10 | def update |
11 | - features = if params[:features].nil? | ||
12 | - [] | ||
13 | - else | ||
14 | - params[:features].keys | ||
15 | - end | ||
16 | - @environment.enabled_features = features | ||
17 | - @environment.save! | ||
18 | - flash[:notice] = _('Features updated successfully.') | ||
19 | - redirect_to :action => 'index' | 11 | + if @environment.update_attributes(params[:environment]) |
12 | + flash[:notice] = _('Features updated successfully.') | ||
13 | + redirect_to :action => 'index' | ||
14 | + else | ||
15 | + render :action => 'index' | ||
16 | + end | ||
20 | end | 17 | end |
21 | 18 | ||
22 | end | 19 | end |
app/helpers/features_helper.rb
1 | module FeaturesHelper | 1 | module FeaturesHelper |
2 | + def select_organization_approval_method(object, method) | ||
3 | + choices = [ | ||
4 | + [ _('Administrator must approve all new organizations'), 'admin'], | ||
5 | + [ _('Administrator assigns validator organizations per region.'), 'region'], | ||
6 | + ] | ||
7 | + value = instance_variable_get("@#{object}").send(method).to_s | ||
8 | + select_tag("#{object}[#{method}]", options_for_select(choices, value)) | ||
9 | + end | ||
2 | end | 10 | end |
app/views/features/_features_table.rhtml
1 | +<% labelled_form_for(:environment, @environment, :url => {:action => 'update'}) do |f| %> | ||
2 | + | ||
1 | <table> | 3 | <table> |
2 | - <% form_tag({:action => 'update'}) do %> | ||
3 | <% @features.each do |feature, text| %> | 4 | <% @features.each do |feature, text| %> |
4 | <tr> | 5 | <tr> |
5 | <td><%= text %></td> | 6 | <td><%= text %></td> |
6 | - <td><%= check_box_tag "features[#{feature}]", '1', @environment.enabled?(feature) %></td> | 7 | + <td><%= check_box_tag "environment[enabled_features][]", feature, @environment.enabled?(feature) %></td> |
7 | </tr> | 8 | </tr> |
8 | <% end %> | 9 | <% end %> |
9 | - <tr><td colspan='2'><%= submit_tag _('Save changes') %></td></tr> | ||
10 | - <% end %> | ||
11 | </table> | 10 | </table> |
11 | + | ||
12 | +<%= labelled_form_field(_('Organization Approval Method'), select_organization_approval_method('environment', 'organization_approval_method')) %> | ||
13 | + | ||
14 | +<div> | ||
15 | + <%= submit_tag _('Save changes') %> | ||
16 | +</div> | ||
17 | + | ||
18 | +<% end %> |
test/functional/features_controller_test.rb
@@ -19,13 +19,13 @@ class FeaturesControllerTest < Test::Unit::TestCase | @@ -19,13 +19,13 @@ class FeaturesControllerTest < Test::Unit::TestCase | ||
19 | get :index | 19 | get :index |
20 | assert_template 'index' | 20 | assert_template 'index' |
21 | Environment.available_features.each do |feature, text| | 21 | Environment.available_features.each do |feature, text| |
22 | - assert_tag(:tag => 'input', :attributes => { :type => 'checkbox', :name => "features[#{feature}]" }) | 22 | + assert_tag(:tag => 'input', :attributes => { :type => 'checkbox', :name => "environment[enabled_features][]", :value => feature}) |
23 | end | 23 | end |
24 | end | 24 | end |
25 | 25 | ||
26 | - def test_update | 26 | + def test_updates_enabled_features |
27 | uses_host 'anhetegua.net' | 27 | uses_host 'anhetegua.net' |
28 | - post :update, :features => { 'feature1' => '1', 'feature2' => '1' } | 28 | + post :update, :environment => { :enabled_features => [ 'feature1', 'feature2' ] } |
29 | assert_redirected_to :action => 'index' | 29 | assert_redirected_to :action => 'index' |
30 | assert_kind_of String, flash[:notice] | 30 | assert_kind_of String, flash[:notice] |
31 | v = Environment.find(environments(:anhetegua_net).id) | 31 | v = Environment.find(environments(:anhetegua_net).id) |
@@ -51,4 +51,24 @@ class FeaturesControllerTest < Test::Unit::TestCase | @@ -51,4 +51,24 @@ class FeaturesControllerTest < Test::Unit::TestCase | ||
51 | assert_redirected_to :action => 'index' | 51 | assert_redirected_to :action => 'index' |
52 | end | 52 | end |
53 | 53 | ||
54 | + def test_updates_organization_approval_method | ||
55 | + uses_host 'anhetegua.net' | ||
56 | + post :update, :environment => { :organization_approval_method => 'region' } | ||
57 | + assert_redirected_to :action => 'index' | ||
58 | + assert_kind_of String, flash[:notice] | ||
59 | + v = Environment.find(environments(:anhetegua_net).id) | ||
60 | + assert_equal :region, v.organization_approval_method | ||
61 | + end | ||
62 | + | ||
63 | + def test_should_mark_current_organization_approval_method_in_view | ||
64 | + uses_host 'anhetegua.net' | ||
65 | + Environment.find(environments(:anhetegua_net).id).update_attributes(:organization_approval_method => :region) | ||
66 | + | ||
67 | + post :index | ||
68 | + | ||
69 | + assert_tag :tag => 'select', :attributes => { :name => 'environment[organization_approval_method]' }, :descendant => { :tag => 'option', :attributes => { :value => 'region', :selected => true } } | ||
70 | + | ||
71 | + | ||
72 | + end | ||
73 | + | ||
54 | end | 74 | end |
test/integration/enable_disable_features_test.rb
@@ -9,9 +9,9 @@ class EnableDisableFeaturesTest < ActionController::IntegrationTest | @@ -9,9 +9,9 @@ class EnableDisableFeaturesTest < ActionController::IntegrationTest | ||
9 | 9 | ||
10 | get '/admin/features' | 10 | get '/admin/features' |
11 | assert_response :success | 11 | assert_response :success |
12 | - assert_tag :tag => 'input', :attributes => { :name => 'features[feature1]' } | ||
13 | - assert_tag :tag => 'input', :attributes => { :name => 'features[feature2]' } | ||
14 | - assert_tag :tag => 'input', :attributes => { :name => 'features[feature3]' } | 12 | + assert_tag :tag => 'input', :attributes => { :name => 'environment[enabled_features][]', :value => 'feature1' } |
13 | + assert_tag :tag => 'input', :attributes => { :name => 'environment[enabled_features][]', :value => 'feature2' } | ||
14 | + assert_tag :tag => 'input', :attributes => { :name => 'environment[enabled_features][]', :value => 'feature3' } | ||
15 | 15 | ||
16 | post '/admin/features/update' | 16 | post '/admin/features/update' |
17 | assert_response :redirect | 17 | assert_response :redirect |
@@ -20,7 +20,7 @@ class EnableDisableFeaturesTest < ActionController::IntegrationTest | @@ -20,7 +20,7 @@ class EnableDisableFeaturesTest < ActionController::IntegrationTest | ||
20 | assert_response :success | 20 | assert_response :success |
21 | assert_equal '/admin/features', path | 21 | assert_equal '/admin/features', path |
22 | 22 | ||
23 | - post '/admin/features/update', :features => { 'feature1' => '1' } | 23 | + post '/admin/features/update', :environments => { :enabled_features => [ 'feature1' ], :organization_approval_method => 'region' } |
24 | assert_response :redirect | 24 | assert_response :redirect |
25 | 25 | ||
26 | follow_redirect! | 26 | follow_redirect! |