Commit bfce4eb13212734b675c4fd07f23ecca6946cb3e
1 parent
ddc24ef4
Exists in
master
and in
29 other branches
[stoa] Fixing plugin routes
Showing
10 changed files
with
145 additions
and
145 deletions
Show diff stats
lib/noosfero/plugin/routes.rb
1 | Dir.glob(File.join(Rails.root, 'config', 'plugins', '*', 'controllers')) do |dir| | 1 | Dir.glob(File.join(Rails.root, 'config', 'plugins', '*', 'controllers')) do |dir| |
2 | plugin_name = File.basename(File.dirname(dir)) | 2 | plugin_name = File.basename(File.dirname(dir)) |
3 | - map.connect 'plugin/' + plugin_name + '/:action/:id', :controller => plugin_name + '_plugin_environment' | 3 | + map.connect 'plugin/' + plugin_name + '/:action/:id', :controller => plugin_name + '_plugin' |
4 | map.connect 'profile/:profile/plugins/' + plugin_name + '/:action/:id', :controller => plugin_name + '_plugin_profile' | 4 | map.connect 'profile/:profile/plugins/' + plugin_name + '/:action/:id', :controller => plugin_name + '_plugin_profile' |
5 | map.connect 'myprofile/:profile/plugin/' + plugin_name + '/:action/:id', :controller => plugin_name + '_plugin_myprofile' | 5 | map.connect 'myprofile/:profile/plugin/' + plugin_name + '/:action/:id', :controller => plugin_name + '_plugin_myprofile' |
6 | map.connect 'admin/plugin/' + plugin_name + '/:action/:id', :controller => plugin_name + '_plugin_admin' | 6 | map.connect 'admin/plugin/' + plugin_name + '/:action/:id', :controller => plugin_name + '_plugin_admin' |
@@ -0,0 +1,37 @@ | @@ -0,0 +1,37 @@ | ||
1 | +class BscPluginAdminController < AdminController | ||
2 | + | ||
3 | + include BscPlugin::BscHelper | ||
4 | + | ||
5 | + def new | ||
6 | + @bsc = BscPlugin::Bsc.new(params[:profile_data]) | ||
7 | + if request.post? && @bsc.valid? | ||
8 | + @bsc.user = current_user | ||
9 | + @bsc.save! | ||
10 | + @bsc.add_admin(user) | ||
11 | + session[:notice] = _('Your Bsc was created.') | ||
12 | + redirect_to :controller => 'profile_editor', :profile => @bsc.identifier | ||
13 | + end | ||
14 | + end | ||
15 | + | ||
16 | + def save_validations | ||
17 | + enterprises = [Enterprise.find(params[:q].split(','))].flatten | ||
18 | + | ||
19 | + begin | ||
20 | + enterprises.each { |enterprise| enterprise.validated = true ; enterprise.save! } | ||
21 | + session[:notice] = _('Enterprises validated.') | ||
22 | + redirect_to :controller => 'admin_panel' | ||
23 | + rescue Exception => ex | ||
24 | + session[:notice] = _('Enterprise validations couldn\'t be saved.') | ||
25 | + logger.info ex | ||
26 | + redirect_to :action => 'validate_enterprises' | ||
27 | + end | ||
28 | + end | ||
29 | + | ||
30 | + def search_enterprise | ||
31 | + render :text => Enterprise.not_validated.find(:all, :conditions => ["type <> 'BscPlugin::Bsc' AND (name LIKE ? OR identifier LIKE ?)", "%#{params[:q]}%", "%#{params[:q]}%"]). | ||
32 | + map {|enterprise| {:id => enterprise.id, :name => enterprise.name} }. | ||
33 | + to_json | ||
34 | + end | ||
35 | + | ||
36 | +end | ||
37 | + |
plugins/bsc/controllers/bsc_plugin_environment_controller.rb
@@ -1,37 +0,0 @@ | @@ -1,37 +0,0 @@ | ||
1 | -class BscPluginEnvironmentController < AdminController | ||
2 | - | ||
3 | - include BscPlugin::BscHelper | ||
4 | - | ||
5 | - def new | ||
6 | - @bsc = BscPlugin::Bsc.new(params[:profile_data]) | ||
7 | - if request.post? && @bsc.valid? | ||
8 | - @bsc.user = current_user | ||
9 | - @bsc.save! | ||
10 | - @bsc.add_admin(user) | ||
11 | - session[:notice] = _('Your Bsc was created.') | ||
12 | - redirect_to :controller => 'profile_editor', :profile => @bsc.identifier | ||
13 | - end | ||
14 | - end | ||
15 | - | ||
16 | - def save_validations | ||
17 | - enterprises = [Enterprise.find(params[:q].split(','))].flatten | ||
18 | - | ||
19 | - begin | ||
20 | - enterprises.each { |enterprise| enterprise.validated = true ; enterprise.save! } | ||
21 | - session[:notice] = _('Enterprises validated.') | ||
22 | - redirect_to :controller => 'admin_panel' | ||
23 | - rescue Exception => ex | ||
24 | - session[:notice] = _('Enterprise validations couldn\'t be saved.') | ||
25 | - logger.info ex | ||
26 | - redirect_to :action => 'validate_enterprises' | ||
27 | - end | ||
28 | - end | ||
29 | - | ||
30 | - def search_enterprise | ||
31 | - render :text => Enterprise.not_validated.find(:all, :conditions => ["type <> 'BscPlugin::Bsc' AND (name LIKE ? OR identifier LIKE ?)", "%#{params[:q]}%", "%#{params[:q]}%"]). | ||
32 | - map {|enterprise| {:id => enterprise.id, :name => enterprise.name} }. | ||
33 | - to_json | ||
34 | - end | ||
35 | - | ||
36 | -end | ||
37 | - |
plugins/bsc/lib/bsc_plugin.rb
@@ -14,8 +14,8 @@ class BscPlugin < Noosfero::Plugin | @@ -14,8 +14,8 @@ class BscPlugin < Noosfero::Plugin | ||
14 | end | 14 | end |
15 | 15 | ||
16 | def admin_panel_links | 16 | def admin_panel_links |
17 | - [{:title => _('Create Bsc'), :url => {:controller => 'bsc_plugin_environment', :action => 'new'}}, | ||
18 | - {:title => _('Validate Enterprises'), :url => {:controller => 'bsc_plugin_environment', :action => 'validate_enterprises'}} ] | 17 | + [{:title => _('Create Bsc'), :url => {:controller => 'bsc_plugin_admin', :action => 'new'}}, |
18 | + {:title => _('Validate Enterprises'), :url => {:controller => 'bsc_plugin_admin', :action => 'validate_enterprises'}} ] | ||
19 | end | 19 | end |
20 | 20 | ||
21 | def control_panel_buttons | 21 | def control_panel_buttons |
plugins/bsc/test/functional/bsc_plugin_admin_controller_test.rb
0 → 100644
@@ -0,0 +1,82 @@ | @@ -0,0 +1,82 @@ | ||
1 | +require File.dirname(__FILE__) + '/../../../../test/test_helper' | ||
2 | +require File.dirname(__FILE__) + '/../../controllers/bsc_plugin_admin_controller' | ||
3 | +require File.dirname(__FILE__) + '/../../../../app/models/uploaded_file' | ||
4 | + | ||
5 | +# Re-raise errors caught by the controller. | ||
6 | +class BscPluginAdminController; def rescue_action(e) raise e end; end | ||
7 | + | ||
8 | +class BscPluginAdminControllerTest < ActionController::TestCase | ||
9 | + | ||
10 | + VALID_CNPJ = '94.132.024/0001-48' | ||
11 | + | ||
12 | + def setup | ||
13 | + @controller = BscPluginAdminController.new | ||
14 | + @request = ActionController::TestRequest.new | ||
15 | + @response = ActionController::TestResponse.new | ||
16 | + user_login = create_admin_user(Environment.default) | ||
17 | + login_as(user_login) | ||
18 | + @admin = User[user_login].person | ||
19 | + e = Environment.default | ||
20 | + e.enabled_plugins = ['BscPlugin'] | ||
21 | + e.save! | ||
22 | + end | ||
23 | + | ||
24 | + attr_accessor :admin | ||
25 | + | ||
26 | + should 'create a new bsc' do | ||
27 | + assert_difference BscPlugin::Bsc, :count, 1 do | ||
28 | + post :new, :profile_data => {:business_name => 'Sample Bsc', :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => VALID_CNPJ} | ||
29 | + end | ||
30 | + | ||
31 | + assert_redirected_to :controller => 'profile_editor', :profile => 'sample-bsc' | ||
32 | + end | ||
33 | + | ||
34 | + should 'not create an invalid bsc' do | ||
35 | + assert_difference BscPlugin::Bsc, :count, 0 do | ||
36 | + post :new, :profile_data => {:business_name => 'Sample Bsc', :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => '29837492304'} | ||
37 | + end | ||
38 | + | ||
39 | + assert_response 200 | ||
40 | + end | ||
41 | + | ||
42 | + should 'set the current user as the bsc admin' do | ||
43 | + name = 'Sample Bsc' | ||
44 | + post :new, :profile_data => {:business_name => name, :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => VALID_CNPJ} | ||
45 | + bsc = BscPlugin::Bsc.find_by_name(name) | ||
46 | + assert_includes bsc.admins, admin | ||
47 | + end | ||
48 | + | ||
49 | + should 'list correct enterprises on search' do | ||
50 | + # Should list if: not validated AND (name matches OR identifier matches) AND not bsc | ||
51 | + e1 = Enterprise.create!(:name => 'Sample Enterprise 1', :identifier => 'bli', :validated => false) | ||
52 | + e2 = Enterprise.create!(:name => 'Bla', :identifier => 'sample-enterprise-6', :validated => false) | ||
53 | + e3 = Enterprise.create!(:name => 'Blo', :identifier => 'blo', :validated => false) | ||
54 | + e4 = BscPlugin::Bsc.create!(:business_name => "Sample Bsc", :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => VALID_CNPJ, :validated => false) | ||
55 | + e5 = Enterprise.create!(:name => 'Sample Enterprise 5', :identifier => 'sample-enterprise-5') | ||
56 | + e5.validated = true | ||
57 | + e5.save! | ||
58 | + | ||
59 | + get :search_enterprise, :q => 'sampl' | ||
60 | + | ||
61 | + assert_match /#{e1.name}/, @response.body | ||
62 | + assert_match /#{e2.name}/, @response.body | ||
63 | + assert_no_match /#{e3.name}/, @response.body | ||
64 | + assert_no_match /#{e4.name}/, @response.body | ||
65 | + assert_no_match /#{e5.name}/, @response.body | ||
66 | + end | ||
67 | + | ||
68 | + should 'save validations' do | ||
69 | + e1 = fast_create(Enterprise, :validated => false) | ||
70 | + e2 = fast_create(Enterprise, :validated => false) | ||
71 | + e3 = fast_create(Enterprise, :validated => false) | ||
72 | + | ||
73 | + post :save_validations, :q => "#{e1.id},#{e2.id}" | ||
74 | + e1.reload | ||
75 | + e2.reload | ||
76 | + e3.reload | ||
77 | + | ||
78 | + assert e1.validated | ||
79 | + assert e2.validated | ||
80 | + assert !e3.validated | ||
81 | + end | ||
82 | +end |
plugins/bsc/test/functional/bsc_plugin_environment_controller_test.rb
@@ -1,82 +0,0 @@ | @@ -1,82 +0,0 @@ | ||
1 | -require File.dirname(__FILE__) + '/../../../../test/test_helper' | ||
2 | -require File.dirname(__FILE__) + '/../../controllers/bsc_plugin_environment_controller' | ||
3 | -require File.dirname(__FILE__) + '/../../../../app/models/uploaded_file' | ||
4 | - | ||
5 | -# Re-raise errors caught by the controller. | ||
6 | -class BscPluginEnvironmentController; def rescue_action(e) raise e end; end | ||
7 | - | ||
8 | -class BscPluginEnvironmentControllerTest < ActionController::TestCase | ||
9 | - | ||
10 | - VALID_CNPJ = '94.132.024/0001-48' | ||
11 | - | ||
12 | - def setup | ||
13 | - @controller = BscPluginEnvironmentController.new | ||
14 | - @request = ActionController::TestRequest.new | ||
15 | - @response = ActionController::TestResponse.new | ||
16 | - user_login = create_admin_user(Environment.default) | ||
17 | - login_as(user_login) | ||
18 | - @admin = User[user_login].person | ||
19 | - e = Environment.default | ||
20 | - e.enabled_plugins = ['BscPlugin'] | ||
21 | - e.save! | ||
22 | - end | ||
23 | - | ||
24 | - attr_accessor :admin | ||
25 | - | ||
26 | - should 'create a new bsc' do | ||
27 | - assert_difference BscPlugin::Bsc, :count, 1 do | ||
28 | - post :new, :profile_data => {:business_name => 'Sample Bsc', :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => VALID_CNPJ} | ||
29 | - end | ||
30 | - | ||
31 | - assert_redirected_to :controller => 'profile_editor', :profile => 'sample-bsc' | ||
32 | - end | ||
33 | - | ||
34 | - should 'not create an invalid bsc' do | ||
35 | - assert_difference BscPlugin::Bsc, :count, 0 do | ||
36 | - post :new, :profile_data => {:business_name => 'Sample Bsc', :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => '29837492304'} | ||
37 | - end | ||
38 | - | ||
39 | - assert_response 200 | ||
40 | - end | ||
41 | - | ||
42 | - should 'set the current user as the bsc admin' do | ||
43 | - name = 'Sample Bsc' | ||
44 | - post :new, :profile_data => {:business_name => name, :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => VALID_CNPJ} | ||
45 | - bsc = BscPlugin::Bsc.find_by_name(name) | ||
46 | - assert_includes bsc.admins, admin | ||
47 | - end | ||
48 | - | ||
49 | - should 'list correct enterprises on search' do | ||
50 | - # Should list if: not validated AND (name matches OR identifier matches) AND not bsc | ||
51 | - e1 = Enterprise.create!(:name => 'Sample Enterprise 1', :identifier => 'bli', :validated => false) | ||
52 | - e2 = Enterprise.create!(:name => 'Bla', :identifier => 'sample-enterprise-6', :validated => false) | ||
53 | - e3 = Enterprise.create!(:name => 'Blo', :identifier => 'blo', :validated => false) | ||
54 | - e4 = BscPlugin::Bsc.create!(:business_name => "Sample Bsc", :identifier => 'sample-bsc', :company_name => 'Sample Bsc Ltda.', :cnpj => VALID_CNPJ, :validated => false) | ||
55 | - e5 = Enterprise.create!(:name => 'Sample Enterprise 5', :identifier => 'sample-enterprise-5') | ||
56 | - e5.validated = true | ||
57 | - e5.save! | ||
58 | - | ||
59 | - get :search_enterprise, :q => 'sampl' | ||
60 | - | ||
61 | - assert_match /#{e1.name}/, @response.body | ||
62 | - assert_match /#{e2.name}/, @response.body | ||
63 | - assert_no_match /#{e3.name}/, @response.body | ||
64 | - assert_no_match /#{e4.name}/, @response.body | ||
65 | - assert_no_match /#{e5.name}/, @response.body | ||
66 | - end | ||
67 | - | ||
68 | - should 'save validations' do | ||
69 | - e1 = fast_create(Enterprise, :validated => false) | ||
70 | - e2 = fast_create(Enterprise, :validated => false) | ||
71 | - e3 = fast_create(Enterprise, :validated => false) | ||
72 | - | ||
73 | - post :save_validations, :q => "#{e1.id},#{e2.id}" | ||
74 | - e1.reload | ||
75 | - e2.reload | ||
76 | - e3.reload | ||
77 | - | ||
78 | - assert e1.validated | ||
79 | - assert e2.validated | ||
80 | - assert !e3.validated | ||
81 | - end | ||
82 | -end |
@@ -0,0 +1,11 @@ | @@ -0,0 +1,11 @@ | ||
1 | +<%= error_messages_for :bsc %> | ||
2 | +<h1><%= _('BSC registration') %></h1> | ||
3 | + | ||
4 | +<% labelled_form_for :profile_data, @bsc do |f| %> | ||
5 | + <%= render :partial => 'shared/fields', :locals => {:f => f, :profile => @bsc} %> | ||
6 | + | ||
7 | + <% button_bar do %> | ||
8 | + <%= submit_button('save', _('Save')) %> | ||
9 | + <%= button('cancel', _('Cancel'), {:controller => 'admin_panel'}) %> | ||
10 | + <% end %> | ||
11 | +<% end %> |
plugins/bsc/views/bsc_plugin_admin/validate_enterprises.html.erb
0 → 100644
@@ -0,0 +1,12 @@ | @@ -0,0 +1,12 @@ | ||
1 | +<h1><%= _('Validate enterprises') %></h1> | ||
2 | + | ||
3 | +<% form_tag :action => 'save_validations' do %> | ||
4 | + <%= token_input_field_tag(:q, 'search-enterprises', {:action => 'search_enterprise'}, | ||
5 | + { :hint_text => _('Type in a search term for enterprise'), | ||
6 | + :focus => true }) %> | ||
7 | + | ||
8 | + <% button_bar do %> | ||
9 | + <%= submit_button('save', _('Save'))%> | ||
10 | + <%= button('cancel', _('Cancel'), {:controller => 'admin_panel'})%> | ||
11 | + <% end %> | ||
12 | +<% end %> |
plugins/bsc/views/bsc_plugin_environment/new.html.erb
@@ -1,11 +0,0 @@ | @@ -1,11 +0,0 @@ | ||
1 | -<%= error_messages_for :bsc %> | ||
2 | -<h1><%= _('BSC registration') %></h1> | ||
3 | - | ||
4 | -<% labelled_form_for :profile_data, @bsc do |f| %> | ||
5 | - <%= render :partial => 'shared/fields', :locals => {:f => f, :profile => @bsc} %> | ||
6 | - | ||
7 | - <% button_bar do %> | ||
8 | - <%= submit_button('save', _('Save')) %> | ||
9 | - <%= button('cancel', _('Cancel'), {:controller => 'admin_panel'}) %> | ||
10 | - <% end %> | ||
11 | -<% end %> |
plugins/bsc/views/bsc_plugin_environment/validate_enterprises.html.erb
@@ -1,12 +0,0 @@ | @@ -1,12 +0,0 @@ | ||
1 | -<h1><%= _('Validate enterprises') %></h1> | ||
2 | - | ||
3 | -<% form_tag :action => 'save_validations' do %> | ||
4 | - <%= token_input_field_tag(:q, 'search-enterprises', {:action => 'search_enterprise'}, | ||
5 | - { :hint_text => _('Type in a search term for enterprise'), | ||
6 | - :focus => true }) %> | ||
7 | - | ||
8 | - <% button_bar do %> | ||
9 | - <%= submit_button('save', _('Save'))%> | ||
10 | - <%= button('cancel', _('Cancel'), {:controller => 'admin_panel'})%> | ||
11 | - <% end %> | ||
12 | -<% end %> |